From 02d7e4f568282bfbe5e8d37edd89624daa13590b Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Wed, 3 Apr 2024 22:16:36 +0200 Subject: [PATCH 001/219] chore: remove some k8s e2e test versions (#3495) * chore: bump k8s versions Signed-off-by: Zach Aller * chore: remove a few old e2e k8s versions Signed-off-by: Zach Aller --------- Signed-off-by: Zach Aller --- .github/workflows/e2e.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 36e4a26aa4..bfbb4fb262 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -38,8 +38,6 @@ jobs: fail-fast: false matrix: kubernetes-minor-version: - - 1.24 - - 1.25 - 1.26 - 1.27 - 1.28 From c4a7583199d978e58fcec57e0a297e7e1bfc2e6b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 Apr 2024 18:53:48 +0000 Subject: [PATCH 002/219] docs: Update Changelog (#3507) * update changelog * Update CHANGELOG.md --------- Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com> Co-authored-by: Zach Aller --- CHANGELOG.md | 415 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 347 insertions(+), 68 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c92e20fed3..48a46a8bad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,284 @@ + +## [v1.7.0-rc1](https://github.com/argoproj/argo-rollouts/compare/v1.6.6...v1.7.0-rc1) (2024-04-03) + +### Build + +* **deps:** always resolve momentjs version 2.29.4 ([#3182](https://github.com/argoproj/argo-rollouts/issues/3182)) + +### Chore + +* fix PodSecurity warning ([#3424](https://github.com/argoproj/argo-rollouts/issues/3424)) +* add WeLab Bank to users.md ([#2996](https://github.com/argoproj/argo-rollouts/issues/2996)) +* change file name for readthedocs compatibility ([#2999](https://github.com/argoproj/argo-rollouts/issues/2999)) +* Update users doc with CircleCI ([#3028](https://github.com/argoproj/argo-rollouts/issues/3028)) +* bump k8s versions to 1.29 ([#3494](https://github.com/argoproj/argo-rollouts/issues/3494)) +* updating getCanaryConfigId to be more efficient with better error handling ([#3070](https://github.com/argoproj/argo-rollouts/issues/3070)) +* add missing rollout fields ([#3062](https://github.com/argoproj/argo-rollouts/issues/3062)) +* upgrade cosign ([#3139](https://github.com/argoproj/argo-rollouts/issues/3139)) +* add OpenSSF Scorecard badge ([#3154](https://github.com/argoproj/argo-rollouts/issues/3154)) +* add test for reconcileEphemeralMetadata() ([#3163](https://github.com/argoproj/argo-rollouts/issues/3163)) +* leave the validation of setHeaderRoute to the plugin when plugins is not empty. ([#2898](https://github.com/argoproj/argo-rollouts/issues/2898)) +* fix lint errors reported by golangci-lint ([#3458](https://github.com/argoproj/argo-rollouts/issues/3458)) +* fix unit test data races ([#3478](https://github.com/argoproj/argo-rollouts/issues/3478)) ([#3479](https://github.com/argoproj/argo-rollouts/issues/3479)) +* added organization to users.md ([#3481](https://github.com/argoproj/argo-rollouts/issues/3481)) +* set webpack hashFunction to modern sha256, remove legacy-provider. Fixes [#2609](https://github.com/argoproj/argo-rollouts/issues/2609) ([#3475](https://github.com/argoproj/argo-rollouts/issues/3475)) +* remove year from codegen license ([#3282](https://github.com/argoproj/argo-rollouts/issues/3282)) +* update follow-redirects to 1.15.5 ([#3314](https://github.com/argoproj/argo-rollouts/issues/3314)) +* add logging context around replicaset updates ([#3326](https://github.com/argoproj/argo-rollouts/issues/3326)) +* bump notification engine lib ([#3327](https://github.com/argoproj/argo-rollouts/issues/3327)) +* change controller's deploy strategy to RollingUpdate due to leader election ([#3334](https://github.com/argoproj/argo-rollouts/issues/3334)) +* Add exception to `requireCanaryStableServices` to disable validation when using the `hashicorp/consul` plugin ([#3339](https://github.com/argoproj/argo-rollouts/issues/3339)) +* Update notifications engine to 7a06976 ([#3384](https://github.com/argoproj/argo-rollouts/issues/3384)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.30.4 to 1.30.5 ([#3491](https://github.com/argoproj/argo-rollouts/issues/3491)) +* **deps:** bump golang.org/x/oauth2 from 0.17.0 to 0.18.0 ([#3422](https://github.com/argoproj/argo-rollouts/issues/3422)) +* **deps:** bump softprops/action-gh-release from 2.0.3 to 2.0.4 ([#3442](https://github.com/argoproj/argo-rollouts/issues/3442)) +* **deps:** bump softprops/action-gh-release from 2.0.2 to 2.0.3 ([#3440](https://github.com/argoproj/argo-rollouts/issues/3440)) +* **deps:** bump softprops/action-gh-release from 1 to 2 ([#3438](https://github.com/argoproj/argo-rollouts/issues/3438)) +* **deps:** bump docker/build-push-action from 5.1.0 to 5.2.0 ([#3439](https://github.com/argoproj/argo-rollouts/issues/3439)) +* **deps:** bump docker/setup-buildx-action from 3.1.0 to 3.2.0 ([#3449](https://github.com/argoproj/argo-rollouts/issues/3449)) +* **deps:** bump google.golang.org/grpc from 1.62.0 to 1.62.1 ([#3426](https://github.com/argoproj/argo-rollouts/issues/3426)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.4 to 1.27.5 ([#3421](https://github.com/argoproj/argo-rollouts/issues/3421)) +* **deps:** bump github.com/stretchr/testify from 1.8.4 to 1.9.0 ([#3419](https://github.com/argoproj/argo-rollouts/issues/3419)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.0 to 1.27.4 ([#3410](https://github.com/argoproj/argo-rollouts/issues/3410)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.27.0 to 1.30.1 ([#3399](https://github.com/argoproj/argo-rollouts/issues/3399)) +* **deps:** bump google.golang.org/grpc from 1.61.0 to 1.62.0 ([#3404](https://github.com/argoproj/argo-rollouts/issues/3404)) +* **deps:** bump docker/setup-buildx-action from 3.0.0 to 3.1.0 ([#3406](https://github.com/argoproj/argo-rollouts/issues/3406)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.33.0 to 1.36.1 ([#3400](https://github.com/argoproj/argo-rollouts/issues/3400)) +* **deps:** bump codecov/codecov-action from 4.0.1 to 4.1.0 ([#3403](https://github.com/argoproj/argo-rollouts/issues/3403)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.30.1 to 1.30.3 ([#3447](https://github.com/argoproj/argo-rollouts/issues/3447)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.6 to 1.27.0 ([#3368](https://github.com/argoproj/argo-rollouts/issues/3368)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.32.2 to 1.33.0 ([#3363](https://github.com/argoproj/argo-rollouts/issues/3363)) +* **deps:** bump docker/login-action from 3.0.0 to 3.1.0 ([#3443](https://github.com/argoproj/argo-rollouts/issues/3443)) +* **deps:** bump golang.org/x/oauth2 from 0.16.0 to 0.17.0 ([#3357](https://github.com/argoproj/argo-rollouts/issues/3357)) +* **deps:** bump golangci/golangci-lint-action from 3 to 4 ([#3359](https://github.com/argoproj/argo-rollouts/issues/3359)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.7 to 1.27.0 ([#3341](https://github.com/argoproj/argo-rollouts/issues/3341)) +* **deps:** bump peter-evans/create-pull-request from 5 to 6 ([#3342](https://github.com/argoproj/argo-rollouts/issues/3342)) +* **deps:** bump sigstore/cosign-installer from 3.3.0 to 3.4.0 ([#3343](https://github.com/argoproj/argo-rollouts/issues/3343)) +* **deps:** bump codecov/codecov-action from 3.1.5 to 4.0.1 ([#3347](https://github.com/argoproj/argo-rollouts/issues/3347)) +* **deps:** bump github.com/evanphx/json-patch/v5 from 5.8.1 to 5.9.0 ([#3335](https://github.com/argoproj/argo-rollouts/issues/3335)) +* **deps:** bump docker/build-push-action from 5.2.0 to 5.3.0 ([#3448](https://github.com/argoproj/argo-rollouts/issues/3448)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.5 to 1.26.6 ([#3322](https://github.com/argoproj/argo-rollouts/issues/3322)) +* **deps:** bump github.com/evanphx/json-patch/v5 from 5.8.0 to 5.8.1 ([#3312](https://github.com/argoproj/argo-rollouts/issues/3312)) +* **deps:** bump codecov/codecov-action from 3.1.4 to 3.1.5 ([#3330](https://github.com/argoproj/argo-rollouts/issues/3330)) +* **deps:** bump slsa-framework/slsa-github-generator from 1.9.0 to 1.9.1 ([#3456](https://github.com/argoproj/argo-rollouts/issues/3456)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.36.1 to 1.36.3 ([#3452](https://github.com/argoproj/argo-rollouts/issues/3452)) +* **deps:** bump google.golang.org/grpc from 1.60.1 to 1.61.0 ([#3325](https://github.com/argoproj/argo-rollouts/issues/3325)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.4 to 1.26.5 ([#3319](https://github.com/argoproj/argo-rollouts/issues/3319)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.3 to 1.26.4 ([#3313](https://github.com/argoproj/argo-rollouts/issues/3313)) +* **deps:** bump actions/cache from 3 to 4 ([#3315](https://github.com/argoproj/argo-rollouts/issues/3315)) +* **deps:** bump slsa-framework/slsa-github-generator from 1.9.1 to 1.10.0 ([#3462](https://github.com/argoproj/argo-rollouts/issues/3462)) +* **deps:** bump github.com/evanphx/json-patch/v5 from 5.7.0 to 5.8.0 ([#3309](https://github.com/argoproj/argo-rollouts/issues/3309)) +* **deps:** bump golang.org/x/oauth2 from 0.15.0 to 0.16.0 ([#3294](https://github.com/argoproj/argo-rollouts/issues/3294)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.32.1 to 1.32.2 ([#3288](https://github.com/argoproj/argo-rollouts/issues/3288)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.2 to 1.26.3 ([#3289](https://github.com/argoproj/argo-rollouts/issues/3289)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.6 to 1.26.7 ([#3290](https://github.com/argoproj/argo-rollouts/issues/3290)) +* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.24.0 to 1.24.1 ([#3291](https://github.com/argoproj/argo-rollouts/issues/3291)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.30.3 to 1.30.4 ([#3461](https://github.com/argoproj/argo-rollouts/issues/3461)) +* **deps:** bump google.golang.org/protobuf from 1.31.0 to 1.32.0 ([#3273](https://github.com/argoproj/argo-rollouts/issues/3273)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.1 to 1.26.2 ([#3268](https://github.com/argoproj/argo-rollouts/issues/3268)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.5 to 1.26.6 ([#3269](https://github.com/argoproj/argo-rollouts/issues/3269)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.32.0 to 1.32.1 ([#3270](https://github.com/argoproj/argo-rollouts/issues/3270)) +* **deps:** bump google.golang.org/grpc from 1.60.0 to 1.60.1 ([#3260](https://github.com/argoproj/argo-rollouts/issues/3260)) +* **deps:** bump github/codeql-action from 2 to 3 ([#3252](https://github.com/argoproj/argo-rollouts/issues/3252)) +* **deps:** bump actions/upload-artifact from 3 to 4 ([#3255](https://github.com/argoproj/argo-rollouts/issues/3255)) +* **deps:** bump sigstore/cosign-installer from 3.2.0 to 3.3.0 ([#3245](https://github.com/argoproj/argo-rollouts/issues/3245)) +* **deps:** bump google.golang.org/grpc from 1.59.0 to 1.60.0 ([#3246](https://github.com/argoproj/argo-rollouts/issues/3246)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.0 to 1.26.1 ([#3241](https://github.com/argoproj/argo-rollouts/issues/3241)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.4 to 1.26.5 ([#3240](https://github.com/argoproj/argo-rollouts/issues/3240)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.31.4 to 1.32.0 ([#3239](https://github.com/argoproj/argo-rollouts/issues/3239)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.25.12 to 1.26.0 ([#3236](https://github.com/argoproj/argo-rollouts/issues/3236)) +* **deps:** bump codecov/codecov-action from 4.1.0 to 4.1.1 ([#3476](https://github.com/argoproj/argo-rollouts/issues/3476)) +* **deps:** bump github.com/influxdata/influxdb-client-go/v2 from 2.12.4 to 2.13.0 ([#3217](https://github.com/argoproj/argo-rollouts/issues/3217)) +* **deps:** bump actions/stale from 8 to 9 ([#3232](https://github.com/argoproj/argo-rollouts/issues/3232)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.31.3 to 1.31.4 ([#3235](https://github.com/argoproj/argo-rollouts/issues/3235)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.3 to 1.26.4 ([#3234](https://github.com/argoproj/argo-rollouts/issues/3234)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.25.11 to 1.25.12 ([#3230](https://github.com/argoproj/argo-rollouts/issues/3230)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.31.2 to 1.31.3 ([#3226](https://github.com/argoproj/argo-rollouts/issues/3226)) +* **deps:** bump actions/setup-python from 4 to 5 ([#3227](https://github.com/argoproj/argo-rollouts/issues/3227)) +* **deps:** bump actions/setup-go from 4.1.0 to 5.0.0 ([#3228](https://github.com/argoproj/argo-rollouts/issues/3228)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.2 to 1.26.3 ([#3229](https://github.com/argoproj/argo-rollouts/issues/3229)) +* **deps:** Bump k8s dependencies to v1.26.11 ([#3211](https://github.com/argoproj/argo-rollouts/issues/3211)) +* **deps:** bump argo-ui and fix browser console errors ([#3212](https://github.com/argoproj/argo-rollouts/issues/3212)) +* **deps:** bump docker/build-push-action from 5.0.0 to 5.1.0 ([#3178](https://github.com/argoproj/argo-rollouts/issues/3178)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.25.10 to 1.25.11 ([#3206](https://github.com/argoproj/argo-rollouts/issues/3206)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.1 to 1.26.2 ([#3207](https://github.com/argoproj/argo-rollouts/issues/3207)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.31.1 to 1.31.2 ([#3208](https://github.com/argoproj/argo-rollouts/issues/3208)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.30.5 to 1.31.1 ([#3201](https://github.com/argoproj/argo-rollouts/issues/3201)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.25.2 to 1.26.1 ([#3203](https://github.com/argoproj/argo-rollouts/issues/3203)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.25.8 to 1.25.10 ([#3204](https://github.com/argoproj/argo-rollouts/issues/3204)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.25.5 to 1.25.8 ([#3191](https://github.com/argoproj/argo-rollouts/issues/3191)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.24.3 to 1.25.2 ([#3192](https://github.com/argoproj/argo-rollouts/issues/3192)) +* **deps:** bump golang.org/x/oauth2 from 0.13.0 to 0.15.0 ([#3187](https://github.com/argoproj/argo-rollouts/issues/3187)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.30.3 to 1.30.5 ([#3193](https://github.com/argoproj/argo-rollouts/issues/3193)) +* **deps:** bump github.com/antonmedv/expr from 1.15.4 to 1.15.5 ([#3186](https://github.com/argoproj/argo-rollouts/issues/3186)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.30.1 to 1.30.3 ([#3179](https://github.com/argoproj/argo-rollouts/issues/3179)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.24.0 to 1.24.3 ([#3180](https://github.com/argoproj/argo-rollouts/issues/3180)) +* **deps:** bump github.com/influxdata/influxdb-client-go/v2 from 2.12.3 to 2.12.4 ([#3150](https://github.com/argoproj/argo-rollouts/issues/3150)) +* **deps:** bump github.com/antonmedv/expr from 1.15.3 to 1.15.4 ([#3184](https://github.com/argoproj/argo-rollouts/issues/3184)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.23.0 to 1.25.5 ([#3183](https://github.com/argoproj/argo-rollouts/issues/3183)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.30.0 to 1.30.1 ([#3166](https://github.com/argoproj/argo-rollouts/issues/3166)) +* **deps:** bump github.com/hashicorp/go-plugin from 1.5.2 to 1.6.0 ([#3167](https://github.com/argoproj/argo-rollouts/issues/3167)) +* **deps:** update golang to 1.21 ([#3482](https://github.com/argoproj/argo-rollouts/issues/3482)) +* **deps:** bump github.com/bombsimon/logrusr/v4 from 4.0.0 to 4.1.0 ([#3151](https://github.com/argoproj/argo-rollouts/issues/3151)) +* **deps:** bump github.com/spf13/cobra from 1.7.0 to 1.8.0 ([#3152](https://github.com/argoproj/argo-rollouts/issues/3152)) +* **deps:** bump sigstore/cosign-installer from 3.1.2 to 3.2.0 ([#3158](https://github.com/argoproj/argo-rollouts/issues/3158)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.22.0 to 1.23.0 ([#3161](https://github.com/argoproj/argo-rollouts/issues/3161)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.5 to 1.27.9 ([#3469](https://github.com/argoproj/argo-rollouts/issues/3469)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.28.0 to 1.30.0 ([#3144](https://github.com/argoproj/argo-rollouts/issues/3144)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.22.0 to 1.24.0 ([#3143](https://github.com/argoproj/argo-rollouts/issues/3143)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.20.0 to 1.22.0 ([#3149](https://github.com/argoproj/argo-rollouts/issues/3149)) +* **deps:** bump google.golang.org/protobuf from 1.32.0 to 1.33.0 ([#3429](https://github.com/argoproj/argo-rollouts/issues/3429)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.19.1 to 1.20.0 ([#3135](https://github.com/argoproj/argo-rollouts/issues/3135)) +* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.21.2 to 1.22.0 ([#3136](https://github.com/argoproj/argo-rollouts/issues/3136)) +* **deps:** bump sigs.k8s.io/yaml from 1.3.0 to 1.4.0 ([#3122](https://github.com/argoproj/argo-rollouts/issues/3122)) +* **deps:** bump google.golang.org/grpc from 1.58.3 to 1.59.0 ([#3113](https://github.com/argoproj/argo-rollouts/issues/3113)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.21.6 to 1.22.0 ([#3127](https://github.com/argoproj/argo-rollouts/issues/3127)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.19.0 to 1.19.1 ([#3123](https://github.com/argoproj/argo-rollouts/issues/3123)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.9 to 1.28.0 ([#3124](https://github.com/argoproj/argo-rollouts/issues/3124)) +* **deps:** bump golang.org/x/oauth2 from 0.10.0 to 0.13.0 ([#3107](https://github.com/argoproj/argo-rollouts/issues/3107)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.45 to 1.19.0 ([#3109](https://github.com/argoproj/argo-rollouts/issues/3109)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.44 to 1.18.45 ([#3101](https://github.com/argoproj/argo-rollouts/issues/3101)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.21.4 to 1.21.6 ([#3100](https://github.com/argoproj/argo-rollouts/issues/3100)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.8 to 1.27.9 ([#3102](https://github.com/argoproj/argo-rollouts/issues/3102)) +* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.21.1 to 1.21.2 ([#3103](https://github.com/argoproj/argo-rollouts/issues/3103)) +* **deps:** bump github.com/aws/smithy-go from 1.20.1 to 1.20.2 ([#3488](https://github.com/argoproj/argo-rollouts/issues/3488)) +* **deps:** bump google.golang.org/grpc from 1.58.2 to 1.58.3 ([#3098](https://github.com/argoproj/argo-rollouts/issues/3098)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.43 to 1.18.44 ([#3099](https://github.com/argoproj/argo-rollouts/issues/3099)) +* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.21.0 to 1.21.1 ([#3085](https://github.com/argoproj/argo-rollouts/issues/3085)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.7 to 1.27.8 ([#3086](https://github.com/argoproj/argo-rollouts/issues/3086)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.42 to 1.18.43 ([#3072](https://github.com/argoproj/argo-rollouts/issues/3072)) +* **deps:** bump github.com/hashicorp/go-plugin from 1.5.1 to 1.5.2 ([#3056](https://github.com/argoproj/argo-rollouts/issues/3056)) +* **deps:** bump github.com/prometheus/common from 0.42.0 to 0.51.1 ([#3468](https://github.com/argoproj/argo-rollouts/issues/3468)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.41 to 1.18.42 ([#3055](https://github.com/argoproj/argo-rollouts/issues/3055)) +* **deps:** bump github.com/antonmedv/expr from 1.15.2 to 1.15.3 ([#3046](https://github.com/argoproj/argo-rollouts/issues/3046)) +* **deps:** bump docker/setup-qemu-action from 2.2.0 to 3.0.0 ([#3031](https://github.com/argoproj/argo-rollouts/issues/3031)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.39 to 1.18.41 ([#3047](https://github.com/argoproj/argo-rollouts/issues/3047)) +* **deps:** bump google.golang.org/grpc from 1.58.0 to 1.58.2 ([#3050](https://github.com/argoproj/argo-rollouts/issues/3050)) +* **deps:** bump google.golang.org/grpc from 1.57.0 to 1.58.0 ([#3023](https://github.com/argoproj/argo-rollouts/issues/3023)) +* **deps:** bump github.com/evanphx/json-patch/v5 from 5.6.0 to 5.7.0 ([#3030](https://github.com/argoproj/argo-rollouts/issues/3030)) +* **deps:** bump docker/metadata-action from 4 to 5 ([#3032](https://github.com/argoproj/argo-rollouts/issues/3032)) +* **deps:** bump docker/build-push-action from 4.1.1 to 5.0.0 ([#3033](https://github.com/argoproj/argo-rollouts/issues/3033)) +* **deps:** bump docker/setup-buildx-action from 2.10.0 to 3.0.0 ([#3034](https://github.com/argoproj/argo-rollouts/issues/3034)) +* **deps:** bump docker/login-action from 2.2.0 to 3.0.0 ([#3035](https://github.com/argoproj/argo-rollouts/issues/3035)) +* **deps:** bump github.com/antonmedv/expr from 1.15.1 to 1.15.2 ([#3036](https://github.com/argoproj/argo-rollouts/issues/3036)) +* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.26.0 to 1.26.1 ([#3490](https://github.com/argoproj/argo-rollouts/issues/3490)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.21.3 to 1.21.4 ([#3025](https://github.com/argoproj/argo-rollouts/issues/3025)) +* **deps:** bump github.com/hashicorp/go-plugin from 1.5.0 to 1.5.1 ([#3017](https://github.com/argoproj/argo-rollouts/issues/3017)) +* **deps:** bump github.com/antonmedv/expr from 1.13.0 to 1.15.1 ([#3024](https://github.com/argoproj/argo-rollouts/issues/3024)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.38 to 1.18.39 ([#3018](https://github.com/argoproj/argo-rollouts/issues/3018)) +* **deps:** bump actions/checkout from 3 to 4 ([#3012](https://github.com/argoproj/argo-rollouts/issues/3012)) +* **deps:** bump sigstore/cosign-installer from 3.1.1 to 3.1.2 ([#3011](https://github.com/argoproj/argo-rollouts/issues/3011)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.37 to 1.18.38 ([#3002](https://github.com/argoproj/argo-rollouts/issues/3002)) +* **deps:** bump github.com/hashicorp/go-plugin from 1.4.10 to 1.5.0 ([#2995](https://github.com/argoproj/argo-rollouts/issues/2995)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.36.3 to 1.37.0 ([#3489](https://github.com/argoproj/argo-rollouts/issues/3489)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.9 to 1.27.10 ([#3492](https://github.com/argoproj/argo-rollouts/issues/3492)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.6 to 1.27.7 ([#2990](https://github.com/argoproj/argo-rollouts/issues/2990)) +* **deps:** bump docker/setup-buildx-action from 2.9.1 to 2.10.0 ([#2994](https://github.com/argoproj/argo-rollouts/issues/2994)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.21.0 to 1.21.3 ([#2977](https://github.com/argoproj/argo-rollouts/issues/2977)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.36 to 1.18.37 ([#2984](https://github.com/argoproj/argo-rollouts/issues/2984)) +* **deps:** bump slsa-framework/slsa-github-generator from 1.8.0 to 1.9.0 ([#2983](https://github.com/argoproj/argo-rollouts/issues/2983)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.33 to 1.18.36 ([#2978](https://github.com/argoproj/argo-rollouts/issues/2978)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.2 to 1.27.6 ([#2979](https://github.com/argoproj/argo-rollouts/issues/2979)) + +### Docs + +* more best practices ([#3484](https://github.com/argoproj/argo-rollouts/issues/3484)) +* typo in BlueGreen ([#3463](https://github.com/argoproj/argo-rollouts/issues/3463)) +* minor readability on migration ([#3427](https://github.com/argoproj/argo-rollouts/issues/3427)) +* added Consul plugin support to website ([#3362](https://github.com/argoproj/argo-rollouts/issues/3362)) +* Update shell autocompletion instructions ([#3377](https://github.com/argoproj/argo-rollouts/issues/3377)) +* Update Changelog ([#3365](https://github.com/argoproj/argo-rollouts/issues/3365)) +* Guides for popular use-cases ([#3346](https://github.com/argoproj/argo-rollouts/issues/3346)) +* Update Changelog ([#3328](https://github.com/argoproj/argo-rollouts/issues/3328)) +* Fixed the key for headers in prometheus based argo analysis ([#3306](https://github.com/argoproj/argo-rollouts/issues/3306)) +* mention archival of the SMI spec ([#3263](https://github.com/argoproj/argo-rollouts/issues/3263)) +* Update Changelog ([#3244](https://github.com/argoproj/argo-rollouts/issues/3244)) +* Update Changelog ([#3214](https://github.com/argoproj/argo-rollouts/issues/3214)) +* Update Changelog ([#2952](https://github.com/argoproj/argo-rollouts/issues/2952)) +* fix typo in smi.md ([#3160](https://github.com/argoproj/argo-rollouts/issues/3160)) +* Update Changelog ([#3148](https://github.com/argoproj/argo-rollouts/issues/3148)) +* add Gateway-API integration information to README.md ([#2985](https://github.com/argoproj/argo-rollouts/issues/2985)) +* add CONTRIBUTING.md at root of repo, directing to docs/ ([#3121](https://github.com/argoproj/argo-rollouts/issues/3121)) +* Ensure image not present between incomplete sentence. ([#3079](https://github.com/argoproj/argo-rollouts/issues/3079)) +* clarify external clusters ([#3058](https://github.com/argoproj/argo-rollouts/issues/3058)) +* Update Changelog ([#3021](https://github.com/argoproj/argo-rollouts/issues/3021)) +* replace `patchesStrategicMerge` with `patches` in tests/docs ([#3010](https://github.com/argoproj/argo-rollouts/issues/3010)) +* update all ingress objects to networking.k8s.io/v1 ([#3005](https://github.com/argoproj/argo-rollouts/issues/3005)) +* Remove rogue apostrophe in features/analysis.md ([#3001](https://github.com/argoproj/argo-rollouts/issues/3001)) +* add contour integration information to README.md ([#2980](https://github.com/argoproj/argo-rollouts/issues/2980)) +* **analysis:** Add note about availability of new datadog v2 functionality ([#3131](https://github.com/argoproj/argo-rollouts/issues/3131)) +* **deps:** Specify minimum kustomize version ([#3199](https://github.com/argoproj/argo-rollouts/issues/3199)) + +### Feat + +* Reference AnalysisTemplates inside an AnalysisTemplate ([#3353](https://github.com/argoproj/argo-rollouts/issues/3353)) +* add command args for plugin ([#2992](https://github.com/argoproj/argo-rollouts/issues/2992)) +* expose secrets for notification templates ([#3455](https://github.com/argoproj/argo-rollouts/issues/3455)) ([#3466](https://github.com/argoproj/argo-rollouts/issues/3466)) +* ping pong support for istio ([#3371](https://github.com/argoproj/argo-rollouts/issues/3371)) +* display init container images on the rollout dashboard ([#3473](https://github.com/argoproj/argo-rollouts/issues/3473)) +* add Analysis run to rollout notifications ([#3296](https://github.com/argoproj/argo-rollouts/issues/3296)) +* add the max traffic weight support for the traffic routing (nginx/plugins). ([#3215](https://github.com/argoproj/argo-rollouts/issues/3215)) +* allow analysis run to use separate kubeconfig for jobs ([#3350](https://github.com/argoproj/argo-rollouts/issues/3350)) +* Support AnalysisRunMetadata and Dryrun for experiments via Rollout ([#3213](https://github.com/argoproj/argo-rollouts/issues/3213)) +* allow setting traefik versions ([#3348](https://github.com/argoproj/argo-rollouts/issues/3348)) +* support ability to run only the analysis controller ([#3336](https://github.com/argoproj/argo-rollouts/issues/3336)) +* Support OAuth2 for prometheus and web providers ([#3038](https://github.com/argoproj/argo-rollouts/issues/3038)) +* Add support for aggregator type in DataDog metric provider ([#3293](https://github.com/argoproj/argo-rollouts/issues/3293)) +* add analysis modal ([#3174](https://github.com/argoproj/argo-rollouts/issues/3174)) +* automatically scale down Deployment after migrating to Rollout ([#3111](https://github.com/argoproj/argo-rollouts/issues/3111)) +* Rollouts UI List View Refresh ([#3118](https://github.com/argoproj/argo-rollouts/issues/3118)) +* **analysis:** add ttlStrategy on AnalysisRun for garbage collecting stale AnalysisRun automatically ([#3324](https://github.com/argoproj/argo-rollouts/issues/3324)) +* **dashboard:** improve pods visibility ([#3483](https://github.com/argoproj/argo-rollouts/issues/3483)) +* **trafficrouting:** use values array for multiple accepted values under same header name ([#2974](https://github.com/argoproj/argo-rollouts/issues/2974)) + +### Fix + +* set formatter for klog logger ([#3493](https://github.com/argoproj/argo-rollouts/issues/3493)) +* fix the issue that when max weight is 100000000, and the replicas> 20, the trafficWeightToReplicas will return negative value. ([#3474](https://github.com/argoproj/argo-rollouts/issues/3474)) +* analysis step should be ignored after promote ([#3016](https://github.com/argoproj/argo-rollouts/issues/3016)) +* job metrics owner ref when using custom job kubeconfig/ns ([#3425](https://github.com/argoproj/argo-rollouts/issues/3425)) +* Add the GOPATH to the go-to-protobuf command ([#3022](https://github.com/argoproj/argo-rollouts/issues/3022)) +* prevent hot loop when fully promoted rollout is aborted ([#3064](https://github.com/argoproj/argo-rollouts/issues/3064)) +* include the correct response error in the plugin init error message ([#3388](https://github.com/argoproj/argo-rollouts/issues/3388)) +* append weighted destination only when weight is mentioned ([#2734](https://github.com/argoproj/argo-rollouts/issues/2734)) +* stuck rollout when 2nd deployment happens before 1st finishes ([#3354](https://github.com/argoproj/argo-rollouts/issues/3354)) +* do not require pod readiness when switching desired service selector on abort ([#3338](https://github.com/argoproj/argo-rollouts/issues/3338)) +* log rs name when update fails ([#3318](https://github.com/argoproj/argo-rollouts/issues/3318)) +* keep rs inormer updated upon updating labels and annotations ([#3321](https://github.com/argoproj/argo-rollouts/issues/3321)) +* updates to replicas and pod template at the same time causes rollout to get stuck ([#3272](https://github.com/argoproj/argo-rollouts/issues/3272)) +* canary step analysis run wasn't terminated as keep running after promote action being called. Fixes [#3220](https://github.com/argoproj/argo-rollouts/issues/3220) ([#3221](https://github.com/argoproj/argo-rollouts/issues/3221)) +* make sure we use the updated rs when we write back to informer ([#3237](https://github.com/argoproj/argo-rollouts/issues/3237)) +* conflict on updates to replicaset revision ([#3216](https://github.com/argoproj/argo-rollouts/issues/3216)) +* rollouts getting stuck due to bad rs informer updates ([#3200](https://github.com/argoproj/argo-rollouts/issues/3200)) +* missing notification on error ([#3076](https://github.com/argoproj/argo-rollouts/issues/3076)) +* istio destionationrule subsets enforcement ([#3126](https://github.com/argoproj/argo-rollouts/issues/3126)) +* docs require build.os to be defined ([#3133](https://github.com/argoproj/argo-rollouts/issues/3133)) +* rollback to stable with dynamicStableScale could overwhelm stable pods ([#3077](https://github.com/argoproj/argo-rollouts/issues/3077)) +* inopportune scaling events would lose some status fields ([#3060](https://github.com/argoproj/argo-rollouts/issues/3060)) +* codegen was missed ([#3104](https://github.com/argoproj/argo-rollouts/issues/3104)) +* keep rs informer updated ([#3091](https://github.com/argoproj/argo-rollouts/issues/3091)) +* bump notification-engine to fix double send on self server notifications ([#3095](https://github.com/argoproj/argo-rollouts/issues/3095)) +* revert repo change to expr ([#3094](https://github.com/argoproj/argo-rollouts/issues/3094)) +* Replace antonmedv/expr with expr-lang/expr ([#3090](https://github.com/argoproj/argo-rollouts/issues/3090)) +* Revert "fix: istio destionationrule subsets enforcement ([#3126](https://github.com/argoproj/argo-rollouts/issues/3126))" ([#3147](https://github.com/argoproj/argo-rollouts/issues/3147)) +* sync notification controller configmaps/secrets first ([#3075](https://github.com/argoproj/argo-rollouts/issues/3075)) +* **controller:** don't timeout rollout when still waiting for scale down delay ([#3417](https://github.com/argoproj/argo-rollouts/issues/3417)) +* **controller:** treat spec.canary.analysis.template empty list as spec.canary.analysis not set ([#3446](https://github.com/argoproj/argo-rollouts/issues/3446)) +* **controller:** prevent negative vsvc weights on a replica scaledown following a canary abort for istio trafficrouting ([#3467](https://github.com/argoproj/argo-rollouts/issues/3467)) +* **controller:** rollback should skip all steps to active rs within RollbackWindow ([#2953](https://github.com/argoproj/argo-rollouts/issues/2953)) +* **controller:** typo fix ("Secrete" -> "Secret") in secret informer ([#2965](https://github.com/argoproj/argo-rollouts/issues/2965)) +* **metricprovider:** support Datadog v2 API Fixes [#2813](https://github.com/argoproj/argo-rollouts/issues/2813) ([#2997](https://github.com/argoproj/argo-rollouts/issues/2997)) + +### Refactor + +* rename interface{} => any ([#3000](https://github.com/argoproj/argo-rollouts/issues/3000)) + +### Test + +* add unit tests for maxSurge=0, replicas=1 ([#3375](https://github.com/argoproj/argo-rollouts/issues/3375)) + + ## [v1.6.6](https://github.com/argoproj/argo-rollouts/compare/v1.6.5...v1.6.6) (2024-02-12) @@ -98,23 +378,21 @@ ### Chore -* bump gotestsum and fix flakey test causing nil channel send ([#2934](https://github.com/argoproj/argo-rollouts/issues/2934)) * quote golang version string to not use go 1.2.2 ([#2915](https://github.com/argoproj/argo-rollouts/issues/2915)) -* bump golang to 1.20 ([#2910](https://github.com/argoproj/argo-rollouts/issues/2910)) -* add make help cmd ([#2854](https://github.com/argoproj/argo-rollouts/issues/2854)) -* add unit test ([#2798](https://github.com/argoproj/argo-rollouts/issues/2798)) +* bump gotestsum and fix flakey test causing nil channel send ([#2934](https://github.com/argoproj/argo-rollouts/issues/2934)) * Update test and related docs for plugin name standard ([#2728](https://github.com/argoproj/argo-rollouts/issues/2728)) * bump k8s deps to v0.25.8 ([#2712](https://github.com/argoproj/argo-rollouts/issues/2712)) * add zachaller as lead in owers file ([#2759](https://github.com/argoproj/argo-rollouts/issues/2759)) +* add unit test ([#2798](https://github.com/argoproj/argo-rollouts/issues/2798)) +* add make help cmd ([#2854](https://github.com/argoproj/argo-rollouts/issues/2854)) * Add tests for pause functionality in rollout package ([#2772](https://github.com/argoproj/argo-rollouts/issues/2772)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.26.0 to 1.26.1 ([#2840](https://github.com/argoproj/argo-rollouts/issues/2840)) +* bump golang to 1.20 ([#2910](https://github.com/argoproj/argo-rollouts/issues/2910)) +* **deps:** bump actions/setup-go from 4.0.1 to 4.1.0 ([#2947](https://github.com/argoproj/argo-rollouts/issues/2947)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.30 to 1.18.31 ([#2924](https://github.com/argoproj/argo-rollouts/issues/2924)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.0 to 1.27.1 ([#2927](https://github.com/argoproj/argo-rollouts/issues/2927)) -* **deps:** bump docker/build-push-action from 4.0.0 to 4.1.0 ([#2832](https://github.com/argoproj/argo-rollouts/issues/2832)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.26.3 to 1.27.0 ([#2922](https://github.com/argoproj/argo-rollouts/issues/2922)) -* **deps:** bump github.com/sirupsen/logrus from 1.9.2 to 1.9.3 ([#2821](https://github.com/argoproj/argo-rollouts/issues/2821)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.29 to 1.18.30 ([#2919](https://github.com/argoproj/argo-rollouts/issues/2919)) * **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.19.0 to 1.19.1 ([#2920](https://github.com/argoproj/argo-rollouts/issues/2920)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.26.3 to 1.27.0 ([#2922](https://github.com/argoproj/argo-rollouts/issues/2922)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.31 to 1.18.32 ([#2928](https://github.com/argoproj/argo-rollouts/issues/2928)) * **deps:** bump google.golang.org/grpc from 1.56.2 to 1.57.0 ([#2908](https://github.com/argoproj/argo-rollouts/issues/2908)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.28 to 1.18.29 ([#2907](https://github.com/argoproj/argo-rollouts/issues/2907)) * **deps:** bump github.com/antonmedv/expr from 1.12.6 to 1.12.7 ([#2894](https://github.com/argoproj/argo-rollouts/issues/2894)) @@ -130,42 +408,44 @@ * **deps:** bump google.golang.org/grpc from 1.56.1 to 1.56.2 ([#2872](https://github.com/argoproj/argo-rollouts/issues/2872)) * **deps:** bump sigstore/cosign-installer from 3.1.0 to 3.1.1 ([#2860](https://github.com/argoproj/argo-rollouts/issues/2860)) * **deps:** bump google.golang.org/protobuf from 1.30.0 to 1.31.0 ([#2859](https://github.com/argoproj/argo-rollouts/issues/2859)) -* **deps:** bump sigstore/cosign-installer from 3.0.5 to 3.1.0 ([#2858](https://github.com/argoproj/argo-rollouts/issues/2858)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.0 to 1.27.1 ([#2927](https://github.com/argoproj/argo-rollouts/issues/2927)) * **deps:** bump google.golang.org/grpc from 1.55.0 to 1.56.1 ([#2856](https://github.com/argoproj/argo-rollouts/issues/2856)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.14 to 1.20.1 ([#2926](https://github.com/argoproj/argo-rollouts/issues/2926)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.12 to 1.19.13 ([#2847](https://github.com/argoproj/argo-rollouts/issues/2847)) * **deps:** bump actions/setup-go from 3.5.0 to 4.0.1 ([#2849](https://github.com/argoproj/argo-rollouts/issues/2849)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.26 to 1.18.27 ([#2844](https://github.com/argoproj/argo-rollouts/issues/2844)) * **deps:** bump github.com/prometheus/client_golang from 1.15.1 to 1.16.0 ([#2846](https://github.com/argoproj/argo-rollouts/issues/2846)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.26.1 to 1.26.2 ([#2848](https://github.com/argoproj/argo-rollouts/issues/2848)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.11 to 1.19.12 ([#2839](https://github.com/argoproj/argo-rollouts/issues/2839)) -* **deps:** bump slsa-framework/slsa-github-generator from 1.7.0 to 1.8.0 ([#2936](https://github.com/argoproj/argo-rollouts/issues/2936)) -* **deps:** bump docker/build-push-action from 4.1.0 to 4.1.1 ([#2837](https://github.com/argoproj/argo-rollouts/issues/2837)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.26.0 to 1.26.1 ([#2840](https://github.com/argoproj/argo-rollouts/issues/2840)) +* **deps:** bump sigstore/cosign-installer from 3.0.5 to 3.1.0 ([#2858](https://github.com/argoproj/argo-rollouts/issues/2858)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.25 to 1.18.26 ([#2841](https://github.com/argoproj/argo-rollouts/issues/2841)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.31 to 1.18.32 ([#2928](https://github.com/argoproj/argo-rollouts/issues/2928)) +* **deps:** bump docker/build-push-action from 4.0.0 to 4.1.0 ([#2832](https://github.com/argoproj/argo-rollouts/issues/2832)) +* **deps:** bump github.com/sirupsen/logrus from 1.9.2 to 1.9.3 ([#2821](https://github.com/argoproj/argo-rollouts/issues/2821)) * **deps:** bump github.com/hashicorp/go-plugin from 1.4.9 to 1.4.10 ([#2822](https://github.com/argoproj/argo-rollouts/issues/2822)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.14 to 1.20.1 ([#2926](https://github.com/argoproj/argo-rollouts/issues/2926)) * **deps:** bump github.com/stretchr/testify from 1.8.3 to 1.8.4 ([#2817](https://github.com/argoproj/argo-rollouts/issues/2817)) * **deps:** bump github.com/sirupsen/logrus from 1.9.1 to 1.9.2 ([#2789](https://github.com/argoproj/argo-rollouts/issues/2789)) * **deps:** bump github.com/stretchr/testify from 1.8.2 to 1.8.3 ([#2796](https://github.com/argoproj/argo-rollouts/issues/2796)) +* **deps:** bump slsa-framework/slsa-github-generator from 1.7.0 to 1.8.0 ([#2936](https://github.com/argoproj/argo-rollouts/issues/2936)) * **deps:** bump sigstore/cosign-installer from 3.0.3 to 3.0.5 ([#2788](https://github.com/argoproj/argo-rollouts/issues/2788)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.20.1 to 1.20.2 ([#2941](https://github.com/argoproj/argo-rollouts/issues/2941)) +* **deps:** bump docker/build-push-action from 4.1.0 to 4.1.1 ([#2837](https://github.com/argoproj/argo-rollouts/issues/2837)) * **deps:** bump github.com/sirupsen/logrus from 1.9.0 to 1.9.1 ([#2784](https://github.com/argoproj/argo-rollouts/issues/2784)) * **deps:** bump codecov/codecov-action from 3.1.3 to 3.1.4 ([#2782](https://github.com/argoproj/argo-rollouts/issues/2782)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.24 to 1.18.25 ([#2770](https://github.com/argoproj/argo-rollouts/issues/2770)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.23 to 1.18.24 ([#2768](https://github.com/argoproj/argo-rollouts/issues/2768)) * **deps:** bump google.golang.org/grpc from 1.54.0 to 1.55.0 ([#2763](https://github.com/argoproj/argo-rollouts/issues/2763)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.22 to 1.18.23 ([#2756](https://github.com/argoproj/argo-rollouts/issues/2756)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.1 to 1.27.2 ([#2944](https://github.com/argoproj/argo-rollouts/issues/2944)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.20.1 to 1.20.2 ([#2941](https://github.com/argoproj/argo-rollouts/issues/2941)) * **deps:** replace `github.com/ghodss/yaml` with `sigs.k8s.io/yaml` ([#2681](https://github.com/argoproj/argo-rollouts/issues/2681)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.10 to 1.26.0 ([#2755](https://github.com/argoproj/argo-rollouts/issues/2755)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.10 to 1.19.11 ([#2757](https://github.com/argoproj/argo-rollouts/issues/2757)) * **deps:** bump github.com/prometheus/client_golang from 1.15.0 to 1.15.1 ([#2754](https://github.com/argoproj/argo-rollouts/issues/2754)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.21 to 1.18.22 ([#2746](https://github.com/argoproj/argo-rollouts/issues/2746)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.9 to 1.25.10 ([#2745](https://github.com/argoproj/argo-rollouts/issues/2745)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.32 to 1.18.33 ([#2943](https://github.com/argoproj/argo-rollouts/issues/2943)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.1 to 1.27.2 ([#2944](https://github.com/argoproj/argo-rollouts/issues/2944)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.9 to 1.19.10 ([#2747](https://github.com/argoproj/argo-rollouts/issues/2747)) * **deps:** bump codecov/codecov-action from 3.1.2 to 3.1.3 ([#2735](https://github.com/argoproj/argo-rollouts/issues/2735)) -* **deps:** bump actions/setup-go from 4.0.1 to 4.1.0 ([#2947](https://github.com/argoproj/argo-rollouts/issues/2947)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.32 to 1.18.33 ([#2943](https://github.com/argoproj/argo-rollouts/issues/2943)) * **deps:** bump github.com/prometheus/client_golang from 1.14.0 to 1.15.0 ([#2721](https://github.com/argoproj/argo-rollouts/issues/2721)) * **deps:** bump codecov/codecov-action from 3.1.1 to 3.1.2 ([#2711](https://github.com/argoproj/argo-rollouts/issues/2711)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.20 to 1.18.21 ([#2709](https://github.com/argoproj/argo-rollouts/issues/2709)) @@ -186,38 +466,38 @@ ### Docs -* support for Google Cloud Load balancers ([#2803](https://github.com/argoproj/argo-rollouts/issues/2803)) -* Update Changelog ([#2683](https://github.com/argoproj/argo-rollouts/issues/2683)) * mirroring support in Traefik is not implemented yet ([#2904](https://github.com/argoproj/argo-rollouts/issues/2904)) +* update contributions.md to include k3d as recommended cluster, add details on e2e test setup, and update kubectl install link. Fixes [#1750](https://github.com/argoproj/argo-rollouts/issues/1750) ([#1867](https://github.com/argoproj/argo-rollouts/issues/1867)) +* fix minor mistakes in Migrating to Deployments ([#2270](https://github.com/argoproj/argo-rollouts/issues/2270)) * Update docs of Rollout spec to add active/previewMetadata ([#2833](https://github.com/argoproj/argo-rollouts/issues/2833)) * Update datadog.md - clarify formulas [#2813](https://github.com/argoproj/argo-rollouts/issues/2813) ([#2819](https://github.com/argoproj/argo-rollouts/issues/2819)) * support for Kong ingress ([#2820](https://github.com/argoproj/argo-rollouts/issues/2820)) * Fix AWS App Mesh getting started documentation to avoid connection pooling problems ([#2814](https://github.com/argoproj/argo-rollouts/issues/2814)) * Update Changelog ([#2807](https://github.com/argoproj/argo-rollouts/issues/2807)) * use correct capitalization for "Datadog" in navigation sidebar ([#2809](https://github.com/argoproj/argo-rollouts/issues/2809)) -* Add gateway API link, fix Contour plugin naming ([#2787](https://github.com/argoproj/argo-rollouts/issues/2787)) -* fix minor mistakes in Migrating to Deployments ([#2270](https://github.com/argoproj/argo-rollouts/issues/2270)) -* Show how plugins are loaded ([#2801](https://github.com/argoproj/argo-rollouts/issues/2801)) * Fix typo in header routing specification docs ([#2808](https://github.com/argoproj/argo-rollouts/issues/2808)) +* support for Google Cloud Load balancers ([#2803](https://github.com/argoproj/argo-rollouts/issues/2803)) +* Show how plugins are loaded ([#2801](https://github.com/argoproj/argo-rollouts/issues/2801)) +* Add gateway API link, fix Contour plugin naming ([#2787](https://github.com/argoproj/argo-rollouts/issues/2787)) * Add some details around running locally to make things clearer new contributors ([#2786](https://github.com/argoproj/argo-rollouts/issues/2786)) * Add docs for Amazon Managed Prometheus ([#2777](https://github.com/argoproj/argo-rollouts/issues/2777)) * Update Changelog ([#2765](https://github.com/argoproj/argo-rollouts/issues/2765)) * copy argo cd docs drop down fix ([#2731](https://github.com/argoproj/argo-rollouts/issues/2731)) * Add contour trafficrouter plugin ([#2729](https://github.com/argoproj/argo-rollouts/issues/2729)) * fix link to plugins for traffic routers ([#2719](https://github.com/argoproj/argo-rollouts/issues/2719)) -* update contributions.md to include k3d as recommended cluster, add details on e2e test setup, and update kubectl install link. Fixes [#1750](https://github.com/argoproj/argo-rollouts/issues/1750) ([#1867](https://github.com/argoproj/argo-rollouts/issues/1867)) +* Update Changelog ([#2683](https://github.com/argoproj/argo-rollouts/issues/2683)) * **analysis:** fix use stringData in the examples ([#2715](https://github.com/argoproj/argo-rollouts/issues/2715)) -* **example:** interval requires count ([#2690](https://github.com/argoproj/argo-rollouts/issues/2690)) * **example:** Add example on how to execute subset of e2e tests ([#2867](https://github.com/argoproj/argo-rollouts/issues/2867)) +* **example:** interval requires count ([#2690](https://github.com/argoproj/argo-rollouts/issues/2690)) ### Feat +* Send informer add k8s event ([#2834](https://github.com/argoproj/argo-rollouts/issues/2834)) * enable self service notification support ([#2930](https://github.com/argoproj/argo-rollouts/issues/2930)) * support prometheus headers ([#2937](https://github.com/argoproj/argo-rollouts/issues/2937)) * Add insecure option for Prometheus. Fixes [#2913](https://github.com/argoproj/argo-rollouts/issues/2913) ([#2914](https://github.com/argoproj/argo-rollouts/issues/2914)) * Add prometheus timeout ([#2893](https://github.com/argoproj/argo-rollouts/issues/2893)) * Support Multiple ALB Ingresses ([#2639](https://github.com/argoproj/argo-rollouts/issues/2639)) -* Send informer add k8s event ([#2834](https://github.com/argoproj/argo-rollouts/issues/2834)) * add merge key to analysis template ([#2842](https://github.com/argoproj/argo-rollouts/issues/2842)) * retain TLS configuration for canary ingresses in the nginx integration. Fixes [#1134](https://github.com/argoproj/argo-rollouts/issues/1134) ([#2679](https://github.com/argoproj/argo-rollouts/issues/2679)) * **analysis:** Adds rollout Spec.Selector.MatchLabels to AnalysisRun. Fixes [#2888](https://github.com/argoproj/argo-rollouts/issues/2888) ([#2903](https://github.com/argoproj/argo-rollouts/issues/2903)) @@ -227,20 +507,20 @@ ### Fix -* istio dropping fields during removing of managed routes ([#2692](https://github.com/argoproj/argo-rollouts/issues/2692)) -* resolve args to metric in garbage collection function ([#2843](https://github.com/argoproj/argo-rollouts/issues/2843)) +* make new alb fullName field optional for backward compatability ([#2806](https://github.com/argoproj/argo-rollouts/issues/2806)) +* cloudwatch metrics provider multiple dimensions ([#2932](https://github.com/argoproj/argo-rollouts/issues/2932)) * rollout not modify the VirtualService whit setHeaderRoute step with workloadRef ([#2797](https://github.com/argoproj/argo-rollouts/issues/2797)) * get new httpRoutesI after removeRoute() to avoid duplicates. Fixes [#2769](https://github.com/argoproj/argo-rollouts/issues/2769) ([#2887](https://github.com/argoproj/argo-rollouts/issues/2887)) -* make new alb fullName field optional for backward compatability ([#2806](https://github.com/argoproj/argo-rollouts/issues/2806)) * change logic of analysis run to better handle errors ([#2695](https://github.com/argoproj/argo-rollouts/issues/2695)) -* cloudwatch metrics provider multiple dimensions ([#2932](https://github.com/argoproj/argo-rollouts/issues/2932)) -* add required ingress permission ([#2933](https://github.com/argoproj/argo-rollouts/issues/2933)) +* istio dropping fields during removing of managed routes ([#2692](https://github.com/argoproj/argo-rollouts/issues/2692)) +* resolve args to metric in garbage collection function ([#2843](https://github.com/argoproj/argo-rollouts/issues/2843)) * properly wrap Datadog API v2 request body ([#2771](https://github.com/argoproj/argo-rollouts/issues/2771)) ([#2775](https://github.com/argoproj/argo-rollouts/issues/2775)) +* add required ingress permission ([#2933](https://github.com/argoproj/argo-rollouts/issues/2933)) +* **analysis:** Adding field in YAML to provide region for Sigv4 signing. ([#2794](https://github.com/argoproj/argo-rollouts/issues/2794)) * **analysis:** Graphite query - remove whitespaces ([#2752](https://github.com/argoproj/argo-rollouts/issues/2752)) * **analysis:** Graphite metric provider - index out of range [0] with length 0 ([#2751](https://github.com/argoproj/argo-rollouts/issues/2751)) -* **analysis:** Adding field in YAML to provide region for Sigv4 signing. ([#2794](https://github.com/argoproj/argo-rollouts/issues/2794)) -* **controller:** Fix for rollouts getting stuck in loop ([#2689](https://github.com/argoproj/argo-rollouts/issues/2689)) * **controller:** Remove name label from some k8s client metrics on events and replicasets ([#2851](https://github.com/argoproj/argo-rollouts/issues/2851)) +* **controller:** Fix for rollouts getting stuck in loop ([#2689](https://github.com/argoproj/argo-rollouts/issues/2689)) * **controller:** Add klog logrus bridge. Fixes [#2707](https://github.com/argoproj/argo-rollouts/issues/2707). ([#2701](https://github.com/argoproj/argo-rollouts/issues/2701)) * **trafficrouting:** apply stable selectors on canary service on rollout abort [#2781](https://github.com/argoproj/argo-rollouts/issues/2781) ([#2818](https://github.com/argoproj/argo-rollouts/issues/2818)) @@ -315,8 +595,8 @@ types. * switch to distroless for cli/dashboard image ([#2596](https://github.com/argoproj/argo-rollouts/issues/2596)) * add Tuhu to users ([#2630](https://github.com/argoproj/argo-rollouts/issues/2630)) * bump deps for prisma ([#2643](https://github.com/argoproj/argo-rollouts/issues/2643)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.13 to 1.18.14 ([#2614](https://github.com/argoproj/argo-rollouts/issues/2614)) -* **deps:** bump github.com/antonmedv/expr from 1.12.3 to 1.12.5 ([#2670](https://github.com/argoproj/argo-rollouts/issues/2670)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.6 to 1.25.7 ([#2682](https://github.com/argoproj/argo-rollouts/issues/2682)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.15 to 1.18.16 ([#2652](https://github.com/argoproj/argo-rollouts/issues/2652)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.16 to 1.18.17 ([#2659](https://github.com/argoproj/argo-rollouts/issues/2659)) * **deps:** bump github.com/antonmedv/expr from 1.12.2 to 1.12.3 ([#2653](https://github.com/argoproj/argo-rollouts/issues/2653)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.5 to 1.19.6 ([#2654](https://github.com/argoproj/argo-rollouts/issues/2654)) @@ -331,20 +611,20 @@ types. * **deps:** bump google.golang.org/protobuf from 1.29.0 to 1.29.1 ([#2660](https://github.com/argoproj/argo-rollouts/issues/2660)) * **deps:** bump google.golang.org/protobuf from 1.29.1 to 1.30.0 ([#2665](https://github.com/argoproj/argo-rollouts/issues/2665)) * **deps:** bump github.com/stretchr/testify from 1.8.1 to 1.8.2 ([#2627](https://github.com/argoproj/argo-rollouts/issues/2627)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.14 to 1.18.15 ([#2618](https://github.com/argoproj/argo-rollouts/issues/2618)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.6 to 1.19.7 ([#2672](https://github.com/argoproj/argo-rollouts/issues/2672)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.3 to 1.25.4 ([#2617](https://github.com/argoproj/argo-rollouts/issues/2617)) * **deps:** bump github.com/antonmedv/expr from 1.12.0 to 1.12.1 ([#2619](https://github.com/argoproj/argo-rollouts/issues/2619)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.4 to 1.19.5 ([#2616](https://github.com/argoproj/argo-rollouts/issues/2616)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.3 to 1.19.4 ([#2612](https://github.com/argoproj/argo-rollouts/issues/2612)) * **deps:** bump github.com/prometheus/common from 0.39.0 to 0.40.0 ([#2611](https://github.com/argoproj/argo-rollouts/issues/2611)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.6 to 1.25.7 ([#2682](https://github.com/argoproj/argo-rollouts/issues/2682)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.13 to 1.18.14 ([#2614](https://github.com/argoproj/argo-rollouts/issues/2614)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.2 to 1.25.3 ([#2615](https://github.com/argoproj/argo-rollouts/issues/2615)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.6 to 1.19.7 ([#2672](https://github.com/argoproj/argo-rollouts/issues/2672)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.14 to 1.18.15 ([#2618](https://github.com/argoproj/argo-rollouts/issues/2618)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.17 to 1.18.19 ([#2673](https://github.com/argoproj/argo-rollouts/issues/2673)) * **deps:** bump imjasonh/setup-crane from 0.2 to 0.3 ([#2600](https://github.com/argoproj/argo-rollouts/issues/2600)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.5 to 1.25.6 ([#2671](https://github.com/argoproj/argo-rollouts/issues/2671)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2593](https://github.com/argoproj/argo-rollouts/issues/2593)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.15 to 1.18.16 ([#2652](https://github.com/argoproj/argo-rollouts/issues/2652)) +* **deps:** bump github.com/antonmedv/expr from 1.12.3 to 1.12.5 ([#2670](https://github.com/argoproj/argo-rollouts/issues/2670)) * **deps:** bump google.golang.org/grpc from 1.52.3 to 1.53.0 ([#2574](https://github.com/argoproj/argo-rollouts/issues/2574)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2565](https://github.com/argoproj/argo-rollouts/issues/2565)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2564](https://github.com/argoproj/argo-rollouts/issues/2564)) @@ -406,12 +686,12 @@ types. ### Fix +* update GetTargetGroupMetadata to call DescribeTags in batches ([#2570](https://github.com/argoproj/argo-rollouts/issues/2570)) * switch service selector back to stable on canary service when aborted ([#2540](https://github.com/argoproj/argo-rollouts/issues/2540)) * change log generator to only add CHANGELOG.md ([#2626](https://github.com/argoproj/argo-rollouts/issues/2626)) * Rollback change on service creation with weightless experiments ([#2624](https://github.com/argoproj/argo-rollouts/issues/2624)) * flakey TestWriteBackToInformer test ([#2621](https://github.com/argoproj/argo-rollouts/issues/2621)) * remove outdated ioutil package dependencies ([#2583](https://github.com/argoproj/argo-rollouts/issues/2583)) -* update GetTargetGroupMetadata to call DescribeTags in batches ([#2570](https://github.com/argoproj/argo-rollouts/issues/2570)) * analysis information box [#2530](https://github.com/argoproj/argo-rollouts/issues/2530) ([#2575](https://github.com/argoproj/argo-rollouts/issues/2575)) * support only tls in virtual services ([#2502](https://github.com/argoproj/argo-rollouts/issues/2502)) * **analysis:** Nil Pointer Fixes [#2458](https://github.com/argoproj/argo-rollouts/issues/2458) ([#2680](https://github.com/argoproj/argo-rollouts/issues/2680)) @@ -477,21 +757,21 @@ There was an unintentional change in behavior related to service creation with e ### Chore -* add optum to users list ([#2466](https://github.com/argoproj/argo-rollouts/issues/2466)) +* Add Yotpo to USERS.md * upgrade golang to 1.19 ([#2219](https://github.com/argoproj/argo-rollouts/issues/2219)) -* sign container images and checksum assets ([#2334](https://github.com/argoproj/argo-rollouts/issues/2334)) +* remove deprecated -i for go build ([#2047](https://github.com/argoproj/argo-rollouts/issues/2047)) +* rename the examples/trafffic-management directory to istio ([#2315](https://github.com/argoproj/argo-rollouts/issues/2315)) * update stable tag conditionally ([#2480](https://github.com/argoproj/argo-rollouts/issues/2480)) * fix checksum generation ([#2481](https://github.com/argoproj/argo-rollouts/issues/2481)) -* Add Yotpo to USERS.md +* add optum to users list ([#2466](https://github.com/argoproj/argo-rollouts/issues/2466)) * use docker login to sign images ([#2479](https://github.com/argoproj/argo-rollouts/issues/2479)) * use correct image for plugin container ([#2478](https://github.com/argoproj/argo-rollouts/issues/2478)) -* rename the examples/trafffic-management directory to istio ([#2315](https://github.com/argoproj/argo-rollouts/issues/2315)) * Add example for istio-subset-split ([#2318](https://github.com/argoproj/argo-rollouts/issues/2318)) * add deprecation notice for rollout_phase in docs ([#2377](https://github.com/argoproj/argo-rollouts/issues/2377)) ([#2378](https://github.com/argoproj/argo-rollouts/issues/2378)) -* remove deprecated -i for go build ([#2047](https://github.com/argoproj/argo-rollouts/issues/2047)) +* sign container images and checksum assets ([#2334](https://github.com/argoproj/argo-rollouts/issues/2334)) * **cli:** add darwin arm64 to build and release ([#2264](https://github.com/argoproj/argo-rollouts/issues/2264)) -* **deps:** upgrade ui deps to fix high security cve's ([#2345](https://github.com/argoproj/argo-rollouts/issues/2345)) -* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.17.0 to 1.17.1 ([#2369](https://github.com/argoproj/argo-rollouts/issues/2369)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2487](https://github.com/argoproj/argo-rollouts/issues/2487)) +* **deps:** bump github.com/prometheus/common from 0.37.0 to 0.38.0 ([#2468](https://github.com/argoproj/argo-rollouts/issues/2468)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2455](https://github.com/argoproj/argo-rollouts/issues/2455)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2454](https://github.com/argoproj/argo-rollouts/issues/2454)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2452](https://github.com/argoproj/argo-rollouts/issues/2452)) @@ -507,23 +787,23 @@ There was an unintentional change in behavior related to service creation with e * **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2413](https://github.com/argoproj/argo-rollouts/issues/2413)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2412](https://github.com/argoproj/argo-rollouts/issues/2412)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2409](https://github.com/argoproj/argo-rollouts/issues/2409)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2406](https://github.com/argoproj/argo-rollouts/issues/2406)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2404](https://github.com/argoproj/argo-rollouts/issues/2404)) * **deps:** bump github.com/prometheus/client_golang ([#2469](https://github.com/argoproj/argo-rollouts/issues/2469)) -* **deps:** bump codecov/codecov-action from 2.1.0 to 3.1.1 ([#2251](https://github.com/argoproj/argo-rollouts/issues/2251)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2404](https://github.com/argoproj/argo-rollouts/issues/2404)) * **deps:** bump notification engine ([#2470](https://github.com/argoproj/argo-rollouts/issues/2470)) +* **deps:** bump codecov/codecov-action from 2.1.0 to 3.1.1 ([#2251](https://github.com/argoproj/argo-rollouts/issues/2251)) * **deps:** bump github.com/prometheus/common from 0.38.0 to 0.39.0 ([#2476](https://github.com/argoproj/argo-rollouts/issues/2476)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2477](https://github.com/argoproj/argo-rollouts/issues/2477)) +* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.17.2 to 1.17.3 ([#2484](https://github.com/argoproj/argo-rollouts/issues/2484)) * **deps:** bump dependabot/fetch-metadata from 1.3.4 to 1.3.5 ([#2390](https://github.com/argoproj/argo-rollouts/issues/2390)) * **deps:** bump imjasonh/setup-crane from 0.1 to 0.2 ([#2387](https://github.com/argoproj/argo-rollouts/issues/2387)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2487](https://github.com/argoproj/argo-rollouts/issues/2487)) -* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.17.2 to 1.17.3 ([#2484](https://github.com/argoproj/argo-rollouts/issues/2484)) +* **deps:** upgrade ui deps to fix high security cve's ([#2345](https://github.com/argoproj/argo-rollouts/issues/2345)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2406](https://github.com/argoproj/argo-rollouts/issues/2406)) * **deps:** bump actions/upload-artifact from 2 to 3 ([#1973](https://github.com/argoproj/argo-rollouts/issues/1973)) * **deps:** bump github.com/influxdata/influxdb-client-go/v2 ([#2381](https://github.com/argoproj/argo-rollouts/issues/2381)) * **deps:** bump github.com/spf13/cobra from 1.6.0 to 1.6.1 ([#2370](https://github.com/argoproj/argo-rollouts/issues/2370)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2366](https://github.com/argoproj/argo-rollouts/issues/2366)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2367](https://github.com/argoproj/argo-rollouts/issues/2367)) -* **deps:** bump github.com/prometheus/common from 0.37.0 to 0.38.0 ([#2468](https://github.com/argoproj/argo-rollouts/issues/2468)) +* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.17.0 to 1.17.1 ([#2369](https://github.com/argoproj/argo-rollouts/issues/2369)) * **deps:** bump github.com/stretchr/testify from 1.8.0 to 1.8.1 ([#2368](https://github.com/argoproj/argo-rollouts/issues/2368)) * **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2365](https://github.com/argoproj/argo-rollouts/issues/2365)) * **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.16.16 to 1.17.0 ([#2364](https://github.com/argoproj/argo-rollouts/issues/2364)) @@ -546,7 +826,7 @@ There was an unintentional change in behavior related to service creation with e * **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2294](https://github.com/argoproj/argo-rollouts/issues/2294)) * **deps:** bump google.golang.org/grpc from 1.47.0 to 1.50.0 ([#2293](https://github.com/argoproj/argo-rollouts/issues/2293)) * **deps:** bump docker/metadata-action from 3 to 4 ([#2292](https://github.com/argoproj/argo-rollouts/issues/2292)) -* **deps:** bump github/codeql-action from 1 to 2 ([#2289](https://github.com/argoproj/argo-rollouts/issues/2289)) +* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2486](https://github.com/argoproj/argo-rollouts/issues/2486)) * **deps:** bump docker/login-action from 1 to 2 ([#2288](https://github.com/argoproj/argo-rollouts/issues/2288)) * **deps:** bump actions/setup-go from 2 to 3 ([#2287](https://github.com/argoproj/argo-rollouts/issues/2287)) * **deps:** bump dependabot/fetch-metadata from 1.3.3 to 1.3.4 ([#2286](https://github.com/argoproj/argo-rollouts/issues/2286)) @@ -555,8 +835,8 @@ There was an unintentional change in behavior related to service creation with e * **deps:** bump actions/cache from 2 to 3.0.1 ([#1940](https://github.com/argoproj/argo-rollouts/issues/1940)) * **deps:** bump docker/setup-qemu-action from 1 to 2 ([#2284](https://github.com/argoproj/argo-rollouts/issues/2284)) * **deps:** bump actions/checkout from 2 to 3.1.0 ([#2283](https://github.com/argoproj/argo-rollouts/issues/2283)) -* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2486](https://github.com/argoproj/argo-rollouts/issues/2486)) * **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2485](https://github.com/argoproj/argo-rollouts/issues/2485)) +* **deps:** bump github/codeql-action from 1 to 2 ([#2289](https://github.com/argoproj/argo-rollouts/issues/2289)) ### Ci @@ -575,23 +855,23 @@ There was an unintentional change in behavior related to service creation with e ### Docs -* common questions for Rollbacks ([#2027](https://github.com/argoproj/argo-rollouts/issues/2027)) +* Add traffic router support to readme ([#2444](https://github.com/argoproj/argo-rollouts/issues/2444)) +* fix typo in helm Argo rollouts ([#2442](https://github.com/argoproj/argo-rollouts/issues/2442)) * correct syntax of canary setMirrorRoute's value ([#2431](https://github.com/argoproj/argo-rollouts/issues/2431)) -* add artifact badge ([#2331](https://github.com/argoproj/argo-rollouts/issues/2331)) -* Use new Google Analytics 4 site tag ([#2299](https://github.com/argoproj/argo-rollouts/issues/2299)) +* Explain upgrade process ([#2424](https://github.com/argoproj/argo-rollouts/issues/2424)) * add progressive delivery with gitops example for openshift ([#2400](https://github.com/argoproj/argo-rollouts/issues/2400)) * fix !important block typo ([#2372](https://github.com/argoproj/argo-rollouts/issues/2372)) * mention supported versions ([#2163](https://github.com/argoproj/argo-rollouts/issues/2163)) * Added blog post for minimize impact in Kubernetes using Progressive Delivery and customer side impact ([#2355](https://github.com/argoproj/argo-rollouts/issues/2355)) -* add Opensurvey to USERS.md ([#2195](https://github.com/argoproj/argo-rollouts/issues/2195)) -* fix typo in helm Argo rollouts ([#2442](https://github.com/argoproj/argo-rollouts/issues/2442)) -* Explain upgrade process ([#2424](https://github.com/argoproj/argo-rollouts/issues/2424)) +* Update docs for new openapi kustomize support ([#2216](https://github.com/argoproj/argo-rollouts/issues/2216)) +* add artifact badge ([#2331](https://github.com/argoproj/argo-rollouts/issues/2331)) +* Use new Google Analytics 4 site tag ([#2299](https://github.com/argoproj/argo-rollouts/issues/2299)) * Fixed read the docs rendering ([#2277](https://github.com/argoproj/argo-rollouts/issues/2277)) -* Add traffic router support to readme ([#2444](https://github.com/argoproj/argo-rollouts/issues/2444)) +* common questions for Rollbacks ([#2027](https://github.com/argoproj/argo-rollouts/issues/2027)) * add OpsVerse as an official user (USERS.md) ([#2209](https://github.com/argoproj/argo-rollouts/issues/2209)) * Fix the controller annotation to enable data scrapping ([#2238](https://github.com/argoproj/argo-rollouts/issues/2238)) * Update release docs for versioned formula ([#2245](https://github.com/argoproj/argo-rollouts/issues/2245)) -* Update docs for new openapi kustomize support ([#2216](https://github.com/argoproj/argo-rollouts/issues/2216)) +* add Opensurvey to USERS.md ([#2195](https://github.com/argoproj/argo-rollouts/issues/2195)) * **trafficrouting:** fix docs warning to github style markdown ([#2342](https://github.com/argoproj/argo-rollouts/issues/2342)) ### Feat @@ -599,30 +879,30 @@ There was an unintentional change in behavior related to service creation with e * Implement Issue [#1779](https://github.com/argoproj/argo-rollouts/issues/1779): add rollout.Spec.Strategy.Canary.MinPodsPerReplicaSet ([#2448](https://github.com/argoproj/argo-rollouts/issues/2448)) * Apache APISIX support. Fixes [#2395](https://github.com/argoproj/argo-rollouts/issues/2395) ([#2437](https://github.com/argoproj/argo-rollouts/issues/2437)) * rollback windows. Fixes [#574](https://github.com/argoproj/argo-rollouts/issues/574) ([#2394](https://github.com/argoproj/argo-rollouts/issues/2394)) +* Support TCP routes traffic splitting for Istio VirtualService ([#1659](https://github.com/argoproj/argo-rollouts/issues/1659)) * add support for getting the replicaset name via templating ([#2396](https://github.com/argoproj/argo-rollouts/issues/2396)) * Allow Traffic shaping through header based routing for ALB ([#2214](https://github.com/argoproj/argo-rollouts/issues/2214)) * Add support for spec.ingressClassName ([#2178](https://github.com/argoproj/argo-rollouts/issues/2178)) -* Support TCP routes traffic splitting for Istio VirtualService ([#1659](https://github.com/argoproj/argo-rollouts/issues/1659)) * **cli:** dynamic shell completion for main resources names (rollouts, experiments, analysisrun) ([#2379](https://github.com/argoproj/argo-rollouts/issues/2379)) * **cli:** add port flag for dashboard command ([#2383](https://github.com/argoproj/argo-rollouts/issues/2383)) * **controller:** don't hardcode experiment ports; always create service ([#2397](https://github.com/argoproj/argo-rollouts/issues/2397)) ### Fix +* set gopath in makefile ([#2398](https://github.com/argoproj/argo-rollouts/issues/2398)) * dev build can set DEV_IMAGE=true ([#2440](https://github.com/argoproj/argo-rollouts/issues/2440)) * add patch verb to deployment resource ([#2407](https://github.com/argoproj/argo-rollouts/issues/2407)) * rootPath support so that it uses the embedded files system ([#2198](https://github.com/argoproj/argo-rollouts/issues/2198)) -* set gopath in makefile ([#2398](https://github.com/argoproj/argo-rollouts/issues/2398)) * change completed condition so it only triggers on pod hash changes also adds an event for when it does changes. ([#2203](https://github.com/argoproj/argo-rollouts/issues/2203)) * enable notifications without when condition ([#2231](https://github.com/argoproj/argo-rollouts/issues/2231)) * UI not redirecting on / ([#2252](https://github.com/argoproj/argo-rollouts/issues/2252)) * nil pointer while linting with basic canary and ingresses ([#2256](https://github.com/argoproj/argo-rollouts/issues/2256)) -* **analysis:** Make AR End When Only Dry-Run Metrics Are Defined ([#2230](https://github.com/argoproj/argo-rollouts/issues/2230)) * **analysis:** Fix Analysis Terminal Decision For Dry-Run Metrics ([#2399](https://github.com/argoproj/argo-rollouts/issues/2399)) +* **analysis:** Make AR End When Only Dry-Run Metrics Are Defined ([#2230](https://github.com/argoproj/argo-rollouts/issues/2230)) * **analysis:** Avoid Infinite Error Message Append For Failed Dry-Run Metrics ([#2182](https://github.com/argoproj/argo-rollouts/issues/2182)) * **cli:** nil pointer while linting ([#2324](https://github.com/argoproj/argo-rollouts/issues/2324)) -* **controller:** Fix k8s clientset controller metrics. Fixes [#2139](https://github.com/argoproj/argo-rollouts/issues/2139) ([#2261](https://github.com/argoproj/argo-rollouts/issues/2261)) * **controller:** leader election preventing two controllers running and gracefully shutting down ([#2291](https://github.com/argoproj/argo-rollouts/issues/2291)) +* **controller:** Fix k8s clientset controller metrics. Fixes [#2139](https://github.com/argoproj/argo-rollouts/issues/2139) ([#2261](https://github.com/argoproj/argo-rollouts/issues/2261)) * **dashboard:** correct mime type is returned. Fixes: [#2290](https://github.com/argoproj/argo-rollouts/issues/2290) ([#2303](https://github.com/argoproj/argo-rollouts/issues/2303)) * **example:** correct docs when metrics got result empty ([#2309](https://github.com/argoproj/argo-rollouts/issues/2309)) * **metricprovider:** Support jsonBody for web metric provider Fixes [#2275](https://github.com/argoproj/argo-rollouts/issues/2275) ([#2312](https://github.com/argoproj/argo-rollouts/issues/2312)) @@ -686,4 +966,3 @@ There was an unintentional change in behavior related to service creation with e ### Fixes * **controller:** istio dropping fields not defined in type ([#2268](https://github.com/argoproj/argo-rollouts/issues/2268)) - From 6b05baf1778d7c47cc7d74e5fe93317a215d498d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Apr 2024 13:54:14 -0500 Subject: [PATCH 003/219] chore(deps): bump codecov/codecov-action from 4.1.1 to 4.2.0 (#3500) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.1.1 to 4.2.0. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.1.1...v4.2.0) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/go.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 65e600d8d3..0b82647534 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -90,7 +90,7 @@ jobs: path: coverage.out - name: Upload code coverage information to codecov.io - uses: codecov/codecov-action@v4.1.1 + uses: codecov/codecov-action@v4.2.0 with: file: coverage.out From fe6a65dd9e9ec1379b1439cb6af039188d76c574 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Apr 2024 13:54:42 -0500 Subject: [PATCH 004/219] chore(deps): bump golang.org/x/oauth2 from 0.18.0 to 0.19.0 (#3506) Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.18.0 to 0.19.0. - [Commits](https://github.com/golang/oauth2/compare/v0.18.0...v0.19.0) --- updated-dependencies: - dependency-name: golang.org/x/oauth2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 3 +-- go.sum | 7 ++----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 422327627b..880392cc78 100644 --- a/go.mod +++ b/go.mod @@ -39,7 +39,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 - golang.org/x/oauth2 v0.18.0 + golang.org/x/oauth2 v0.19.0 google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 google.golang.org/grpc v1.62.1 google.golang.org/protobuf v1.33.0 @@ -215,7 +215,6 @@ require ( gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 // indirect gomodules.xyz/notify v0.1.1 // indirect google.golang.org/api v0.149.0 // indirect - google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect diff --git a/go.sum b/go.sum index 3aff874a74..964645c843 100644 --- a/go.sum +++ b/go.sum @@ -878,8 +878,8 @@ golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg= +golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -981,7 +981,6 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= @@ -1081,8 +1080,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= From 5a1928a33ecada01eb772462b2892cb8d1b88fad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Apr 2024 13:55:49 -0500 Subject: [PATCH 005/219] chore(deps): bump github.com/prometheus/client_model from 0.6.0 to 0.6.1 (#3499) Bumps [github.com/prometheus/client_model](https://github.com/prometheus/client_model) from 0.6.0 to 0.6.1. - [Release notes](https://github.com/prometheus/client_model/releases) - [Commits](https://github.com/prometheus/client_model/compare/v0.6.0...v0.6.1) --- updated-dependencies: - dependency-name: github.com/prometheus/client_model dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 880392cc78..278e21a3a7 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/newrelic/newrelic-client-go v1.1.0 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.18.0 - github.com/prometheus/client_model v0.6.0 + github.com/prometheus/client_model v0.6.1 github.com/prometheus/common v0.47.0 github.com/prometheus/common/sigv4 v0.1.0 github.com/servicemeshinterface/smi-sdk-go v0.5.0 diff --git a/go.sum b/go.sum index 964645c843..6dad9e7a68 100644 --- a/go.sum +++ b/go.sum @@ -606,8 +606,8 @@ github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1: github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= -github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= From 4cf51625534c93bd70fdd44fbe12d93c673efeee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Apr 2024 19:31:42 +0000 Subject: [PATCH 006/219] chore(deps): bump google.golang.org/grpc from 1.62.1 to 1.63.0 (#3497) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.62.1 to 1.63.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.62.1...v1.63.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 30 +++++++++++++++--------------- go.sum | 58 ++++++++++++++++++++++++++++++---------------------------- 2 files changed, 45 insertions(+), 43 deletions(-) diff --git a/go.mod b/go.mod index 278e21a3a7..b404c032d3 100644 --- a/go.mod +++ b/go.mod @@ -40,8 +40,8 @@ require ( github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 golang.org/x/oauth2 v0.19.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 - google.golang.org/grpc v1.62.1 + google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de + google.golang.org/grpc v1.63.0 google.golang.org/protobuf v1.33.0 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.29.3 @@ -61,7 +61,7 @@ require ( ) require ( - cloud.google.com/go/compute v1.23.3 // indirect + cloud.google.com/go/compute v1.24.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect github.com/PagerDuty/go-pagerduty v1.7.0 // indirect github.com/bradleyfalzon/ghinstallation/v2 v2.5.0 // indirect @@ -108,11 +108,11 @@ require ( github.com/evanphx/json-patch v5.6.0+incompatible // indirect github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect github.com/fatih/color v1.7.0 // indirect - github.com/felixge/httpsnoop v1.0.3 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect github.com/go-errors/errors v1.4.2 // indirect - github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect @@ -189,14 +189,14 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect go.etcd.io/etcd/client/v3 v3.5.10 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.42.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0 // indirect - go.opentelemetry.io/otel v1.19.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect + go.opentelemetry.io/otel v1.22.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 // indirect - go.opentelemetry.io/otel/metric v1.19.0 // indirect - go.opentelemetry.io/otel/sdk v1.19.0 // indirect - go.opentelemetry.io/otel/trace v1.19.0 // indirect + go.opentelemetry.io/otel/metric v1.22.0 // indirect + go.opentelemetry.io/otel/sdk v1.21.0 // indirect + go.opentelemetry.io/otel/trace v1.22.0 // indirect go.opentelemetry.io/proto/otlp v1.0.0 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect go.uber.org/atomic v1.10.0 // indirect @@ -210,13 +210,13 @@ require ( golang.org/x/sys v0.18.0 // indirect golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.3.0 // indirect + golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.16.1 // indirect gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 // indirect gomodules.xyz/notify v0.1.1 // indirect - google.golang.org/api v0.149.0 // indirect - google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/api v0.162.0 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index 6dad9e7a68..b187ee4430 100644 --- a/go.sum +++ b/go.sum @@ -19,8 +19,8 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= -cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= +cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= @@ -219,8 +219,9 @@ github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqL github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -246,8 +247,9 @@ github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7 github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= @@ -735,22 +737,22 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.42.0 h1:ZOLJc06r4CB42laIXg/7udr0pbZyuAihN10A/XuiQRY= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.42.0/go.mod h1:5z+/ZWJQKXa9YT34fQNx5K8Hd1EoIhvtUygUQPqEOgQ= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0 h1:KfYpVmrjI7JuToy5k8XV3nkapjWx48k4E4JOtVstzQI= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0/go.mod h1:SeQhzAEccGVZVEy7aH87Nh0km+utSpo1pTv6eMMop48= -go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= -go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= +go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 h1:3d+S281UTjM+AbF31XSOYn1qXn3BgIdWl8HNEpx08Jk= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0/go.mod h1:0+KuTDyKL4gjKCF75pHOX4wuzYDUZYfAQdSu43o+Z2I= -go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE= -go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= -go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= -go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= -go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= -go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= +go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= +go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= +go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= @@ -990,8 +992,8 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1071,8 +1073,8 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY= -google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= +google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= +google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1110,12 +1112,12 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= -google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= -google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU= -google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1130,8 +1132,8 @@ google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= -google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.63.0 h1:WjKe+dnvABXyPJMD7KDNLxtoGk5tgk+YFWN6cBWjZE8= +google.golang.org/grpc v1.63.0/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 996252b4f6c4798c4ee463cec844de3d13304d73 Mon Sep 17 00:00:00 2001 From: OpenGuidou <73480729+OpenGuidou@users.noreply.github.com> Date: Tue, 9 Apr 2024 16:55:07 +0200 Subject: [PATCH 007/219] docs: Add technique for ConfigMap change detection in Rollout (#3515) Signed-off-by: Guillaume Doussin --- docs/best-practices.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/best-practices.md b/docs/best-practices.md index 2f7908f4ba..c268bb5d92 100644 --- a/docs/best-practices.md +++ b/docs/best-practices.md @@ -139,3 +139,34 @@ One user of Argo Rollouts saw a 27% reduction in memory usage for a cluster with 1290 rollouts by changing `RevisionHistoryLimit` from 10 to 0. + +## Rollout a ConfigMap change + +Argo Rollouts is meant to work on a Kubernetes Deployment. When a ConfigMap is mounted inside one the Deployment container and a change occurs inside the ConfigMap, it won't trigger a new Rollout by default. + +One technique to trigger the Rollout it to name dynamically the ConfigMap. +For example, adding a hash of its content at the end of the name: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: my-config-7270e14e6 +``` + +Each time a change occurs in the ConfigMap, its name will change in the Deployment reference as well, triggering a Rollout. + +However, it's not enough to perform correctly progressive rollouts, as the old ConfigMap might get deleted as soon as the new one is created. This would prevent Experiments and rollbacks in case of rollout failure to work correctly. + +While no magical solution exist to work aroud that, you can tweak your deployment tool to remove the ConfigMap only when the Rollout is completed successfully. + +Example with Argo CD: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: my-config-7270e14e6 + annotations: + argocd.argoproj.io/sync-options: PruneLast=true +``` From 4e011b6b9e9b1ffb769bbd36c58db5158a4ced48 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Apr 2024 09:55:31 -0500 Subject: [PATCH 008/219] chore(deps): bump docker/setup-buildx-action from 3.2.0 to 3.3.0 (#3514) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.2.0 to 3.3.0. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/2b51285047da1547ffb1b2203d8be4c0af6b1f20...d70bba72b1f3fd22344832f00baa16ece964efeb) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 970080e845..6589d35e78 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -79,7 +79,7 @@ jobs: cosign-release: 'v2.2.0' - uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 - - uses: docker/setup-buildx-action@2b51285047da1547ffb1b2203d8be4c0af6b1f20 # v3.2.0 + - uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 - name: Setup tags for container image as a CSV type run: | diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a8c0781fbe..ebac523fa3 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -99,7 +99,7 @@ jobs: uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@2b51285047da1547ffb1b2203d8be4c0af6b1f20 # v3.2.0 + uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 - name: Generate release artifacts run: | From cd6f5b6a3503b366ad2bef5a9b4a02a65a65e596 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Apr 2024 09:55:51 -0500 Subject: [PATCH 009/219] chore(deps): bump peaceiris/actions-gh-pages from 3 to 4 (#3513) Bumps [peaceiris/actions-gh-pages](https://github.com/peaceiris/actions-gh-pages) from 3 to 4. - [Release notes](https://github.com/peaceiris/actions-gh-pages/releases) - [Changelog](https://github.com/peaceiris/actions-gh-pages/blob/main/CHANGELOG.md) - [Commits](https://github.com/peaceiris/actions-gh-pages/compare/v3...v4) --- updated-dependencies: - dependency-name: peaceiris/actions-gh-pages dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/gh-pages.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gh-pages.yaml b/.github/workflows/gh-pages.yaml index ffd8b736d0..1b5ef0cb71 100644 --- a/.github/workflows/gh-pages.yaml +++ b/.github/workflows/gh-pages.yaml @@ -33,7 +33,7 @@ jobs: make docs mkdocs build - name: Deploy - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./site From e356a60a890446a9bfe21d59fe6b328b2ec70d32 Mon Sep 17 00:00:00 2001 From: Benjamin Muschko Date: Tue, 9 Apr 2024 08:56:20 -0600 Subject: [PATCH 010/219] fix: Change indentation to properly render Markdown - fixes #3509 (#3511) Fix indentation to properly render Markdown Signed-off-by: Benjamin Muschko --- docs/features/analysis.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/features/analysis.md b/docs/features/analysis.md index 4029164425..5675022501 100644 --- a/docs/features/analysis.md +++ b/docs/features/analysis.md @@ -482,9 +482,9 @@ Or without additional metrics: clusterScope: false ``` - The result in the AnalysisRun will have the aggregation of metrics of each template: +The result in the AnalysisRun will have the aggregation of metrics of each template: - === "AnalysisRun" +=== "AnalysisRun" ```yaml # NOTE: Generated AnalysisRun from a single template referencing several templates From ed62ee8eae95b3e214f43ac798844e0f7f1363d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Apr 2024 09:56:40 -0500 Subject: [PATCH 011/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.10 to 1.27.11 (#3510) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.10 to 1.27.11. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.10...config/v1.27.11) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index b404c032d3..73077af911 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.26.1 - github.com/aws/aws-sdk-go-v2/config v1.27.10 + github.com/aws/aws-sdk-go-v2/config v1.27.11 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.37.0 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5 github.com/aws/smithy-go v1.20.2 @@ -83,7 +83,7 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.10 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.11 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 // indirect @@ -91,7 +91,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.20.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/go.sum b/go.sum index b187ee4430..dfb4720fdb 100644 --- a/go.sum +++ b/go.sum @@ -100,10 +100,10 @@ github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WN github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA= github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= -github.com/aws/aws-sdk-go-v2/config v1.27.10 h1:PS+65jThT0T/snC5WjyfHHyUgG+eBoupSDV+f838cro= -github.com/aws/aws-sdk-go-v2/config v1.27.10/go.mod h1:BePM7Vo4OBpHreKRUMuDXX+/+JWP38FLkzl5m27/Jjs= -github.com/aws/aws-sdk-go-v2/credentials v1.17.10 h1:qDZ3EA2lv1KangvQB6y258OssCHD0xvaGiEDkG4X/10= -github.com/aws/aws-sdk-go-v2/credentials v1.17.10/go.mod h1:6t3sucOaYDwDssHQa0ojH1RpmVmF5/jArkye1b2FKMI= +github.com/aws/aws-sdk-go-v2/config v1.27.11 h1:f47rANd2LQEYHda2ddSCKYId18/8BhSRM4BULGmfgNA= +github.com/aws/aws-sdk-go-v2/config v1.27.11/go.mod h1:SMsV78RIOYdve1vf36z8LmnszlRWkwMQtomCAI0/mIE= +github.com/aws/aws-sdk-go-v2/credentials v1.17.11 h1:YuIB1dJNf1Re822rriUOTxopaHHvIq0l/pX3fwO+Tzs= +github.com/aws/aws-sdk-go-v2/credentials v1.17.11/go.mod h1:AQtFPsDH9bI2O+71anW6EKL+NcD7LG3dpKGMV4SShgo= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 h1:FVJ0r5XTHSmIHJV6KuDmdYhEpvlHpiSd38RQWhut5J4= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1/go.mod h1:zusuAeqezXzAB24LGuzuekqMAEgWkVYukBec3kr3jUg= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 h1:aw39xVGeRWlWx9EzGVnhOR4yOjQDHPQ6o6NmBlscyQg= @@ -122,8 +122,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 h1:ogRAwT1/g github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7/go.mod h1:YCsIZhXfRPLFFCl5xxY+1T9RKzOKjCut+28JSX2DnAk= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.20.4 h1:WzFol5Cd+yDxPAdnzTA5LmpHYSWinhmSj4rQChV0ee8= -github.com/aws/aws-sdk-go-v2/service/sso v1.20.4/go.mod h1:qGzynb/msuZIE8I75DVRCUXw3o3ZyBmUvMwQ2t/BrGM= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 h1:vN8hEbpRnL7+Hopy9dzmRle1xmDc7o8tmY0klsr175w= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.5/go.mod h1:qGzynb/msuZIE8I75DVRCUXw3o3ZyBmUvMwQ2t/BrGM= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 h1:Jux+gDDyi1Lruk+KHF91tK2KCuY61kzoCpvtvJJBtOE= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4/go.mod h1:mUYPBhaF2lGiukDEjJX2BLRRKTmoUSitGDUgM4tRxak= github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 h1:cwIxeBttqPN3qkaAjcEcsh8NYr8n2HZPkcKgPAi1phU= From 2b7dd8d2e44f2423992bd9a46fc7488b37c549b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Apr 2024 09:57:00 -0500 Subject: [PATCH 012/219] chore(deps): bump google.golang.org/grpc from 1.63.0 to 1.63.2 (#3512) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.63.0 to 1.63.2. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.63.0...v1.63.2) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 73077af911..525d3bb563 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,7 @@ require ( github.com/valyala/fasttemplate v1.2.2 golang.org/x/oauth2 v0.19.0 google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de - google.golang.org/grpc v1.63.0 + google.golang.org/grpc v1.63.2 google.golang.org/protobuf v1.33.0 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.29.3 diff --git a/go.sum b/go.sum index dfb4720fdb..735664be8f 100644 --- a/go.sum +++ b/go.sum @@ -1132,8 +1132,8 @@ google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.63.0 h1:WjKe+dnvABXyPJMD7KDNLxtoGk5tgk+YFWN6cBWjZE8= -google.golang.org/grpc v1.63.0/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From f6f026d065aa313f5f27b3e1dd4183224a2c0590 Mon Sep 17 00:00:00 2001 From: Alexandre Gaudreault Date: Tue, 9 Apr 2024 14:05:54 -0400 Subject: [PATCH 013/219] chore(deps): bump go version to 1.22 (#3516) * bump go version to 1.22 Signed-off-by: Alexandre Gaudreault * fix deps version Signed-off-by: Alexandre Gaudreault * codegen without manifest Signed-off-by: Alexandre Gaudreault * manifest codegen Signed-off-by: Alexandre Gaudreault * updates for CI Signed-off-by: Alexandre Gaudreault * ignore mocks for codecov Signed-off-by: Alexandre Gaudreault --------- Signed-off-by: Alexandre Gaudreault --- .codecov.yml | 21 +++--- .github/workflows/docker-publish.yml | 8 +-- .github/workflows/e2e.yaml | 4 +- .github/workflows/gh-pages.yaml | 4 +- .github/workflows/go.yml | 14 ++-- .github/workflows/release.yaml | 72 +++++++++---------- Dockerfile | 4 +- Makefile | 3 + go.mod | 4 +- hack/installers/install-codegen-go-tools.sh | 6 +- hack/installers/install-dev-tools.sh | 2 +- hack/installers/install-protoc.sh | 2 +- hack/swagger-codegen.sh | 4 +- manifests/crds/analysis-run-crd.yaml | 2 +- manifests/crds/analysis-template-crd.yaml | 2 +- .../crds/cluster-analysis-template-crd.yaml | 2 +- manifests/crds/experiment-crd.yaml | 2 +- manifests/crds/rollout-crd.yaml | 2 +- manifests/install.yaml | 10 +-- metricproviders/mocks/Provider.go | 26 ++++++- rollout/mocks/TrafficRoutingReconciler.go | 30 +++++++- .../generated/.swagger-codegen/VERSION | 2 +- ui/src/models/rollout/generated/api.ts | 56 +++++++-------- ui/src/models/rollout/generated/custom.d.ts | 2 +- utils/aws/mocks/ELBv2APIClient.go | 26 ++++++- 25 files changed, 194 insertions(+), 116 deletions(-) diff --git a/.codecov.yml b/.codecov.yml index 9b9f57ef04..a8e52fbeca 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -8,13 +8,14 @@ coverage: default: threshold: 0.1 ignore: - - "pkg/apis/rollouts/v1alpha1" - - "test" - - "**/*.pb.go" - - "**/*.pb.gw.go" - - "**/*generated.go" - - "**/*generated.deepcopy.go" - - "**/*_test.go" - - "pkg/apis/client/.*" - - "pkg/client/.*" - - "vendor/.*" + - 'pkg/apis/rollouts/v1alpha1' + - 'test' + - '**/*.pb.go' + - '**/*.pb.gw.go' + - '**/*generated.go' + - '**/*generated.deepcopy.go' + - '**/*_test.go' + - 'pkg/apis/client/.*' + - 'pkg/client/.*' + - 'vendor/.*' + - '**/mocks/*' diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 04fd8f9efc..6392395d2e 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -61,13 +61,13 @@ jobs: needs: [set-vars] permissions: contents: read - packages: write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags + packages: write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags id-token: write # for creating OIDC tokens for signing. uses: ./.github/workflows/image-reuse.yaml with: quay_image_name: ${{ needs.set-vars.outputs.controller-meta-tags }} # Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations) - go-version: '1.21' + go-version: '1.22' platforms: ${{ needs.set-vars.outputs.platforms }} push: ${{ github.event_name != 'pull_request' }} secrets: @@ -78,13 +78,13 @@ jobs: needs: [set-vars] permissions: contents: read - packages: write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags + packages: write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags id-token: write # for creating OIDC tokens for signing. uses: ./.github/workflows/image-reuse.yaml with: quay_image_name: ${{ needs.set-vars.outputs.plugin-meta-tags }} # Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations) - go-version: '1.21' + go-version: '1.22' platforms: ${{ needs.set-vars.outputs.platforms }} push: ${{ github.event_name != 'pull_request' }} target: kubectl-argo-rollouts diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index bfbb4fb262..4bb16670e1 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -25,7 +25,7 @@ permissions: jobs: event_file: - name: "Event File" + name: 'Event File' runs-on: ubuntu-latest steps: - name: Upload @@ -48,7 +48,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5.0.0 with: - go-version: '1.21' + go-version: '1.22' - uses: actions/checkout@v4 - name: Setup k3s env: diff --git a/.github/workflows/gh-pages.yaml b/.github/workflows/gh-pages.yaml index 1b5ef0cb71..8d11ebefab 100644 --- a/.github/workflows/gh-pages.yaml +++ b/.github/workflows/gh-pages.yaml @@ -15,7 +15,7 @@ permissions: jobs: deploy: permissions: - contents: write # for peaceiris/actions-gh-pages to push pages branch + contents: write # for peaceiris/actions-gh-pages to push pages branch runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -26,7 +26,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5.0.0 with: - go-version: '1.21' + go-version: '1.22' - name: build run: | pip install mkdocs mkdocs_material diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 0b82647534..77d31d7bb3 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -2,14 +2,14 @@ name: Go on: push: branches: - - "master" - - "release-*" + - 'master' + - 'release-*' pull_request: branches: - - "master" + - 'master' env: # Golang version to use across CI steps - GOLANG_VERSION: '1.21' + GOLANG_VERSION: '1.22' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -20,7 +20,7 @@ permissions: jobs: event_file: - name: "Event File" + name: 'Event File' runs-on: ubuntu-latest steps: - name: Upload @@ -30,8 +30,8 @@ jobs: path: ${{ github.event_path }} lint-go: permissions: - contents: read # for actions/checkout to fetch code - pull-requests: read # for golangci/golangci-lint-action to fetch pull requests + contents: read # for actions/checkout to fetch code + pull-requests: read # for golangci/golangci-lint-action to fetch pull requests name: Lint Go code runs-on: ubuntu-latest steps: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ebac523fa3..0f25b77c4d 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -7,7 +7,7 @@ on: permissions: {} env: - GOLANG_VERSION: '1.21' # Note: go-version must also be set in job controller-image.with.go-version & plugin-image.with.go-version. + GOLANG_VERSION: '1.22' # Note: go-version must also be set in job controller-image.with.go-version & plugin-image.with.go-version. jobs: controller-image: @@ -19,7 +19,7 @@ jobs: with: quay_image_name: quay.io/argoproj/argo-rollouts:${{ github.ref_name }} # Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations) - go-version: '1.21' + go-version: '1.22' platforms: linux/amd64,linux/arm64 push: true secrets: @@ -35,7 +35,7 @@ jobs: with: quay_image_name: quay.io/argoproj/kubectl-argo-rollouts:${{ github.ref_name }} # Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations) - go-version: '1.21' + go-version: '1.22' platforms: linux/amd64,linux/arm64 push: true target: kubectl-argo-rollouts @@ -44,41 +44,40 @@ jobs: quay_password: ${{ secrets.QUAY_ROBOT_TOKEN }} controller-image-provenance: - needs: - - controller-image - permissions: - actions: read # for detecting the Github Actions environment. - id-token: write # for creating OIDC tokens for signing. - packages: write # for uploading attestations. (https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#known-issues) - # Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator - uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.10.0 - with: - image: quay.io/argoproj/argo-rollouts - digest: ${{ needs.controller-image.outputs.image-digest }} - secrets: - registry-username: ${{ secrets.QUAY_USERNAME }} - registry-password: ${{ secrets.QUAY_ROBOT_TOKEN }} + needs: + - controller-image + permissions: + actions: read # for detecting the Github Actions environment. + id-token: write # for creating OIDC tokens for signing. + packages: write # for uploading attestations. (https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#known-issues) + # Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator + uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.10.0 + with: + image: quay.io/argoproj/argo-rollouts + digest: ${{ needs.controller-image.outputs.image-digest }} + secrets: + registry-username: ${{ secrets.QUAY_USERNAME }} + registry-password: ${{ secrets.QUAY_ROBOT_TOKEN }} plugin-image-provenance: - needs: - - plugin-image - permissions: - actions: read # for detecting the Github Actions environment. - id-token: write # for creating OIDC tokens for signing. - packages: write # for uploading attestations. (https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#known-issues) - # Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator - uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.10.0 - with: - image: quay.io/argoproj/kubectl-argo-rollouts - digest: ${{ needs.plugin-image.outputs.image-digest }} - secrets: - registry-username: ${{ secrets.QUAY_USERNAME }} - registry-password: ${{ secrets.QUAY_ROBOT_TOKEN }} - + needs: + - plugin-image + permissions: + actions: read # for detecting the Github Actions environment. + id-token: write # for creating OIDC tokens for signing. + packages: write # for uploading attestations. (https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#known-issues) + # Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator + uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.10.0 + with: + image: quay.io/argoproj/kubectl-argo-rollouts + digest: ${{ needs.plugin-image.outputs.image-digest }} + secrets: + registry-username: ${{ secrets.QUAY_USERNAME }} + registry-password: ${{ secrets.QUAY_ROBOT_TOKEN }} release-artifacts: permissions: - contents: write # for softprops/action-gh-release to create GitHub release + contents: write # for softprops/action-gh-release to create GitHub release runs-on: ubuntu-latest outputs: hashes: ${{ steps.hash.outputs.hashes }} @@ -132,7 +131,6 @@ jobs: run: | echo "hashes=$(sha256sum ./dist/kubectl-argo-rollouts-* ./manifests/*.yaml | base64 -w0)" >> "$GITHUB_OUTPUT" - release-artifacts-provenance: needs: - release-artifacts @@ -143,8 +141,8 @@ jobs: # Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.10.0 with: - base64-subjects: "${{ needs.release-artifacts.outputs.hashes }}" - provenance-name: "argo-rollouts.intoto.jsonl" + base64-subjects: '${{ needs.release-artifacts.outputs.hashes }}' + provenance-name: 'argo-rollouts.intoto.jsonl' upload-assets: true draft-release: true @@ -183,7 +181,7 @@ jobs: SIGS_BOM_VERSION: v0.2.1 # comma delimited list of project relative folders to inspect for package # managers (gomod, yarn, npm). - PROJECT_FOLDERS: ".,./ui" + PROJECT_FOLDERS: '.,./ui' # full qualified name of the container image to be inspected CONTAINER_IMAGE: quay.io/argoproj/argo-rollouts:${{ github.event.inputs.tag }} diff --git a/Dockerfile b/Dockerfile index 4998a43454..f1f64b0a80 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ # Initial stage which pulls prepares build dependencies and CLI tooling we need for our final image # Also used as the image in CI jobs so needs all dependencies #################################################################################################### -FROM --platform=$BUILDPLATFORM golang:1.21 as builder +FROM --platform=$BUILDPLATFORM golang:1.22 as builder RUN apt-get update && apt-get install -y \ wget \ @@ -40,7 +40,7 @@ RUN NODE_ENV='production' yarn build #################################################################################################### # Rollout Controller Build stage which performs the actual build of argo-rollouts binaries #################################################################################################### -FROM --platform=$BUILDPLATFORM golang:1.21 as argo-rollouts-build +FROM --platform=$BUILDPLATFORM golang:1.22 as argo-rollouts-build WORKDIR /go/src/github.com/argoproj/argo-rollouts diff --git a/Makefile b/Makefile index a17bf33676..fd5736aa15 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,9 @@ E2E_PARALLEL ?= 1 E2E_WAIT_TIMEOUT ?= 120 GOPATH ?= $(shell go env GOPATH) +# Global toolchain configuration +NODE_OPTIONS="" + override LDFLAGS += \ -X ${PACKAGE}/utils/version.version=${VERSION} \ -X ${PACKAGE}/utils/version.buildDate=${BUILD_DATE} \ diff --git a/go.mod b/go.mod index 525d3bb563..936c58110d 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,8 @@ module github.com/argoproj/argo-rollouts -go 1.21 +go 1.22 -toolchain go1.21.8 +toolchain go1.22.2 require ( github.com/antonmedv/expr v1.15.5 diff --git a/hack/installers/install-codegen-go-tools.sh b/hack/installers/install-codegen-go-tools.sh index 9630fd615b..501cb535e3 100755 --- a/hack/installers/install-codegen-go-tools.sh +++ b/hack/installers/install-codegen-go-tools.sh @@ -45,13 +45,13 @@ go_mod_install k8s.io/code-generator/cmd/lister-gen go_mod_install k8s.io/kube-openapi/cmd/openapi-gen # controller-gen is run by ./hack/gen-crd-spec to generate the CRDs -go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.13.0 +go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.14.0 # swagger cli is used to generate swagger docs go install github.com/go-swagger/go-swagger/cmd/swagger@v0.30.5 # goimports is used to auto-format generated code -go install golang.org/x/tools/cmd/goimports@v0.11.0 +go install golang.org/x/tools/cmd/goimports@v0.20.0 # mockery is used for generating mock -go install github.com/vektra/mockery/v2@v2.32.0 +go install github.com/vektra/mockery/v2@v2.42.2 diff --git a/hack/installers/install-dev-tools.sh b/hack/installers/install-dev-tools.sh index 16ead66083..89a88deed0 100755 --- a/hack/installers/install-dev-tools.sh +++ b/hack/installers/install-dev-tools.sh @@ -7,7 +7,7 @@ PATH="${DIST_PATH}:${PATH}" mkdir -p ${DIST_PATH} -gotestsum_version=1.10.1 +gotestsum_version=1.11.0 OS=$(go env GOOS) ARCH=$(go env GOARCH) diff --git a/hack/installers/install-protoc.sh b/hack/installers/install-protoc.sh index 1f3dd8e7bc..1c557be08f 100755 --- a/hack/installers/install-protoc.sh +++ b/hack/installers/install-protoc.sh @@ -5,7 +5,7 @@ PROJECT_ROOT=$(cd $(dirname ${BASH_SOURCE})/../..; pwd) DIST_PATH="${PROJECT_ROOT}/dist" PATH="${DIST_PATH}:${PATH}" -protoc_version=3.17.3 +protoc_version=26.1 OS=$(go env GOOS) ARCH=$(go env GOARCH) diff --git a/hack/swagger-codegen.sh b/hack/swagger-codegen.sh index 9ba2cf6634..96c1728f0c 100755 --- a/hack/swagger-codegen.sh +++ b/hack/swagger-codegen.sh @@ -1,9 +1,9 @@ #!/bin/bash -export SWAGGER_CODEGEN_VERSION=3.0.25 +export SWAGGER_CODEGEN_VERSION=3.0.54 PROJECT_ROOT=$(cd $(dirname ${BASH_SOURCE})/..; pwd) test -f "$PROJECT_ROOT/dist/swagger-codegen-cli-${SWAGGER_CODEGEN_VERSION}.jar" || \ curl https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/${SWAGGER_CODEGEN_VERSION}/swagger-codegen-cli-${SWAGGER_CODEGEN_VERSION}.jar -o "$PROJECT_ROOT/dist/swagger-codegen-cli-${SWAGGER_CODEGEN_VERSION}.jar" -docker run --rm -v $PROJECT_ROOT:/src -w /src/ui -t maven:3-jdk-8 java -jar /src/dist/swagger-codegen-cli-${SWAGGER_CODEGEN_VERSION}.jar $@ \ No newline at end of file +docker run --rm -v "$PROJECT_ROOT:/src" -w /src/ui -t maven:3-jdk-11-slim java -jar /src/dist/swagger-codegen-cli-${SWAGGER_CODEGEN_VERSION}.jar "$@" diff --git a/manifests/crds/analysis-run-crd.yaml b/manifests/crds/analysis-run-crd.yaml index c0199f2de2..c8088911b6 100644 --- a/manifests/crds/analysis-run-crd.yaml +++ b/manifests/crds/analysis-run-crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: analysisruns.argoproj.io spec: group: argoproj.io diff --git a/manifests/crds/analysis-template-crd.yaml b/manifests/crds/analysis-template-crd.yaml index aaf34277bd..3cd6ec81a4 100644 --- a/manifests/crds/analysis-template-crd.yaml +++ b/manifests/crds/analysis-template-crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: analysistemplates.argoproj.io spec: group: argoproj.io diff --git a/manifests/crds/cluster-analysis-template-crd.yaml b/manifests/crds/cluster-analysis-template-crd.yaml index ed75ada312..ab4d887d23 100644 --- a/manifests/crds/cluster-analysis-template-crd.yaml +++ b/manifests/crds/cluster-analysis-template-crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: clusteranalysistemplates.argoproj.io spec: group: argoproj.io diff --git a/manifests/crds/experiment-crd.yaml b/manifests/crds/experiment-crd.yaml index e4287b51e0..0dae59cb3b 100644 --- a/manifests/crds/experiment-crd.yaml +++ b/manifests/crds/experiment-crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: experiments.argoproj.io spec: group: argoproj.io diff --git a/manifests/crds/rollout-crd.yaml b/manifests/crds/rollout-crd.yaml index cd244b8b98..04e187dbea 100755 --- a/manifests/crds/rollout-crd.yaml +++ b/manifests/crds/rollout-crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: rollouts.argoproj.io spec: group: argoproj.io diff --git a/manifests/install.yaml b/manifests/install.yaml index 1b5013ef4a..dfb8d18768 100755 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: analysisruns.argoproj.io spec: group: argoproj.io @@ -3297,7 +3297,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: analysistemplates.argoproj.io spec: group: argoproj.io @@ -6465,7 +6465,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: clusteranalysistemplates.argoproj.io spec: group: argoproj.io @@ -9633,7 +9633,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: experiments.argoproj.io spec: group: argoproj.io @@ -12492,7 +12492,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: rollouts.argoproj.io spec: group: argoproj.io diff --git a/metricproviders/mocks/Provider.go b/metricproviders/mocks/Provider.go index 1e647a943d..b0fd342ec5 100644 --- a/metricproviders/mocks/Provider.go +++ b/metricproviders/mocks/Provider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.32.0. DO NOT EDIT. +// Code generated by mockery v2.42.2. DO NOT EDIT. package mocks @@ -16,6 +16,10 @@ type Provider struct { func (_m *Provider) GarbageCollect(_a0 *v1alpha1.AnalysisRun, _a1 v1alpha1.Metric, _a2 int) error { ret := _m.Called(_a0, _a1, _a2) + if len(ret) == 0 { + panic("no return value specified for GarbageCollect") + } + var r0 error if rf, ok := ret.Get(0).(func(*v1alpha1.AnalysisRun, v1alpha1.Metric, int) error); ok { r0 = rf(_a0, _a1, _a2) @@ -30,6 +34,10 @@ func (_m *Provider) GarbageCollect(_a0 *v1alpha1.AnalysisRun, _a1 v1alpha1.Metri func (_m *Provider) GetMetadata(_a0 v1alpha1.Metric) map[string]string { ret := _m.Called(_a0) + if len(ret) == 0 { + panic("no return value specified for GetMetadata") + } + var r0 map[string]string if rf, ok := ret.Get(0).(func(v1alpha1.Metric) map[string]string); ok { r0 = rf(_a0) @@ -46,6 +54,10 @@ func (_m *Provider) GetMetadata(_a0 v1alpha1.Metric) map[string]string { func (_m *Provider) Resume(_a0 *v1alpha1.AnalysisRun, _a1 v1alpha1.Metric, _a2 v1alpha1.Measurement) v1alpha1.Measurement { ret := _m.Called(_a0, _a1, _a2) + if len(ret) == 0 { + panic("no return value specified for Resume") + } + var r0 v1alpha1.Measurement if rf, ok := ret.Get(0).(func(*v1alpha1.AnalysisRun, v1alpha1.Metric, v1alpha1.Measurement) v1alpha1.Measurement); ok { r0 = rf(_a0, _a1, _a2) @@ -60,6 +72,10 @@ func (_m *Provider) Resume(_a0 *v1alpha1.AnalysisRun, _a1 v1alpha1.Metric, _a2 v func (_m *Provider) Run(_a0 *v1alpha1.AnalysisRun, _a1 v1alpha1.Metric) v1alpha1.Measurement { ret := _m.Called(_a0, _a1) + if len(ret) == 0 { + panic("no return value specified for Run") + } + var r0 v1alpha1.Measurement if rf, ok := ret.Get(0).(func(*v1alpha1.AnalysisRun, v1alpha1.Metric) v1alpha1.Measurement); ok { r0 = rf(_a0, _a1) @@ -74,6 +90,10 @@ func (_m *Provider) Run(_a0 *v1alpha1.AnalysisRun, _a1 v1alpha1.Metric) v1alpha1 func (_m *Provider) Terminate(_a0 *v1alpha1.AnalysisRun, _a1 v1alpha1.Metric, _a2 v1alpha1.Measurement) v1alpha1.Measurement { ret := _m.Called(_a0, _a1, _a2) + if len(ret) == 0 { + panic("no return value specified for Terminate") + } + var r0 v1alpha1.Measurement if rf, ok := ret.Get(0).(func(*v1alpha1.AnalysisRun, v1alpha1.Metric, v1alpha1.Measurement) v1alpha1.Measurement); ok { r0 = rf(_a0, _a1, _a2) @@ -88,6 +108,10 @@ func (_m *Provider) Terminate(_a0 *v1alpha1.AnalysisRun, _a1 v1alpha1.Metric, _a func (_m *Provider) Type() string { ret := _m.Called() + if len(ret) == 0 { + panic("no return value specified for Type") + } + var r0 string if rf, ok := ret.Get(0).(func() string); ok { r0 = rf() diff --git a/rollout/mocks/TrafficRoutingReconciler.go b/rollout/mocks/TrafficRoutingReconciler.go index c8c3a7cde8..ceabc90a3d 100644 --- a/rollout/mocks/TrafficRoutingReconciler.go +++ b/rollout/mocks/TrafficRoutingReconciler.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.32.0. DO NOT EDIT. +// Code generated by mockery v2.42.2. DO NOT EDIT. package mocks @@ -17,6 +17,10 @@ type TrafficRoutingReconciler struct { func (_m *TrafficRoutingReconciler) RemoveManagedRoutes() error { ret := _m.Called() + if len(ret) == 0 { + panic("no return value specified for RemoveManagedRoutes") + } + var r0 error if rf, ok := ret.Get(0).(func() error); ok { r0 = rf() @@ -31,6 +35,10 @@ func (_m *TrafficRoutingReconciler) RemoveManagedRoutes() error { func (_m *TrafficRoutingReconciler) SetHeaderRoute(setHeaderRoute *v1alpha1.SetHeaderRoute) error { ret := _m.Called(setHeaderRoute) + if len(ret) == 0 { + panic("no return value specified for SetHeaderRoute") + } + var r0 error if rf, ok := ret.Get(0).(func(*v1alpha1.SetHeaderRoute) error); ok { r0 = rf(setHeaderRoute) @@ -45,6 +53,10 @@ func (_m *TrafficRoutingReconciler) SetHeaderRoute(setHeaderRoute *v1alpha1.SetH func (_m *TrafficRoutingReconciler) SetMirrorRoute(setMirrorRoute *v1alpha1.SetMirrorRoute) error { ret := _m.Called(setMirrorRoute) + if len(ret) == 0 { + panic("no return value specified for SetMirrorRoute") + } + var r0 error if rf, ok := ret.Get(0).(func(*v1alpha1.SetMirrorRoute) error); ok { r0 = rf(setMirrorRoute) @@ -66,6 +78,10 @@ func (_m *TrafficRoutingReconciler) SetWeight(desiredWeight int32, additionalDes _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for SetWeight") + } + var r0 error if rf, ok := ret.Get(0).(func(int32, ...v1alpha1.WeightDestination) error); ok { r0 = rf(desiredWeight, additionalDestinations...) @@ -80,6 +96,10 @@ func (_m *TrafficRoutingReconciler) SetWeight(desiredWeight int32, additionalDes func (_m *TrafficRoutingReconciler) Type() string { ret := _m.Called() + if len(ret) == 0 { + panic("no return value specified for Type") + } + var r0 string if rf, ok := ret.Get(0).(func() string); ok { r0 = rf() @@ -101,6 +121,10 @@ func (_m *TrafficRoutingReconciler) UpdateHash(canaryHash string, stableHash str _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for UpdateHash") + } + var r0 error if rf, ok := ret.Get(0).(func(string, string, ...v1alpha1.WeightDestination) error); ok { r0 = rf(canaryHash, stableHash, additionalDestinations...) @@ -122,6 +146,10 @@ func (_m *TrafficRoutingReconciler) VerifyWeight(desiredWeight int32, additional _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for VerifyWeight") + } + var r0 *bool var r1 error if rf, ok := ret.Get(0).(func(int32, ...v1alpha1.WeightDestination) (*bool, error)); ok { diff --git a/ui/src/models/rollout/generated/.swagger-codegen/VERSION b/ui/src/models/rollout/generated/.swagger-codegen/VERSION index 9b77657dc7..248908e600 100644 --- a/ui/src/models/rollout/generated/.swagger-codegen/VERSION +++ b/ui/src/models/rollout/generated/.swagger-codegen/VERSION @@ -1 +1 @@ -3.0.25 \ No newline at end of file +3.0.54 \ No newline at end of file diff --git a/ui/src/models/rollout/generated/api.ts b/ui/src/models/rollout/generated/api.ts index 114f705aee..6d3fddd554 100755 --- a/ui/src/models/rollout/generated/api.ts +++ b/ui/src/models/rollout/generated/api.ts @@ -13,7 +13,7 @@ */ import * as url from "url"; -import * as portableFetch from "portable-fetch"; +import * as isomorphicFetch from "isomorphic-fetch"; import { Configuration } from "./configuration"; const BASE_PATH = "/".replace(/\/+$/, ""); @@ -56,13 +56,13 @@ export interface FetchArgs { export class BaseAPI { protected configuration: Configuration; - constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected fetch: FetchAPI = portableFetch) { + constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected fetch: FetchAPI = isomorphicFetch) { if (configuration) { this.configuration = configuration; this.basePath = configuration.basePath || this.basePath; } } -}; +} /** * @@ -71,7 +71,7 @@ export class BaseAPI { * @extends {Error} */ export class RequiredError extends Error { - name: "RequiredError" + name = "RequiredError" constructor(public field: string, msg?: string) { super(msg); } @@ -7883,7 +7883,7 @@ export const RolloutServiceApiFetchParamCreator = function (configuration?: Conf localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query); // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; + localVarUrlObj.search = null; localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers); const needsSerialization = ("RolloutAbortRolloutRequest" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || ""); @@ -7907,7 +7907,7 @@ export const RolloutServiceApiFetchParamCreator = function (configuration?: Conf localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query); // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; + localVarUrlObj.search = null; localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers); return { @@ -7941,7 +7941,7 @@ export const RolloutServiceApiFetchParamCreator = function (configuration?: Conf localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query); // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; + localVarUrlObj.search = null; localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers); return { @@ -7969,7 +7969,7 @@ export const RolloutServiceApiFetchParamCreator = function (configuration?: Conf localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query); // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; + localVarUrlObj.search = null; localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers); return { @@ -8010,7 +8010,7 @@ export const RolloutServiceApiFetchParamCreator = function (configuration?: Conf localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query); // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; + localVarUrlObj.search = null; localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers); const needsSerialization = ("RolloutPromoteRolloutRequest" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || ""); @@ -8053,7 +8053,7 @@ export const RolloutServiceApiFetchParamCreator = function (configuration?: Conf localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query); // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; + localVarUrlObj.search = null; localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers); const needsSerialization = ("RolloutRestartRolloutRequest" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || ""); @@ -8096,7 +8096,7 @@ export const RolloutServiceApiFetchParamCreator = function (configuration?: Conf localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query); // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; + localVarUrlObj.search = null; localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers); const needsSerialization = ("RolloutRetryRolloutRequest" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || ""); @@ -8157,7 +8157,7 @@ export const RolloutServiceApiFetchParamCreator = function (configuration?: Conf localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query); // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; + localVarUrlObj.search = null; localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers); const needsSerialization = ("RolloutSetImageRequest" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || ""); @@ -8206,7 +8206,7 @@ export const RolloutServiceApiFetchParamCreator = function (configuration?: Conf localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query); // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; + localVarUrlObj.search = null; localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers); const needsSerialization = ("RolloutUndoRolloutRequest" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || ""); @@ -8230,7 +8230,7 @@ export const RolloutServiceApiFetchParamCreator = function (configuration?: Conf localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query); // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; + localVarUrlObj.search = null; localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers); return { @@ -8264,7 +8264,7 @@ export const RolloutServiceApiFetchParamCreator = function (configuration?: Conf localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query); // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; + localVarUrlObj.search = null; localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers); return { @@ -8292,7 +8292,7 @@ export const RolloutServiceApiFetchParamCreator = function (configuration?: Conf localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query); // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; + localVarUrlObj.search = null; localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers); return { @@ -8319,7 +8319,7 @@ export const RolloutServiceApiFp = function(configuration?: Configuration) { */ rolloutServiceAbortRollout(body: RolloutAbortRolloutRequest, namespace: string, name: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { const localVarFetchArgs = RolloutServiceApiFetchParamCreator(configuration).rolloutServiceAbortRollout(body, namespace, name, options); - return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => { + return (fetch: FetchAPI = isomorphicFetch, basePath: string = BASE_PATH) => { return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { if (response.status >= 200 && response.status < 300) { return response.json(); @@ -8336,7 +8336,7 @@ export const RolloutServiceApiFp = function(configuration?: Configuration) { */ rolloutServiceGetNamespace(options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { const localVarFetchArgs = RolloutServiceApiFetchParamCreator(configuration).rolloutServiceGetNamespace(options); - return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => { + return (fetch: FetchAPI = isomorphicFetch, basePath: string = BASE_PATH) => { return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { if (response.status >= 200 && response.status < 300) { return response.json(); @@ -8355,7 +8355,7 @@ export const RolloutServiceApiFp = function(configuration?: Configuration) { */ rolloutServiceGetRolloutInfo(namespace: string, name: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { const localVarFetchArgs = RolloutServiceApiFetchParamCreator(configuration).rolloutServiceGetRolloutInfo(namespace, name, options); - return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => { + return (fetch: FetchAPI = isomorphicFetch, basePath: string = BASE_PATH) => { return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { if (response.status >= 200 && response.status < 300) { return response.json(); @@ -8373,7 +8373,7 @@ export const RolloutServiceApiFp = function(configuration?: Configuration) { */ rolloutServiceListRolloutInfos(namespace: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { const localVarFetchArgs = RolloutServiceApiFetchParamCreator(configuration).rolloutServiceListRolloutInfos(namespace, options); - return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => { + return (fetch: FetchAPI = isomorphicFetch, basePath: string = BASE_PATH) => { return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { if (response.status >= 200 && response.status < 300) { return response.json(); @@ -8393,7 +8393,7 @@ export const RolloutServiceApiFp = function(configuration?: Configuration) { */ rolloutServicePromoteRollout(body: RolloutPromoteRolloutRequest, namespace: string, name: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { const localVarFetchArgs = RolloutServiceApiFetchParamCreator(configuration).rolloutServicePromoteRollout(body, namespace, name, options); - return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => { + return (fetch: FetchAPI = isomorphicFetch, basePath: string = BASE_PATH) => { return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { if (response.status >= 200 && response.status < 300) { return response.json(); @@ -8413,7 +8413,7 @@ export const RolloutServiceApiFp = function(configuration?: Configuration) { */ rolloutServiceRestartRollout(body: RolloutRestartRolloutRequest, namespace: string, name: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { const localVarFetchArgs = RolloutServiceApiFetchParamCreator(configuration).rolloutServiceRestartRollout(body, namespace, name, options); - return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => { + return (fetch: FetchAPI = isomorphicFetch, basePath: string = BASE_PATH) => { return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { if (response.status >= 200 && response.status < 300) { return response.json(); @@ -8433,7 +8433,7 @@ export const RolloutServiceApiFp = function(configuration?: Configuration) { */ rolloutServiceRetryRollout(body: RolloutRetryRolloutRequest, namespace: string, name: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { const localVarFetchArgs = RolloutServiceApiFetchParamCreator(configuration).rolloutServiceRetryRollout(body, namespace, name, options); - return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => { + return (fetch: FetchAPI = isomorphicFetch, basePath: string = BASE_PATH) => { return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { if (response.status >= 200 && response.status < 300) { return response.json(); @@ -8456,7 +8456,7 @@ export const RolloutServiceApiFp = function(configuration?: Configuration) { */ rolloutServiceSetRolloutImage(body: RolloutSetImageRequest, namespace: string, rollout: string, container: string, image: string, tag: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { const localVarFetchArgs = RolloutServiceApiFetchParamCreator(configuration).rolloutServiceSetRolloutImage(body, namespace, rollout, container, image, tag, options); - return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => { + return (fetch: FetchAPI = isomorphicFetch, basePath: string = BASE_PATH) => { return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { if (response.status >= 200 && response.status < 300) { return response.json(); @@ -8477,7 +8477,7 @@ export const RolloutServiceApiFp = function(configuration?: Configuration) { */ rolloutServiceUndoRollout(body: RolloutUndoRolloutRequest, namespace: string, rollout: string, revision: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { const localVarFetchArgs = RolloutServiceApiFetchParamCreator(configuration).rolloutServiceUndoRollout(body, namespace, rollout, revision, options); - return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => { + return (fetch: FetchAPI = isomorphicFetch, basePath: string = BASE_PATH) => { return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { if (response.status >= 200 && response.status < 300) { return response.json(); @@ -8494,7 +8494,7 @@ export const RolloutServiceApiFp = function(configuration?: Configuration) { */ rolloutServiceVersion(options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { const localVarFetchArgs = RolloutServiceApiFetchParamCreator(configuration).rolloutServiceVersion(options); - return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => { + return (fetch: FetchAPI = isomorphicFetch, basePath: string = BASE_PATH) => { return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { if (response.status >= 200 && response.status < 300) { return response.json(); @@ -8513,7 +8513,7 @@ export const RolloutServiceApiFp = function(configuration?: Configuration) { */ rolloutServiceWatchRolloutInfo(namespace: string, name: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { const localVarFetchArgs = RolloutServiceApiFetchParamCreator(configuration).rolloutServiceWatchRolloutInfo(namespace, name, options); - return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => { + return (fetch: FetchAPI = isomorphicFetch, basePath: string = BASE_PATH) => { return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { if (response.status >= 200 && response.status < 300) { return response.json(); @@ -8531,7 +8531,7 @@ export const RolloutServiceApiFp = function(configuration?: Configuration) { */ rolloutServiceWatchRolloutInfos(namespace: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { const localVarFetchArgs = RolloutServiceApiFetchParamCreator(configuration).rolloutServiceWatchRolloutInfos(namespace, options); - return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => { + return (fetch: FetchAPI = isomorphicFetch, basePath: string = BASE_PATH) => { return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { if (response.status >= 200 && response.status < 300) { return response.json(); diff --git a/ui/src/models/rollout/generated/custom.d.ts b/ui/src/models/rollout/generated/custom.d.ts index 9a5ceb3588..5d917c1d30 100644 --- a/ui/src/models/rollout/generated/custom.d.ts +++ b/ui/src/models/rollout/generated/custom.d.ts @@ -1,2 +1,2 @@ -declare module 'portable-fetch'; +declare module 'isomorphic-fetch'; declare module 'url'; \ No newline at end of file diff --git a/utils/aws/mocks/ELBv2APIClient.go b/utils/aws/mocks/ELBv2APIClient.go index 5e9f9dc380..f004df4702 100644 --- a/utils/aws/mocks/ELBv2APIClient.go +++ b/utils/aws/mocks/ELBv2APIClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.32.0. DO NOT EDIT. +// Code generated by mockery v2.42.2. DO NOT EDIT. package mocks @@ -25,6 +25,10 @@ func (_m *ELBv2APIClient) DescribeListeners(_a0 context.Context, _a1 *elasticloa _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for DescribeListeners") + } + var r0 *elasticloadbalancingv2.DescribeListenersOutput var r1 error if rf, ok := ret.Get(0).(func(context.Context, *elasticloadbalancingv2.DescribeListenersInput, ...func(*elasticloadbalancingv2.Options)) (*elasticloadbalancingv2.DescribeListenersOutput, error)); ok { @@ -58,6 +62,10 @@ func (_m *ELBv2APIClient) DescribeLoadBalancers(_a0 context.Context, _a1 *elasti _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for DescribeLoadBalancers") + } + var r0 *elasticloadbalancingv2.DescribeLoadBalancersOutput var r1 error if rf, ok := ret.Get(0).(func(context.Context, *elasticloadbalancingv2.DescribeLoadBalancersInput, ...func(*elasticloadbalancingv2.Options)) (*elasticloadbalancingv2.DescribeLoadBalancersOutput, error)); ok { @@ -91,6 +99,10 @@ func (_m *ELBv2APIClient) DescribeRules(ctx context.Context, params *elasticload _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for DescribeRules") + } + var r0 *elasticloadbalancingv2.DescribeRulesOutput var r1 error if rf, ok := ret.Get(0).(func(context.Context, *elasticloadbalancingv2.DescribeRulesInput, ...func(*elasticloadbalancingv2.Options)) (*elasticloadbalancingv2.DescribeRulesOutput, error)); ok { @@ -124,6 +136,10 @@ func (_m *ELBv2APIClient) DescribeTags(ctx context.Context, params *elasticloadb _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for DescribeTags") + } + var r0 *elasticloadbalancingv2.DescribeTagsOutput var r1 error if rf, ok := ret.Get(0).(func(context.Context, *elasticloadbalancingv2.DescribeTagsInput, ...func(*elasticloadbalancingv2.Options)) (*elasticloadbalancingv2.DescribeTagsOutput, error)); ok { @@ -157,6 +173,10 @@ func (_m *ELBv2APIClient) DescribeTargetGroups(_a0 context.Context, _a1 *elastic _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for DescribeTargetGroups") + } + var r0 *elasticloadbalancingv2.DescribeTargetGroupsOutput var r1 error if rf, ok := ret.Get(0).(func(context.Context, *elasticloadbalancingv2.DescribeTargetGroupsInput, ...func(*elasticloadbalancingv2.Options)) (*elasticloadbalancingv2.DescribeTargetGroupsOutput, error)); ok { @@ -190,6 +210,10 @@ func (_m *ELBv2APIClient) DescribeTargetHealth(ctx context.Context, params *elas _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for DescribeTargetHealth") + } + var r0 *elasticloadbalancingv2.DescribeTargetHealthOutput var r1 error if rf, ok := ret.Get(0).(func(context.Context, *elasticloadbalancingv2.DescribeTargetHealthInput, ...func(*elasticloadbalancingv2.Options)) (*elasticloadbalancingv2.DescribeTargetHealthOutput, error)); ok { From 451e27fd8e2638f22f4f076f1b80d1cfe038cc22 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Apr 2024 03:36:31 +0200 Subject: [PATCH 014/219] chore(deps): bump codecov/codecov-action from 4.2.0 to 4.3.0 (#3517) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.2.0 to 4.3.0. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.2.0...v4.3.0) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/go.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 77d31d7bb3..0448d7b519 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -90,7 +90,7 @@ jobs: path: coverage.out - name: Upload code coverage information to codecov.io - uses: codecov/codecov-action@v4.2.0 + uses: codecov/codecov-action@v4.3.0 with: file: coverage.out From e90a60189e4894ac59557be177258f9db113b7fe Mon Sep 17 00:00:00 2001 From: dhawani Date: Wed, 10 Apr 2024 19:06:02 +0530 Subject: [PATCH 015/219] fix(controller): Corrects the logic of comparing sha256 has. Fixes #3519 (#3520) Fixed sha256 algo Signed-off-by: dhawani Signed-off-by: dhawani Co-authored-by: dhawani --- utils/plugin/downloader.go | 9 +++++++-- utils/plugin/downloader_test.go | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/utils/plugin/downloader.go b/utils/plugin/downloader.go index b8b1ad6263..a67dcb38e5 100644 --- a/utils/plugin/downloader.go +++ b/utils/plugin/downloader.go @@ -43,12 +43,17 @@ func checkPluginExists(pluginLocation string) error { } func checkShaOfPlugin(pluginLocation string, expectedSha256 string) (bool, error) { - hasher := sha256.New() fileBytes, err := os.ReadFile(pluginLocation) if err != nil { return false, fmt.Errorf("failed to read file %s: %w", pluginLocation, err) } - fileSha256 := fmt.Sprintf("%x", hasher.Sum(fileBytes)) + var fileSha256 string + if len(expectedSha256) == 64 { + fileSha256 = fmt.Sprintf("%x", sha256.Sum256(fileBytes)) + } else { + hasher := sha256.New() + fileSha256 = fmt.Sprintf("%x", hasher.Sum(fileBytes)) + } match := fileSha256 == expectedSha256 if !match { log.Printf("expected sha256: %s, actual sha256: %s, of downloaded metric plugin (%s)", expectedSha256, fileSha256, pluginLocation) diff --git a/utils/plugin/downloader_test.go b/utils/plugin/downloader_test.go index 75dc4cae71..ab14be3385 100644 --- a/utils/plugin/downloader_test.go +++ b/utils/plugin/downloader_test.go @@ -47,7 +47,7 @@ func TestPlugin(t *testing.T) { Name: "argo-rollouts-config", Namespace: "argo-rollouts", }, - Data: map[string]string{"metricProviderPlugins": "\n - name: argoproj-labs/http\n location: https://test/plugin\n - name: argoproj-labs/http-sha\n location: https://test/plugin\n sha256: 74657374e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}, + Data: map[string]string{"metricProviderPlugins": "\n - name: argoproj-labs/http\n location: https://test/plugin\n - name: argoproj-labs/http-sha\n location: https://test/plugin\n sha256: 74657374e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n - name: argoproj-labs/http-sha-correct\n location: https://test/plugin\n sha256: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"}, } client := fake.NewSimpleClientset(cm) From 1856c3c3965900cced132e60f111cdac57333d00 Mon Sep 17 00:00:00 2001 From: OpenGuidou <73480729+OpenGuidou@users.noreply.github.com> Date: Thu, 18 Apr 2024 17:09:55 +0200 Subject: [PATCH 016/219] docs: Add Amadeus to Users.md (#3527) Signed-off-by: Guillaume Doussin --- USERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/USERS.md b/USERS.md index fc8217db6a..ffdb01aaf1 100644 --- a/USERS.md +++ b/USERS.md @@ -5,6 +5,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit 1. [ADP](https://www.adp.com) 1. [Akuity](https://akuity.io/) 1. [Alibaba Group](https://www.alibabagroup.com/) +1. [Amadeus IT Group](https://amadeus.com/) 1. [Ambassador Labs](https://www.getambassador.io) 1. [Ant Group](https://www.antgroup.com/) 1. [Bucketplace](https://www.bucketplace.co.kr/) From e8ab42be51ef574c26aaea7db06070da8a206483 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 19:45:30 +0200 Subject: [PATCH 017/219] chore(deps): bump slsa-framework/slsa-github-generator from 1.10.0 to 2.0.0 (#3537) chore(deps): bump slsa-framework/slsa-github-generator Bumps [slsa-framework/slsa-github-generator](https://github.com/slsa-framework/slsa-github-generator) from 1.10.0 to 2.0.0. - [Release notes](https://github.com/slsa-framework/slsa-github-generator/releases) - [Changelog](https://github.com/slsa-framework/slsa-github-generator/blob/main/CHANGELOG.md) - [Commits](https://github.com/slsa-framework/slsa-github-generator/compare/v1.10.0...v2.0.0) --- updated-dependencies: - dependency-name: slsa-framework/slsa-github-generator dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 0f25b77c4d..6e557c85bb 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -51,7 +51,7 @@ jobs: id-token: write # for creating OIDC tokens for signing. packages: write # for uploading attestations. (https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#known-issues) # Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator - uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.10.0 + uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v2.0.0 with: image: quay.io/argoproj/argo-rollouts digest: ${{ needs.controller-image.outputs.image-digest }} @@ -67,7 +67,7 @@ jobs: id-token: write # for creating OIDC tokens for signing. packages: write # for uploading attestations. (https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#known-issues) # Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator - uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.10.0 + uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v2.0.0 with: image: quay.io/argoproj/kubectl-argo-rollouts digest: ${{ needs.plugin-image.outputs.image-digest }} @@ -139,7 +139,7 @@ jobs: id-token: write # Needed for provenance signing and ID contents: write # Needed for release uploads # Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator - uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.10.0 + uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.0.0 with: base64-subjects: '${{ needs.release-artifacts.outputs.hashes }}' provenance-name: 'argo-rollouts.intoto.jsonl' From e63c221dd90d7742fe510324b636d22691d380be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 19:47:07 +0200 Subject: [PATCH 018/219] chore(deps): bump sigstore/cosign-installer from 3.4.0 to 3.5.0 (#3522) Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.4.0 to 3.5.0. - [Release notes](https://github.com/sigstore/cosign-installer/releases) - [Commits](https://github.com/sigstore/cosign-installer/compare/e1523de7571e31dbe865fd2e80c5c7c23ae71eb4...59acb6260d9c0ba8f4a2f9d9b48431a222b68e20) --- updated-dependencies: - dependency-name: sigstore/cosign-installer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 6589d35e78..e6a3012d5e 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -74,7 +74,7 @@ jobs: go-version: ${{ inputs.go-version }} - name: Install cosign - uses: sigstore/cosign-installer@e1523de7571e31dbe865fd2e80c5c7c23ae71eb4 # v3.4.0 + uses: sigstore/cosign-installer@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20 # v3.5.0 with: cosign-release: 'v2.2.0' diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 6e557c85bb..a008a85c7b 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -168,7 +168,7 @@ jobs: go-version: ${{ env.GOLANG_VERSION }} - name: Install cosign - uses: sigstore/cosign-installer@e1523de7571e31dbe865fd2e80c5c7c23ae71eb4 # v3.4.0 + uses: sigstore/cosign-installer@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20 # v3.5.0 with: cosign-release: 'v2.2.0' From 2198fcce465a78a626c36f2b05bfef50a55b5994 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:48:50 -0500 Subject: [PATCH 019/219] chore(deps): bump golangci/golangci-lint-action from 4 to 5 (#3540) Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 4 to 5. - [Release notes](https://github.com/golangci/golangci-lint-action/releases) - [Commits](https://github.com/golangci/golangci-lint-action/compare/v4...v5) --- updated-dependencies: - dependency-name: golangci/golangci-lint-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/go.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 0448d7b519..86b547853b 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -42,7 +42,7 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - name: Run golangci-lint - uses: golangci/golangci-lint-action@v4 + uses: golangci/golangci-lint-action@v5 with: version: v1.57.2 args: --timeout 6m From 63fd6e300e8d48d267cfd531b54a68181f1059a1 Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Mon, 29 Apr 2024 07:54:18 -0700 Subject: [PATCH 020/219] docs: provide recommendation for strategies (#3531) * docs: provide recommendation for strategies Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> * docs: traffic manager clarifications Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> * docs: explain canary with/out traffic manager Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> * docs: add 3 columns on the comparison table Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --------- Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --- docs/concepts.md | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/docs/concepts.md b/docs/concepts.md index 26cd7f5cef..af85d7b4e2 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -46,4 +46,33 @@ A Canary deployment exposes a subset of users to the new version of the applicat [![How Canary deployments work](concepts-assets/canary-deployments.png)](concepts-assets/canary-deployments.png) The picture above shows a canary with two stages (10% and 33% of traffic goes to new version) but this is just an example. With Argo Rollouts you can define the exact number of stages -and percentages of traffic according to your use case. \ No newline at end of file +and percentages of traffic according to your use case. + +## Which strategy to choose + +In general Blue/Green is the easier strategy to start with, but also the more limited. We recommend you start with Blue/Green deployments first and as you gain confidence for your metrics and applications switch to Canaries. + +You also need to examine if your application can handle canaries or not. + +* Blue/Green always works because only one application is active at a time. Not all applications can have different versions running in parallel at the same time (which is what canaries are doing). This can be a showstopper for adopting canary deployments especially for legacy applications. +* Blue/Green is simpler because you can get their full value WITHOUT a traffic manager. While canaries can also work without a traffic manager, most of their advanced features assume a fine-grained way to control traffic. If you don't have a traffic manager, then you can easily get the full value +of blue/green deployments but only the basic capabilities of canaries. +* Blue/Green also works with services that use queues and databases (workers that fetch tasks). Argo Rollouts doesn't control traffic flow for +connections it doesn't understand (i.e. binary/queue channels). + +Here is a summary table for the possible approaches. + +| | Blue/Green | Basic Canary | Canary with Traffic manager | +|--------------------------:|:-------------------------:|:--------------------------:| :-----------------------------:| +| Adoption Complexity | Low | Medium | High | +| Flexibility | Low | High | Maximum | +| Needs traffic provider | No | No | Yes | +| Works with queue workers | Yes | No | No | +| Works with shared/locked resources | Yes | No | No | +| Traffic switch | All or nothing | Gradual percentage | Gradual percentage | +| Traffic control | 0% or 100% | coarse grained | fine grained | +| Traffic depends on | deployment state | number of canary pods | Any split option is possible | +| Advanced routing scenarios | No | No | Yes | +| Failure Blast Radius | Massive impact | Low impact | Low impact | + +Note that that traffic manager can be any compatible Service Mesh or Ingress Controller or Gateway API implementation (via a plugin). \ No newline at end of file From 9f0041922c9cd36f5bd77d33f4d9d1a5a4702241 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20L=C3=B3pez?= Date: Mon, 29 Apr 2024 16:55:20 +0200 Subject: [PATCH 021/219] feat(dashboard): change the color of the current rollout step (#3526) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I feel that having the current (running) step in a orange color is misleading, as orange usually means warning. This commit changes the color to the `$argo-running-color`. Signed-off-by: Alejandro López Sánchez --- ui/src/app/components/rollout/rollout.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/src/app/components/rollout/rollout.scss b/ui/src/app/components/rollout/rollout.scss index ad6247c478..6ee3b71099 100644 --- a/ui/src/app/components/rollout/rollout.scss +++ b/ui/src/app/components/rollout/rollout.scss @@ -7,7 +7,7 @@ background: $argo-color-gray-1; border-radius: 5px; - + &__header { display: flex; align-items: center; @@ -53,11 +53,11 @@ } &--current { - border: 2px solid $sherbert; + border: 2px solid $argo-running-color; } &--current:hover { - border: 2px solid $sherbert; + border: 2px solid $argo-running-color; } &-title { From 4b0289bf4d8751138bc63c244d7284c64960ce0a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:55:41 -0500 Subject: [PATCH 022/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.37.0 to 1.38.0 (#3525) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.37.0 to 1.38.0. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/service/s3/v1.38.0/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.37.0...service/s3/v1.38.0) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 936c58110d..0b87dfd9cb 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.26.1 github.com/aws/aws-sdk-go-v2/config v1.27.11 - github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.37.0 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5 github.com/aws/smithy-go v1.20.2 github.com/blang/semver v3.5.1+incompatible diff --git a/go.sum b/go.sum index 735664be8f..569c37fd8c 100644 --- a/go.sum +++ b/go.sum @@ -112,8 +112,8 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 h1:PG1F3OD1szkuQPzDw3C github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5/go.mod h1:jU1li6RFryMz+so64PpKtudI+QzbKoIEivqdf6LNpOc= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.37.0 h1:sGGUnU/pUSzjrcCvQgN2pEc3aTQILyK2rRsWVY5CSt0= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.37.0/go.mod h1:U12sr6Lt14X96f16t+rR52+2BdqtydwN7DjEEHRMjO0= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 h1:vAfGwYFCcPDS9Bg7ckfMBer6olJLOHsOAVoKWpPIirs= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0/go.mod h1:U12sr6Lt14X96f16t+rR52+2BdqtydwN7DjEEHRMjO0= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5 h1:/x2u/TOx+n17U+gz98TOw1HKJom0EOqrhL4SjrHr0cQ= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5/go.mod h1:e1McVqsud0JOERidvppLEHnuCdh/X6MRyL5L0LseAUk= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= From 76e95cdb4d024f696345b229cb9cc354de2314e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 May 2024 13:49:29 -0500 Subject: [PATCH 023/219] chore(deps): bump actions/setup-go from 5.0.0 to 5.0.1 (#3552) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.0.0 to 5.0.1. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v5.0.0...v5.0.1) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/e2e.yaml | 2 +- .github/workflows/gh-pages.yaml | 2 +- .github/workflows/go.yml | 6 +++--- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 4bb16670e1..7b7b2c5300 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -46,7 +46,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go - uses: actions/setup-go@v5.0.0 + uses: actions/setup-go@v5.0.1 with: go-version: '1.22' - uses: actions/checkout@v4 diff --git a/.github/workflows/gh-pages.yaml b/.github/workflows/gh-pages.yaml index 8d11ebefab..e84c59d7ec 100644 --- a/.github/workflows/gh-pages.yaml +++ b/.github/workflows/gh-pages.yaml @@ -24,7 +24,7 @@ jobs: with: python-version: 3.x - name: Set up Go - uses: actions/setup-go@v5.0.0 + uses: actions/setup-go@v5.0.1 with: go-version: '1.22' - name: build diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 86b547853b..9fff17292c 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -36,7 +36,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go - uses: actions/setup-go@v5.0.0 + uses: actions/setup-go@v5.0.1 with: go-version: ${{ env.GOLANG_VERSION }} - name: Checkout code @@ -51,7 +51,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go - uses: actions/setup-go@v5.0.0 + uses: actions/setup-go@v5.0.1 with: go-version: ${{ env.GOLANG_VERSION }} id: go @@ -103,7 +103,7 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - name: Setup Golang - uses: actions/setup-go@v5.0.0 + uses: actions/setup-go@v5.0.1 with: go-version: ${{ env.GOLANG_VERSION }} # k8s codegen generates files into GOPATH location instead of the GitHub git checkout location diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index e6a3012d5e..b78d72a061 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -69,7 +69,7 @@ jobs: if: ${{ github.ref_type != 'tag'}} - name: Setup Golang - uses: actions/setup-go@v5.0.0 # v3.5.0 + uses: actions/setup-go@v5.0.1 # v3.5.0 with: go-version: ${{ inputs.go-version }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a008a85c7b..c9e2ca60b8 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -90,7 +90,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Golang - uses: actions/setup-go@v5.0.0 # v4.0.1 + uses: actions/setup-go@v5.0.1 # v4.0.1 with: go-version: ${{ env.GOLANG_VERSION }} @@ -163,7 +163,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Golang - uses: actions/setup-go@v5.0.0 # v4.0.0 + uses: actions/setup-go@v5.0.1 # v4.0.0 with: go-version: ${{ env.GOLANG_VERSION }} From 572f1f5d1aab80a519e5d768639ff2f4a2c0d7db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 May 2024 13:49:55 -0500 Subject: [PATCH 024/219] chore(deps): bump codecov/codecov-action from 4.3.0 to 4.3.1 (#3550) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.3.0 to 4.3.1. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.3.0...v4.3.1) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/go.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 9fff17292c..959ea6e835 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -90,7 +90,7 @@ jobs: path: coverage.out - name: Upload code coverage information to codecov.io - uses: codecov/codecov-action@v4.3.0 + uses: codecov/codecov-action@v4.3.1 with: file: coverage.out From 125fc3dfbaec922209e5005fd4721d663042d1f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 May 2024 13:50:11 -0500 Subject: [PATCH 025/219] chore(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.0 (#3548) Bumps google.golang.org/protobuf from 1.33.0 to 1.34.0. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0b87dfd9cb..20585676c7 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( golang.org/x/oauth2 v0.19.0 google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de google.golang.org/grpc v1.63.2 - google.golang.org/protobuf v1.33.0 + google.golang.org/protobuf v1.34.0 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.29.3 k8s.io/apiextensions-apiserver v0.29.3 diff --git a/go.sum b/go.sum index 569c37fd8c..818c7d0638 100644 --- a/go.sum +++ b/go.sum @@ -1147,8 +1147,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4= +google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= From 2e7cf6932a0c5111967d6ba4b27716580985a34f Mon Sep 17 00:00:00 2001 From: Remington Breeze Date: Tue, 21 May 2024 11:05:50 -0700 Subject: [PATCH 026/219] chore: upgrade react-scripts (#3584) --- ui/package.json | 8 +- ui/src/app/webpack.common.js | 17 +- ui/yarn.lock | 10756 ++++++++++++++++++--------------- 3 files changed, 5951 insertions(+), 4830 deletions(-) diff --git a/ui/package.json b/ui/package.json index 0a631d3773..c06832be2e 100644 --- a/ui/package.json +++ b/ui/package.json @@ -58,22 +58,22 @@ "@types/jest": "^29.5.10", "@types/node": "^12.0.0", "@types/react": "^16.9.3", + "@types/react-autocomplete": "^1.8.4", "@types/react-dom": "^16.9.3", + "@types/react-form": "^2.16.1", "@types/react-helmet": "^6.1.0", "@types/react-router-dom": "^5.1.7", - "@types/react-form": "^2.16.1", "@types/uuid": "^9.0.3", - "@types/react-autocomplete": "^1.8.4", "copy-webpack-plugin": "^6.3.2", "jest": "^29.7.0", "mini-css-extract-plugin": "^1.3.9", "raw-loader": "^4.0.2", - "react-scripts": "4.0.3", + "react-scripts": "5.0.1", "sass": "^1.32.8", "ts-jest": "^29.1.1", "ts-loader": "^8.0.17", "webpack-bundle-analyzer": "^4.4.0", - "webpack-cli": "^4.5.0", + "webpack-cli": "^5.1.4", "webpack-dev-server": "^3.11.2", "webpack-merge": "^5.7.3" }, diff --git a/ui/src/app/webpack.common.js b/ui/src/app/webpack.common.js index 72d6d908ad..d24d20f508 100644 --- a/ui/src/app/webpack.common.js +++ b/ui/src/app/webpack.common.js @@ -1,8 +1,8 @@ 'use strict;'; -const crypto = require("crypto"); +const crypto = require('crypto'); const crypto_orig_createHash = crypto.createHash; -crypto.createHash = algorithm => crypto_orig_createHash(algorithm == "md4" ? "sha256" : algorithm); +crypto.createHash = (algorithm) => crypto_orig_createHash(algorithm == 'md4' ? 'sha256' : algorithm); const CopyWebpackPlugin = require('copy-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); @@ -30,27 +30,24 @@ const config = { rules: [ { test: /\.tsx?$/, - loaders: [`ts-loader?allowTsInNodeModules=true&configFile=${path.resolve('./tsconfig.json')}`], + use: [`ts-loader?allowTsInNodeModules=true&configFile=${path.resolve('./tsconfig.json')}`], }, { test: /\.scss$/, - loader: 'style-loader!raw-loader!sass-loader', + use: ['style-loader', 'raw-loader', 'sass-loader'], }, { test: /\.css$/, - loader: 'style-loader!raw-loader', + use: ['style-loader', 'raw-loader'], }, // https://github.com/fkhadra/react-toastify/issues/775#issuecomment-1149569290 { test: /\.mjs$/, include: /node_modules/, - type: "javascript/auto" + type: 'javascript/auto', }, ], }, - node: { - fs: 'empty', - }, plugins: [ new webpack.DefinePlugin({ SYSTEM_INFO: JSON.stringify({ @@ -63,7 +60,7 @@ const config = { {from: 'src/assets', to: 'assets'}, { from: 'node_modules/argo-ui/src/assets', - to: 'assets' + to: 'assets', }, { from: 'node_modules/@fortawesome/fontawesome-free/webfonts', diff --git a/ui/yarn.lock b/ui/yarn.lock index c8fbf6b82b..2ef9058665 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -97,27 +102,30 @@ resize-observer-polyfill "^1.5.1" throttle-debounce "^5.0.0" -"@babel/code-frame@7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== +"@apideck/better-ajv-errors@^0.3.1": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" + integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== dependencies: - "@babel/highlight" "^7.10.4" + json-schema "^0.4.0" + jsonpointer "^5.0.0" + leven "^3.1.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.5.5": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== dependencies: "@babel/highlight" "^7.12.13" +"@babel/code-frame@^7.16.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.8.3": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.4.tgz#03ae5af150be94392cb5c7ccd97db5a19a5da6aa" @@ -126,39 +134,22 @@ "@babel/highlight" "^7.23.4" chalk "^2.4.2" -"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" + integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== + "@babel/compat-data@^7.22.9": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11" integrity sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ== -"@babel/core@7.12.3": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" - integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.1" - "@babel/parser" "^7.12.3" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@^7.8.4": +"@babel/core@^7.1.0", "@babel/core@^7.12.3": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.2.tgz#54e45334ffc0172048e5c93ded36461d3ad4c417" integrity sha512-OgC1mON+l4U4B4wiohJlQNUU3H73mpTyYY3j/c8U9dr9UagGGSm+WFpzjy/YLdoyjiG++c1kIDgxCo/mLwQJeQ== @@ -179,6 +170,27 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/core@^7.11.1", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" + integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.24.5" + "@babel/helpers" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/core@^7.11.6": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.3.tgz#5ec09c8803b91f51cc887dedc2654a35852849c9" @@ -200,7 +212,16 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.12.1", "@babel/generator@^7.14.2": +"@babel/eslint-parser@^7.16.3": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz#3b0f7d383a540329a30a6a9937cfc89461d26217" + integrity sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + +"@babel/generator@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.2.tgz#d5773e8b557d421fd6ce0d5efa5fd7fc22567c30" integrity sha512-OnADYbKrffDVai5qcpkMxQ7caomHOoEwjkouqnN2QhydAjowFAZcsdecFIRUBdb+ZcruwYE4ythYmF1UBZU5xQ== @@ -219,6 +240,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" + integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== + dependencies: + "@babel/types" "^7.24.5" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" @@ -226,6 +257,13 @@ dependencies: "@babel/types" "^7.12.13" +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" @@ -234,7 +272,14 @@ "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16": +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16": version "7.13.16" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== @@ -255,7 +300,18 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0": +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.2.tgz#4e455b0329af29c2d3ad254b5dd5aed34595385d" integrity sha512-6YctwVsmlkchxfGUogvVrrhzyD3grFJyluj5JgDlQrwfMLJSt5tdAzFZfPf4H2Xoi5YLcQ6BxfJlaOBHuctyIw== @@ -267,6 +323,21 @@ "@babel/helper-replace-supers" "^7.13.12" "@babel/helper-split-export-declaration" "^7.12.13" +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723" + integrity sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.24.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.24.5" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.12.13": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" @@ -275,6 +346,15 @@ "@babel/helper-annotate-as-pure" "^7.12.13" regexpu-core "^4.7.1" +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + "@babel/helper-define-polyfill-provider@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz#a640051772045fedaaecc6f0c6c69f02bdd34bf1" @@ -289,6 +369,17 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" @@ -347,7 +438,21 @@ dependencies: "@babel/types" "^7.13.12" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": +"@babel/helper-member-expression-to-functions@^7.23.0", "@babel/helper-member-expression-to-functions@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475" + integrity sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" + integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== + dependencies: + "@babel/types" "^7.24.0" + +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== @@ -361,7 +466,7 @@ dependencies: "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.14.0", "@babel/helper-module-transforms@^7.14.2": +"@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.14.0", "@babel/helper-module-transforms@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5" integrity sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== @@ -386,6 +491,17 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" +"@babel/helper-module-transforms@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" + integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-simple-access" "^7.24.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/helper-validator-identifier" "^7.24.5" + "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" @@ -393,11 +509,23 @@ dependencies: "@babel/types" "^7.12.13" +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== +"@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" + integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== + "@babel/helper-plugin-utils@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" @@ -412,6 +540,15 @@ "@babel/helper-wrap-function" "^7.13.0" "@babel/types" "^7.13.0" +"@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + "@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" @@ -422,6 +559,15 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.12" +"@babel/helper-replace-supers@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" + integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-simple-access@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" @@ -436,6 +582,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-simple-access@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" + integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== + dependencies: + "@babel/types" "^7.24.5" + "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" @@ -443,6 +596,13 @@ dependencies: "@babel/types" "^7.12.1" +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-split-export-declaration@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" @@ -457,11 +617,23 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-split-export-declaration@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" + integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== + dependencies: + "@babel/types" "^7.24.5" + "@babel/helper-string-parser@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== +"@babel/helper-string-parser@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" + integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== + "@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" @@ -472,7 +644,12 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17": +"@babel/helper-validator-identifier@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" + integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== + +"@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== @@ -482,6 +659,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + "@babel/helper-wrap-function@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" @@ -492,7 +674,16 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helpers@^7.12.1", "@babel/helpers@^7.14.0": +"@babel/helper-wrap-function@^7.22.20": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz#335f934c0962e2c1ed1fb9d79e06a56115067c09" + integrity sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw== + dependencies: + "@babel/helper-function-name" "^7.23.0" + "@babel/template" "^7.24.0" + "@babel/types" "^7.24.5" + +"@babel/helpers@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62" integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== @@ -510,7 +701,16 @@ "@babel/traverse" "^7.23.4" "@babel/types" "^7.23.4" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": +"@babel/helpers@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" + integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== + dependencies: + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" + +"@babel/highlight@^7.12.13": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== @@ -528,7 +728,17 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.14.2", "@babel/parser@^7.7.0": +"@babel/highlight@^7.24.2": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" + integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.5" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.2.tgz#0c1680aa44ad4605b16cbdcc5c341a61bde9c746" integrity sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ== @@ -538,6 +748,26 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.4.tgz#409fbe690c333bb70187e2de4021e1e47a026661" integrity sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ== +"@babel/parser@^7.24.0", "@babel/parser@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" + integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" + integrity sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" + integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a" @@ -547,7 +777,24 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-proposal-optional-chaining" "^7.13.12" -"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.14.2": +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" + integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.24.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" + integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-proposal-async-generator-functions@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz#3a2085abbf5d5f962d480dbc81347385ed62eb1e" integrity sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ== @@ -556,15 +803,7 @@ "@babel/helper-remap-async-to-generator" "^7.13.0" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" - integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0": +"@babel/plugin-proposal-class-properties@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== @@ -572,6 +811,14 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-proposal-class-properties@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-proposal-class-static-block@^7.13.11": version "7.13.11" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz#6fcbba4a962702c17e5371a0c7b39afde186d703" @@ -580,16 +827,16 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-class-static-block" "^7.12.13" -"@babel/plugin-proposal-decorators@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz#59271439fed4145456c41067450543aee332d15f" - integrity sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ== +"@babel/plugin-proposal-decorators@^7.16.4": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz#bab2b9e174a2680f0a80f341f3ec70f809f8bb4b" + integrity sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-decorators" "^7.12.1" + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-decorators" "^7.24.1" -"@babel/plugin-proposal-dynamic-import@^7.12.1", "@babel/plugin-proposal-dynamic-import@^7.14.2": +"@babel/plugin-proposal-dynamic-import@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz#01ebabd7c381cff231fa43e302939a9de5be9d9f" integrity sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA== @@ -597,7 +844,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.12.1", "@babel/plugin-proposal-export-namespace-from@^7.14.2": +"@babel/plugin-proposal-export-namespace-from@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz#62542f94aa9ce8f6dba79eec698af22112253791" integrity sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ== @@ -605,7 +852,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.12.1", "@babel/plugin-proposal-json-strings@^7.14.2": +"@babel/plugin-proposal-json-strings@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz#830b4e2426a782e8b2878fbfe2cba85b70cbf98c" integrity sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA== @@ -613,7 +860,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.12.1", "@babel/plugin-proposal-logical-assignment-operators@^7.14.2": +"@babel/plugin-proposal-logical-assignment-operators@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz#222348c080a1678e0e74ea63fe76f275882d1fd7" integrity sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg== @@ -621,15 +868,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" - integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.14.2": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz#425b11dc62fc26939a2ab42cbba680bdf5734546" integrity sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q== @@ -637,15 +876,15 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6" - integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.12.1", "@babel/plugin-proposal-numeric-separator@^7.14.2": +"@babel/plugin-proposal-numeric-separator@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz#82b4cc06571143faf50626104b335dd71baa4f9e" integrity sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg== @@ -653,7 +892,15 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.14.2": +"@babel/plugin-proposal-numeric-separator@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz#e17d418f81cc103fedd4ce037e181c8056225abc" integrity sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw== @@ -664,7 +911,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.14.2" -"@babel/plugin-proposal-optional-catch-binding@^7.12.1", "@babel/plugin-proposal-optional-catch-binding@^7.14.2": +"@babel/plugin-proposal-optional-catch-binding@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz#150d4e58e525b16a9a1431bd5326c4eed870d717" integrity sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ== @@ -672,16 +919,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" - integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.14.2": +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz#df8171a8b9c43ebf4c1dabe6311b432d83e1b34e" integrity sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA== @@ -690,7 +928,16 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.13.0": +"@babel/plugin-proposal-optional-chaining@^7.16.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== @@ -698,6 +945,19 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-proposal-private-methods@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + "@babel/plugin-proposal-private-property-in-object@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz#b1a1f2030586b9d3489cc26179d2eb5883277636" @@ -708,7 +968,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-private-property-in-object" "^7.14.0" -"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== @@ -716,7 +976,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": +"@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== @@ -730,7 +990,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== @@ -744,14 +1004,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-decorators@^7.12.1": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648" - integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz#71d9ad06063a6ac5430db126b5df48c70ee885fa" + integrity sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": +"@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== @@ -765,21 +1032,35 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.12.1": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" - integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA== +"@babel/plugin-syntax-flow@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz#875c25e3428d7896c87589765fc8b9d32f24bd8d" + integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-assertions@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" + integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-attributes@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" + integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": +"@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== @@ -793,6 +1074,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" + integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-jsx@^7.7.2": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" @@ -807,7 +1095,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== @@ -821,21 +1109,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== @@ -849,19 +1137,33 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-typescript@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" - integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" + integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-typescript@^7.7.2": version "7.23.3" @@ -870,14 +1172,39 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.13.0": +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-async-to-generator@^7.12.1", "@babel/plugin-transform-async-to-generator@^7.13.0": +"@babel/plugin-transform-arrow-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" + integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-async-generator-functions@^7.24.3": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" + integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== @@ -886,21 +1213,61 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-remap-async-to-generator" "^7.13.0" -"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.12.13": +"@babel/plugin-transform-async-to-generator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" + integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== + dependencies: + "@babel/helper-module-imports" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + +"@babel/plugin-transform-block-scoped-functions@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-block-scoping@^7.12.1", "@babel/plugin-transform-block-scoping@^7.14.2": +"@babel/plugin-transform-block-scoped-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" + integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-block-scoping@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz#761cb12ab5a88d640ad4af4aa81f820e6b5fdf5c" integrity sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.14.2": +"@babel/plugin-transform-block-scoping@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz#89574191397f85661d6f748d4b89ee4d9ee69a2a" + integrity sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-class-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" + integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-class-static-block@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" + integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.4" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz#3f1196c5709f064c252ad056207d87b7aeb2d03d" integrity sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg== @@ -913,21 +1280,50 @@ "@babel/helper-split-export-declaration" "^7.12.13" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.12.1", "@babel/plugin-transform-computed-properties@^7.13.0": +"@babel/plugin-transform-classes@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz#05e04a09df49a46348299a0e24bfd7e901129339" + integrity sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-split-export-declaration" "^7.24.5" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.13.17": +"@babel/plugin-transform-computed-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" + integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/template" "^7.24.0" + +"@babel/plugin-transform-destructuring@^7.13.17": version "7.13.17" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-destructuring@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz#80843ee6a520f7362686d1a97a7b53544ede453c" + integrity sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== @@ -935,14 +1331,37 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-duplicate-keys@^7.12.1", "@babel/plugin-transform-duplicate-keys@^7.12.13": +"@babel/plugin-transform-dotall-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" + integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-duplicate-keys@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-exponentiation-operator@^7.12.1", "@babel/plugin-transform-exponentiation-operator@^7.12.13": +"@babel/plugin-transform-duplicate-keys@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" + integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-dynamic-import@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" + integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== @@ -950,22 +1369,46 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-flow-strip-types@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4" - integrity sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg== +"@babel/plugin-transform-exponentiation-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" + integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-flow" "^7.12.1" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-export-namespace-from@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" + integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.16.0": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz#fa8d0a146506ea195da1671d38eed459242b2dcc" + integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-flow" "^7.24.1" -"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.13.0": +"@babel/plugin-transform-for-of@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-function-name@^7.12.1", "@babel/plugin-transform-function-name@^7.12.13": +"@babel/plugin-transform-for-of@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" + integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== @@ -973,21 +1416,60 @@ "@babel/helper-function-name" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-literals@^7.12.1", "@babel/plugin-transform-literals@^7.12.13": +"@babel/plugin-transform-function-name@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" + integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-json-strings@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" + integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.12.13": +"@babel/plugin-transform-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" + integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-logical-assignment-operators@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" + integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.14.2": +"@babel/plugin-transform-member-expression-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" + integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-amd@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz#6622806fe1a7c07a1388444222ef9535f2ca17b0" integrity sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw== @@ -996,7 +1478,15 @@ "@babel/helper-plugin-utils" "^7.13.0" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.14.0": +"@babel/plugin-transform-modules-amd@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" + integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-commonjs@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz#52bc199cb581e0992edba0f0f80356467587f161" integrity sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ== @@ -1006,7 +1496,16 @@ "@babel/helper-simple-access" "^7.13.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.12.1", "@babel/plugin-transform-modules-systemjs@^7.13.8": +"@babel/plugin-transform-modules-commonjs@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" + integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.13.8": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== @@ -1017,7 +1516,17 @@ "@babel/helper-validator-identifier" "^7.12.11" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.12.1", "@babel/plugin-transform-modules-umd@^7.14.0": +"@babel/plugin-transform-modules-systemjs@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" + integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz#2f8179d1bbc9263665ce4a65f305526b2ea8ac34" integrity sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw== @@ -1025,21 +1534,70 @@ "@babel/helper-module-transforms" "^7.14.0" "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": +"@babel/plugin-transform-modules-umd@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" + integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.13" -"@babel/plugin-transform-new-target@^7.12.1", "@babel/plugin-transform-new-target@^7.12.13": +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.12.13": +"@babel/plugin-transform-new-target@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" + integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" + integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" + integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz#f91bbcb092ff957c54b4091c86bda8372f0b10ef" + integrity sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.24.5" + +"@babel/plugin-transform-object-super@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== @@ -1047,20 +1605,77 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-replace-supers" "^7.12.13" -"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz#e4290f72e0e9e831000d066427c4667098decc31" - integrity sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A== +"@babel/plugin-transform-object-super@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" + integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-replace-supers" "^7.24.1" -"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" - integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== +"@babel/plugin-transform-optional-catch-binding@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" + integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.24.1", "@babel/plugin-transform-optional-chaining@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz#a6334bebd7f9dd3df37447880d0bd64b778e600f" + integrity sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz#e4290f72e0e9e831000d066427c4667098decc31" + integrity sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-parameters@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62" + integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-private-methods@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" + integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-private-property-in-object@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz#f5d1fcad36e30c960134cb479f1ca98a5b06eda5" + integrity sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" + integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-property-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" + integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-react-constant-elements@^7.12.1": version "7.13.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.13.tgz#0208b1d942bf939cd4f7aa5b255d42602aa4a920" @@ -1068,42 +1683,35 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-react-display-name@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" - integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-react-display-name@^7.12.1", "@babel/plugin-transform-react-display-name@^7.12.13": +"@babel/plugin-transform-react-display-name@^7.12.13": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.2.tgz#2e854544d42ab3bb9c21f84e153d62e800fbd593" integrity sha512-zCubvP+jjahpnFJvPaHPiGVfuVUjXHhFvJKQdNnsmSsiU9kR/rCZ41jHc++tERD2zV+p7Hr6is+t5b6iWTCqSw== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-react-jsx-development@^7.12.1", "@babel/plugin-transform-react-jsx-development@^7.12.17": +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" + integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx-development@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz#f510c0fa7cd7234153539f9a362ced41a5ca1447" integrity sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ== dependencies: "@babel/plugin-transform-react-jsx" "^7.12.17" -"@babel/plugin-transform-react-jsx-self@^7.12.1": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz#422d99d122d592acab9c35ea22a6cfd9bf189f60" - integrity sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-jsx-source@^7.12.1": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.2.tgz#2620b57e7de775c0687f65d464026d15812941da" - integrity sha512-OMorspVyjxghAjzgeAWc6O7W7vHbJhV69NeTGdl9Mxgz6PaweAuo7ffB9T5A1OQ9dGcw0As4SYMUhyNC4u7mVg== +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-transform-react-jsx" "^7.22.5" -"@babel/plugin-transform-react-jsx@^7.12.1", "@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.13.12": +"@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz#1df5dfaf0f4b784b43e96da6f28d630e775f68b3" integrity sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA== @@ -1114,6 +1722,17 @@ "@babel/plugin-syntax-jsx" "^7.12.13" "@babel/types" "^7.13.12" +"@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" + "@babel/plugin-transform-react-pure-annotations@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" @@ -1122,38 +1741,70 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.13.15": +"@babel/plugin-transform-react-pure-annotations@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz#c86bce22a53956331210d268e49a0ff06e392470" + integrity sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-regenerator@^7.13.15": version "7.13.15" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz#e5eb28945bf8b6563e7f818945f966a8d2997f39" integrity sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.12.1", "@babel/plugin-transform-reserved-words@^7.12.13": +"@babel/plugin-transform-regenerator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" + integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-runtime@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" - integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== +"@babel/plugin-transform-reserved-words@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" + integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - resolve "^1.8.1" - semver "^5.5.1" + "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.12.13": +"@babel/plugin-transform-runtime@^7.16.4": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" + integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== + dependencies: + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-plugin-utils" "^7.24.0" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.1" + babel-plugin-polyfill-regenerator "^0.6.1" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.13.0": +"@babel/plugin-transform-shorthand-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" + integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-spread@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== @@ -1161,44 +1812,89 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" -"@babel/plugin-transform-sticky-regex@^7.12.1", "@babel/plugin-transform-sticky-regex@^7.12.13": +"@babel/plugin-transform-spread@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" + integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.13.0": +"@babel/plugin-transform-sticky-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" + integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-template-literals@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.12.13": +"@babel/plugin-transform-template-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" + integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-typeof-symbol@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-typescript@^7.12.1": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" - integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ== +"@babel/plugin-transform-typeof-symbol@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz#703cace5ef74155fb5eecab63cbfc39bdd25fe12" + integrity sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-typescript" "^7.12.13" + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-typescript@^7.24.1": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz#bcba979e462120dc06a75bd34c473a04781931b8" + integrity sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-typescript" "^7.24.1" -"@babel/plugin-transform-unicode-escapes@^7.12.1", "@babel/plugin-transform-unicode-escapes@^7.12.13": +"@babel/plugin-transform-unicode-escapes@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-unicode-regex@^7.12.1", "@babel/plugin-transform-unicode-regex@^7.12.13": +"@babel/plugin-transform-unicode-escapes@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" + integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-property-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" + integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-regex@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== @@ -1206,79 +1902,110 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/preset-env@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" - integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== - dependencies: - "@babel/compat-data" "^7.12.1" - "@babel/helper-compilation-targets" "^7.12.1" - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-option" "^7.12.1" - "@babel/plugin-proposal-async-generator-functions" "^7.12.1" - "@babel/plugin-proposal-class-properties" "^7.12.1" - "@babel/plugin-proposal-dynamic-import" "^7.12.1" - "@babel/plugin-proposal-export-namespace-from" "^7.12.1" - "@babel/plugin-proposal-json-strings" "^7.12.1" - "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" - "@babel/plugin-proposal-numeric-separator" "^7.12.1" - "@babel/plugin-proposal-object-rest-spread" "^7.12.1" - "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.12.1" - "@babel/plugin-proposal-private-methods" "^7.12.1" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.12.1" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" +"@babel/plugin-transform-unicode-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" + integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-sets-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" + integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.16.4": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" + integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== + dependencies: + "@babel/compat-data" "^7.24.4" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-import-assertions" "^7.24.1" + "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.12.1" - "@babel/plugin-transform-arrow-functions" "^7.12.1" - "@babel/plugin-transform-async-to-generator" "^7.12.1" - "@babel/plugin-transform-block-scoped-functions" "^7.12.1" - "@babel/plugin-transform-block-scoping" "^7.12.1" - "@babel/plugin-transform-classes" "^7.12.1" - "@babel/plugin-transform-computed-properties" "^7.12.1" - "@babel/plugin-transform-destructuring" "^7.12.1" - "@babel/plugin-transform-dotall-regex" "^7.12.1" - "@babel/plugin-transform-duplicate-keys" "^7.12.1" - "@babel/plugin-transform-exponentiation-operator" "^7.12.1" - "@babel/plugin-transform-for-of" "^7.12.1" - "@babel/plugin-transform-function-name" "^7.12.1" - "@babel/plugin-transform-literals" "^7.12.1" - "@babel/plugin-transform-member-expression-literals" "^7.12.1" - "@babel/plugin-transform-modules-amd" "^7.12.1" - "@babel/plugin-transform-modules-commonjs" "^7.12.1" - "@babel/plugin-transform-modules-systemjs" "^7.12.1" - "@babel/plugin-transform-modules-umd" "^7.12.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" - "@babel/plugin-transform-new-target" "^7.12.1" - "@babel/plugin-transform-object-super" "^7.12.1" - "@babel/plugin-transform-parameters" "^7.12.1" - "@babel/plugin-transform-property-literals" "^7.12.1" - "@babel/plugin-transform-regenerator" "^7.12.1" - "@babel/plugin-transform-reserved-words" "^7.12.1" - "@babel/plugin-transform-shorthand-properties" "^7.12.1" - "@babel/plugin-transform-spread" "^7.12.1" - "@babel/plugin-transform-sticky-regex" "^7.12.1" - "@babel/plugin-transform-template-literals" "^7.12.1" - "@babel/plugin-transform-typeof-symbol" "^7.12.1" - "@babel/plugin-transform-unicode-escapes" "^7.12.1" - "@babel/plugin-transform-unicode-regex" "^7.12.1" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.12.1" - core-js-compat "^3.6.2" - semver "^5.5.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.24.1" + "@babel/plugin-transform-async-generator-functions" "^7.24.3" + "@babel/plugin-transform-async-to-generator" "^7.24.1" + "@babel/plugin-transform-block-scoped-functions" "^7.24.1" + "@babel/plugin-transform-block-scoping" "^7.24.5" + "@babel/plugin-transform-class-properties" "^7.24.1" + "@babel/plugin-transform-class-static-block" "^7.24.4" + "@babel/plugin-transform-classes" "^7.24.5" + "@babel/plugin-transform-computed-properties" "^7.24.1" + "@babel/plugin-transform-destructuring" "^7.24.5" + "@babel/plugin-transform-dotall-regex" "^7.24.1" + "@babel/plugin-transform-duplicate-keys" "^7.24.1" + "@babel/plugin-transform-dynamic-import" "^7.24.1" + "@babel/plugin-transform-exponentiation-operator" "^7.24.1" + "@babel/plugin-transform-export-namespace-from" "^7.24.1" + "@babel/plugin-transform-for-of" "^7.24.1" + "@babel/plugin-transform-function-name" "^7.24.1" + "@babel/plugin-transform-json-strings" "^7.24.1" + "@babel/plugin-transform-literals" "^7.24.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" + "@babel/plugin-transform-member-expression-literals" "^7.24.1" + "@babel/plugin-transform-modules-amd" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-modules-systemjs" "^7.24.1" + "@babel/plugin-transform-modules-umd" "^7.24.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.24.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" + "@babel/plugin-transform-numeric-separator" "^7.24.1" + "@babel/plugin-transform-object-rest-spread" "^7.24.5" + "@babel/plugin-transform-object-super" "^7.24.1" + "@babel/plugin-transform-optional-catch-binding" "^7.24.1" + "@babel/plugin-transform-optional-chaining" "^7.24.5" + "@babel/plugin-transform-parameters" "^7.24.5" + "@babel/plugin-transform-private-methods" "^7.24.1" + "@babel/plugin-transform-private-property-in-object" "^7.24.5" + "@babel/plugin-transform-property-literals" "^7.24.1" + "@babel/plugin-transform-regenerator" "^7.24.1" + "@babel/plugin-transform-reserved-words" "^7.24.1" + "@babel/plugin-transform-shorthand-properties" "^7.24.1" + "@babel/plugin-transform-spread" "^7.24.1" + "@babel/plugin-transform-sticky-regex" "^7.24.1" + "@babel/plugin-transform-template-literals" "^7.24.1" + "@babel/plugin-transform-typeof-symbol" "^7.24.5" + "@babel/plugin-transform-unicode-escapes" "^7.24.1" + "@babel/plugin-transform-unicode-property-regex" "^7.24.1" + "@babel/plugin-transform-unicode-regex" "^7.24.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.31.0" + semver "^6.3.1" -"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.8.4": +"@babel/preset-env@^7.12.1": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.2.tgz#e80612965da73579c84ad2f963c2359c71524ed5" integrity sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ== @@ -1357,7 +2084,16 @@ core-js-compat "^3.9.0" semver "^6.3.0" -"@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.4": +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-modules@^0.1.4": version "0.1.4" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== @@ -1368,19 +2104,6 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.1.tgz#7f022b13f55b6dd82f00f16d1c599ae62985358c" - integrity sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-react-display-name" "^7.12.1" - "@babel/plugin-transform-react-jsx" "^7.12.1" - "@babel/plugin-transform-react-jsx-development" "^7.12.1" - "@babel/plugin-transform-react-jsx-self" "^7.12.1" - "@babel/plugin-transform-react-jsx-source" "^7.12.1" - "@babel/plugin-transform-react-pure-annotations" "^7.12.1" - "@babel/preset-react@^7.12.5": version "7.13.13" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.13.13.tgz#fa6895a96c50763fe693f9148568458d5a839761" @@ -1393,13 +2116,33 @@ "@babel/plugin-transform-react-jsx-development" "^7.12.17" "@babel/plugin-transform-react-pure-annotations" "^7.12.1" -"@babel/preset-typescript@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz#86480b483bb97f75036e8864fe404cc782cc311b" - integrity sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-typescript" "^7.12.1" +"@babel/preset-react@^7.16.0": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" + integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-transform-react-display-name" "^7.24.1" + "@babel/plugin-transform-react-jsx" "^7.23.4" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.24.1" + +"@babel/preset-typescript@^7.16.0": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" + integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-syntax-jsx" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-typescript" "^7.24.1" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime-corejs3@^7.10.2": version "7.14.0" @@ -1409,14 +2152,7 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" - integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== @@ -1437,6 +2173,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.16.3": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" + integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.5.tgz#11edb98f8aeec529b82b211028177679144242db" @@ -1444,7 +2187,7 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3": +"@babel/template@^7.12.13", "@babel/template@^7.3.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== @@ -1462,7 +2205,16 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2", "@babel/traverse@^7.7.0": +"@babel/template@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + +"@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== @@ -1492,7 +2244,23 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": +"@babel/traverse@^7.24.5", "@babel/traverse@^7.7.2": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" + integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== + dependencies: + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/types" "^7.24.5" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.2.tgz#4208ae003107ef8a057ea8333e56eb64d2f6a2c3" integrity sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== @@ -1509,28 +2277,130 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.24.0", "@babel/types@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" + integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== + dependencies: + "@babel/helper-string-parser" "^7.24.1" + "@babel/helper-validator-identifier" "^7.24.5" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== +"@csstools/normalize.css@*": + version "12.1.1" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.1.1.tgz#f0ad221b7280f3fc814689786fd9ee092776ef8f" + integrity sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ== + +"@csstools/postcss-cascade-layers@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" + integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" + "@csstools/selector-specificity" "^2.0.2" + postcss-selector-parser "^6.0.10" -"@csstools/convert-colors@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" - integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== +"@csstools/postcss-color-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" + integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" -"@csstools/normalize.css@^10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" - integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== +"@csstools/postcss-font-format-keywords@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" + integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-hwb-function@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" + integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-ic-unit@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" + integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-is-pseudo-class@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" + integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-nested-calc@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26" + integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-normalize-display-values@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" + integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" + integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" + integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-stepped-value-functions@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" + integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-text-decoration-shorthand@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f" + integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-trigonometric-functions@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" + integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-unset-value@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" + integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== + +"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" + integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== "@ctrl/tinycolor@^3.4.0", "@ctrl/tinycolor@^3.6.0": version "3.6.0" @@ -1557,21 +2427,38 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== -"@eslint/eslintrc@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" - integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^12.1.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + "@fortawesome/fontawesome-common-types@6.4.0": version "6.4.0" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz#88da2b70d6ca18aaa6ed3687832e11f39e80624b" @@ -1615,37 +2502,36 @@ dependencies: prop-types "^15.8.1" -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@hapi/joi@^15.1.0": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== dependencies: - "@hapi/hoek" "^8.3.0" + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -1663,16 +2549,28 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" - integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + +"@jest/console@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" + integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== + dependencies: + "@jest/types" "^28.1.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^26.6.2" - jest-util "^26.6.2" + jest-message-util "^28.1.3" + jest-util "^28.1.3" slash "^3.0.0" "@jest/console@^29.7.0": @@ -1687,36 +2585,36 @@ jest-util "^29.7.0" slash "^3.0.0" -"@jest/core@^26.6.0", "@jest/core@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" - integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== dependencies: - "@jest/console" "^26.6.2" - "@jest/reporters" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" + emittery "^0.8.1" exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^26.6.2" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-resolve-dependencies "^26.6.3" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - jest-watcher "^26.6.2" - micromatch "^4.0.2" - p-each-series "^2.1.0" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" @@ -1755,15 +2653,15 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^26.6.0", "@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" - integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^26.6.2" + jest-mock "^27.5.1" "@jest/environment@^29.7.0": version "29.7.0" @@ -1790,17 +2688,17 @@ expect "^29.7.0" jest-snapshot "^29.7.0" -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" - integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" "@jest/fake-timers@^29.7.0": version "29.7.0" @@ -1814,14 +2712,14 @@ jest-mock "^29.7.0" jest-util "^29.7.0" -"@jest/globals@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" - integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== dependencies: - "@jest/environment" "^26.6.2" - "@jest/types" "^26.6.2" - expect "^26.6.2" + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" "@jest/globals@^29.7.0": version "29.7.0" @@ -1833,37 +2731,36 @@ "@jest/types" "^29.6.3" jest-mock "^29.7.0" -"@jest/reporters@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" - integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" + istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.6.2" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^7.0.0" - optionalDependencies: - node-notifier "^8.0.0" + v8-to-istanbul "^8.1.0" "@jest/reporters@^29.7.0": version "29.7.0" @@ -1895,6 +2792,13 @@ strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== + dependencies: + "@sinclair/typebox" "^0.24.1" + "@jest/schemas@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" @@ -1902,13 +2806,13 @@ dependencies: "@sinclair/typebox" "^0.27.8" -"@jest/source-map@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" - integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== dependencies: callsites "^3.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" source-map "^0.6.0" "@jest/source-map@^29.6.3": @@ -1920,13 +2824,23 @@ callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^26.6.0", "@jest/test-result@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" - integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== dependencies: - "@jest/console" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-result@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" + integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== + dependencies: + "@jest/console" "^28.1.3" + "@jest/types" "^28.1.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" @@ -1940,16 +2854,15 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" - integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== dependencies: - "@jest/test-result" "^26.6.2" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" "@jest/test-sequencer@^29.7.0": version "29.7.0" @@ -1961,23 +2874,23 @@ jest-haste-map "^29.7.0" slash "^3.0.0" -"@jest/transform@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" - integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^26.6.2" - babel-plugin-istanbul "^6.0.0" + "@jest/types" "^27.5.1" + babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-regex-util "^26.0.0" - jest-util "^26.6.2" - micromatch "^4.0.2" - pirates "^4.0.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" @@ -2003,7 +2916,7 @@ slash "^3.0.0" write-file-atomic "^4.0.2" -"@jest/types@^26.6.0", "@jest/types@^26.6.2": +"@jest/types@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== @@ -2014,6 +2927,29 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + dependencies: + "@jest/schemas" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" @@ -2035,6 +2971,15 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -2045,6 +2990,19 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" @@ -2058,6 +3016,26 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + "@nodelib/fs.scandir@2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" @@ -2066,11 +3044,24 @@ "@nodelib/fs.stat" "2.0.4" run-parallel "^1.1.9" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + "@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": version "2.0.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== +"@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + "@nodelib/fs.walk@^1.2.3": version "1.2.6" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" @@ -2079,6 +3070,14 @@ "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" +"@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@npmcli/move-file@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" @@ -2087,16 +3086,22 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@pmmmwh/react-refresh-webpack-plugin@0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" - integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pmmmwh/react-refresh-webpack-plugin@^0.5.3": + version "0.5.13" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.13.tgz#02338a92a92f541a5189b97e922caf3215221e49" + integrity sha512-odZVYXly+JwzYri9rKqqUAk0cY6zLpv4dxoKinhoJNShV36Gpxf+CyDIILJ4tYsJ1ZxIWs233Y39iVnynvDA/g== dependencies: - ansi-html "^0.0.7" + ansi-html-community "^0.0.8" + core-js-pure "^3.23.3" error-stack-parser "^2.0.6" - html-entities "^1.2.1" - native-url "^0.2.6" - schema-utils "^2.6.5" + html-entities "^2.1.0" + loader-utils "^2.0.4" + schema-utils "^3.0.0" source-map "^0.7.3" "@polka/url@^1.0.0-next.9": @@ -2220,18 +3225,27 @@ rc-resize-observer "^1.3.1" rc-util "^5.38.0" -"@rollup/plugin-node-resolve@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" - integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== +"@rollup/plugin-babel@^5.2.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-node-resolve@^11.2.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== dependencies: - "@rollup/pluginutils" "^3.0.8" - "@types/resolve" "0.0.8" + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" builtin-modules "^3.1.0" + deepmerge "^4.2.2" is-module "^1.0.0" - resolve "^1.14.2" + resolve "^1.19.0" -"@rollup/plugin-replace@^2.3.1": +"@rollup/plugin-replace@^2.4.1": version "2.4.2" resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== @@ -2239,7 +3253,7 @@ "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": +"@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== @@ -2248,6 +3262,16 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@rushstack/eslint-patch@^1.1.0": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz#391d528054f758f81e53210f1a1eebcf1a8b1d20" + integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== + +"@sinclair/typebox@^0.24.1": + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -2274,20 +3298,22 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== dependencies: "@sinonjs/commons" "^1.7.0" -"@surma/rollup-plugin-off-main-thread@^1.1.1": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" - integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== +"@surma/rollup-plugin-off-main-thread@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" + integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== dependencies: - ejs "^2.6.1" + ejs "^3.1.6" + json5 "^2.2.0" magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" "@svgr/babel-plugin-add-jsx-attribute@^5.4.0": version "5.4.0" @@ -2378,7 +3404,7 @@ deepmerge "^4.2.2" svgo "^1.2.2" -"@svgr/webpack@5.5.0": +"@svgr/webpack@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== @@ -2443,17 +3469,22 @@ prop-types "^15.6.2" tippy.js "^5.1.1" -"@types/anymatch@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" - integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/aria-query@^4.2.0": version "4.2.1" resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b" integrity sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": +"@types/babel__core@^7.0.0": version "7.1.14" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== @@ -2497,11 +3528,41 @@ dependencies: "@babel/types" "^7.3.0" +"@types/body-parser@*": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + "@types/classnames@2.2.9": version "2.2.9" resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.9.tgz#d868b6febb02666330410fe7f58f3c4b8258be7b" integrity sha512-MNl+rT5UmZeilaPxAVs6YaPC2m6aA8rofviZbhbxpPpl61uKodfdQVsBtgJGTqGizEf02oW3tsVe7FYB8kK14A== +"@types/connect-history-api-fallback@^1.3.5": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + "@types/d3-array@^3.0.3": version "3.0.9" resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.0.9.tgz#54feabd29d1f15940d422c16008c63c1e4e3d188" @@ -2553,10 +3614,18 @@ resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.1.tgz#8dac23292df0e559a3aa459d8efca78a734c3fbe" integrity sha512-GGTvzKccVEhxmRfJEB6zhY9ieT4UhGVUIQaBzFpUO9OXy2ycAlnPCSJLzmGGgqt3KVjqN3QCQB4g1rsZnHsWhg== -"@types/eslint@^7.2.6": - version "7.2.10" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.10.tgz#4b7a9368d46c0f8cd5408c23288a59aa2394d917" - integrity sha512-kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ== +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": + version "8.56.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" + integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -2571,6 +3640,31 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz#3ae8ab3767d98d0b682cda063c3339e1e86ccfaa" + integrity sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.21" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + "@types/glob@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" @@ -2603,10 +3697,22 @@ resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== -"@types/html-minifier-terser@^5.0.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" - integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-errors@*": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + +"@types/http-proxy@^1.17.8": + version "1.17.14" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" + integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== + dependencies: + "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.6" @@ -2648,21 +3754,38 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== +"@types/json-schema@^7.0.4", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + "@types/minimatch@*": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== +"@types/node-forge@^1.3.0": + version "1.3.11" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" + integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== + dependencies: + "@types/node" "*" + "@types/node@*": version "20.10.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.0.tgz#16ddf9c0a72b832ec4fcce35b8249cf149214617" @@ -2675,20 +3798,15 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.13.tgz#e743bae112bd779ac9650f907197dd2caa7f0364" integrity sha512-1x8W5OpxPq+T85OUsHRP6BqXeosKmeXRtjoF39STcdf/UWLqUsoehstZKOi0CunhVqHG17AyZgpj20eRVooK6A== -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/prettier@^2.0.0": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" - integrity sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA== +"@types/prettier@^2.1.5": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/prop-types@*": version "15.7.3" @@ -2700,6 +3818,16 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== +"@types/qs@*": + version "6.9.15" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" + integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + "@types/react-autocomplete@^1.8.4": version "1.8.9" resolved "https://registry.yarnpkg.com/@types/react-autocomplete/-/react-autocomplete-1.8.9.tgz#f7062603878a1f206584d0acbb9b8ac8620cd1b7" @@ -2753,28 +3881,59 @@ "@types/prop-types" "*" csstype "^2.2.0" -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/semver@^7.3.12": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + +"@types/send@*": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.1": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + +"@types/sockjs@^0.3.33": + version "0.3.36" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" "@types/stack-utils@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== -"@types/tapable@^1", "@types/tapable@^1.0.5": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.7.tgz#545158342f949e8fd3bfd813224971ecddc3fac4" - integrity sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ== - "@types/testing-library__jest-dom@^5.9.1": version "5.9.5" resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz#5bf25c91ad2d7b38f264b12275e5c92a66d849b0" @@ -2782,38 +3941,22 @@ dependencies: "@types/jest" "*" -"@types/uglify-js@*": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124" - integrity sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q== - dependencies: - source-map "^0.6.1" +"@types/trusted-types@^2.0.2": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== "@types/uuid@^9.0.3": version "9.0.7" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.7.tgz#b14cebc75455eeeb160d5fe23c2fcc0c64f724d8" integrity sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g== -"@types/webpack-sources@*": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" - integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== +"@types/ws@^8.5.5": + version "8.5.10" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== dependencies: "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.7.3" - -"@types/webpack@^4.41.8": - version "4.41.28" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.28.tgz#0069a2159b7ad4d83d0b5801942c17d54133897b" - integrity sha512-Nn84RAiJjKRfPFFCVR8LC4ueTtTdfWAMZ03THIzZWRJB+rX24BD3LqPSFnbMscWauEsT4segAsylPDIaZyZyLQ== - dependencies: - "@types/anymatch" "*" - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - source-map "^0.6.0" "@types/yargs-parser@*": version "21.0.3" @@ -2827,6 +3970,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yargs@^16.0.0": + version "16.0.9" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.9.tgz#ba506215e45f7707e6cbcaf386981155b7ab956e" + integrity sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA== + dependencies: + "@types/yargs-parser" "*" + "@types/yargs@^17.0.8": version "17.0.32" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" @@ -2834,274 +3984,237 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^4.5.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.23.0.tgz#29d3c9c81f6200b1fd6d8454cfb007ba176cde80" - integrity sha512-tGK1y3KIvdsQEEgq6xNn1DjiFJtl+wn8JJQiETtCbdQxw1vzjXyAaIkEmO2l6Nq24iy3uZBMFQjZ6ECf1QdgGw== - dependencies: - "@typescript-eslint/experimental-utils" "4.23.0" - "@typescript-eslint/scope-manager" "4.23.0" - debug "^4.1.1" - functional-red-black-tree "^1.0.1" - lodash "^4.17.15" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@4.23.0", "@typescript-eslint/experimental-utils@^4.0.1": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.23.0.tgz#f2059434cd6e5672bfeab2fb03b7c0a20622266f" - integrity sha512-WAFNiTDnQfrF3Z2fQ05nmCgPsO5o790vOhmWKXbbYQTO9erE1/YsFot5/LnOUizLzU2eeuz6+U/81KV5/hFTGA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.23.0" - "@typescript-eslint/types" "4.23.0" - "@typescript-eslint/typescript-estree" "4.23.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/experimental-utils@^3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" - integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/typescript-estree" "3.10.1" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^4.5.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.23.0.tgz#239315d38e42e852bef43a4b0b01bef78f78911c" - integrity sha512-wsvjksHBMOqySy/Pi2Q6UuIuHYbgAMwLczRl4YanEPKW5KVxI9ZzDYh3B5DtcZPQTGRWFJrfcbJ6L01Leybwug== - dependencies: - "@typescript-eslint/scope-manager" "4.23.0" - "@typescript-eslint/types" "4.23.0" - "@typescript-eslint/typescript-estree" "4.23.0" - debug "^4.1.1" - -"@typescript-eslint/scope-manager@4.23.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.23.0.tgz#8792ef7eacac122e2ec8fa2d30a59b8d9a1f1ce4" - integrity sha512-ZZ21PCFxPhI3n0wuqEJK9omkw51wi2bmeKJvlRZPH5YFkcawKOuRMQMnI8mH6Vo0/DoHSeZJnHiIx84LmVQY+w== - dependencies: - "@typescript-eslint/types" "4.23.0" - "@typescript-eslint/visitor-keys" "4.23.0" - -"@typescript-eslint/types@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" - integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== - -"@typescript-eslint/types@4.23.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.23.0.tgz#da1654c8a5332f4d1645b2d9a1c64193cae3aa3b" - integrity sha512-oqkNWyG2SLS7uTWLZf6Sr7Dm02gA5yxiz1RP87tvsmDsguVATdpVguHr4HoGOcFOpCvx9vtCSCyQUGfzq28YCw== - -"@typescript-eslint/typescript-estree@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" - integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== - dependencies: - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/visitor-keys" "3.10.1" - debug "^4.1.1" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/typescript-estree@4.23.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.23.0.tgz#0753b292097523852428a6f5a1aa8ccc1aae6cd9" - integrity sha512-5Sty6zPEVZF5fbvrZczfmLCOcby3sfrSPu30qKoY1U3mca5/jvU5cwsPb/CO6Q3ByRjixTMIVsDkqwIxCf/dMw== - dependencies: - "@typescript-eslint/types" "4.23.0" - "@typescript-eslint/visitor-keys" "4.23.0" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/visitor-keys@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" - integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== - dependencies: - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/visitor-keys@4.23.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.23.0.tgz#7215cc977bd3b4ef22467b9023594e32f9e4e455" - integrity sha512-5PNe5cmX9pSifit0H+nPoQBXdbNzi5tOEec+3riK+ku4e3er37pKxMKDH5Ct5Y4fhWxcD4spnlYjxi9vXbSpwg== - dependencies: - "@typescript-eslint/types" "4.23.0" - eslint-visitor-keys "^2.0.0" - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" +"@typescript-eslint/eslint-plugin@^5.5.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@^5.0.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" + integrity sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw== + dependencies: + "@typescript-eslint/utils" "5.62.0" + +"@typescript-eslint/parser@^5.5.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: - "@xtuc/ieee754" "^1.2.0" + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" + integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" + integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== +"@webassemblyjs/helper-wasm-section@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" + integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.12.1" -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" + "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" + integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-opt" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + "@webassemblyjs/wast-printer" "1.12.1" + +"@webassemblyjs/wasm-gen@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" + integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" + integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + +"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" + integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" + integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== + dependencies: + "@webassemblyjs/ast" "1.12.1" "@xtuc/long" "4.2.2" -"@webpack-cli/configtest@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.3.tgz#204bcff87cda3ea4810881f7ea96e5f5321b87b9" - integrity sha512-WQs0ep98FXX2XBAfQpRbY0Ma6ADw8JR6xoIkaIiJIzClGOMqVRvPCWqndTxf28DgFopWan0EKtHtg/5W1h0Zkw== +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== -"@webpack-cli/info@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.4.tgz#7381fd41c9577b2d8f6c2594fad397ef49ad5573" - integrity sha512-ogE2T4+pLhTTPS/8MM3IjHn0IYplKM4HbVNMCWA9N4NrdPzunwenpCsqKEXyejMfRu6K8mhauIPYf8ZxWG5O6g== - dependencies: - envinfo "^7.7.3" +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== -"@webpack-cli/serve@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.4.0.tgz#f84fd07bcacefe56ce762925798871092f0f228e" - integrity sha512-xgT/HqJ+uLWGX+Mzufusl3cgjAcnqYYskaB7o0vRcwOEfuu6hMzSILQpnIzFMGsTaeaX4Nnekl+6fadLbl1/Vg== +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -3126,6 +4239,14 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" @@ -3134,10 +4255,15 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^7.1.1: version "7.2.0" @@ -3149,34 +4275,46 @@ acorn-walk@^8.0.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.0.tgz#d3c6a9faf00987a5e2b9bdb506c2aa76cd707f83" integrity sha512-mjmzmv12YIG/G8JQdQuz2MUDShEJ6teYpT5bmWA4q7iwoGen8xtt3twF3OvzIUl+Q06aWIjvnwQUKvQ6TtMRjg== -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: +acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.1.0: +acorn@^8.0.4: version "8.2.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== -address@1.1.2, address@^1.0.1: +acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +address@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -adjust-sourcemap-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" - integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== +address@^1.1.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== dependencies: loader-utils "^2.0.0" regex-parser "^2.2.11" +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -3190,12 +4328,26 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.1.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3205,31 +4357,21 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1: - version "8.3.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.3.0.tgz#25ee7348e32cdc4a1dbb38256bf6bdc451dd577c" - integrity sha512-RYE7B5An83d7eWnDR8kbdaIFqmKCNsP16ay1hDbJEU+sa0e3H9SebskCt0Uufem6cfAVu7Col6ubcn/W+Sm8/Q== +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" + integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== dependencies: - fast-deep-equal "^3.1.1" + fast-deep-equal "^3.1.3" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + uri-js "^4.4.1" ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -3237,7 +4379,12 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: dependencies: type-fest "^0.21.3" -ansi-html@0.0.7, ansi-html@^0.0.7: +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= @@ -3257,6 +4404,11 @@ ansi-regex@^5.0.0, ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -3276,6 +4428,11 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + antd@^5.4.2: version "5.4.2" resolved "https://registry.yarnpkg.com/antd/-/antd-5.4.2.tgz#3923b96da76fc7276992e9fc0286ebb3a638e016" @@ -3384,6 +4541,11 @@ antd@^5.6.1: scroll-into-view-if-needed "^3.1.0" throttle-debounce "^5.0.0" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -3400,10 +4562,18 @@ anymatch@^3.0.3, anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== "argo-ui@git+https://github.com/argoproj/argo-ui.git#5ff344ac9692c14dd108468bd3c020c3c75181cb": version "1.0.0" @@ -3437,6 +4607,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -3445,10 +4620,12 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -arity-n@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" - integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= +aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" arr-diff@^4.0.0: version "4.0.0" @@ -3465,6 +4642,14 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -3475,7 +4660,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3: +array-includes@^3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== @@ -3486,6 +4671,18 @@ array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3: get-intrinsic "^1.1.1" is-string "^1.0.5" +array-includes@^3.1.6, array-includes@^3.1.7: + version "3.1.8" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" + integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + is-string "^1.0.7" + array-tree-filter@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" @@ -3513,79 +4710,99 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.flat@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== +array.prototype.findlast@^1.2.4: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" + integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.findlastindex@^1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" + integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" - integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - function-bind "^1.1.1" - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asap@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== +array.prototype.toreversed@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba" + integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== +array.prototype.tosorted@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" + integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== dependencies: - safer-buffer "~2.1.0" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.1.0" + es-shim-unscopables "^1.0.2" -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== async-each@^1.0.1: version "1.0.3" @@ -3609,6 +4826,11 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +async@^3.2.3: + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -3624,70 +4846,49 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.6.1: - version "9.8.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" - integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== +autoprefixer@^10.4.13: + version "10.4.19" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f" + integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - colorette "^1.2.1" + browserslist "^4.23.0" + caniuse-lite "^1.0.30001599" + fraction.js "^4.3.7" normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axe-core@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.2.0.tgz#6594db4ee62f78be79e32a7295d21b099b60668d" - integrity sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg== - -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" + possible-typed-array-names "^1.0.0" -babel-extract-comments@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" - integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== + +axobject-query@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== dependencies: - babylon "^6.18.0" + dequal "^2.0.3" -babel-jest@^26.6.0, babel-jest@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" - integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== +babel-jest@^27.4.2, babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== dependencies: - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.6.2" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" slash "^3.0.0" babel-jest@^29.7.0: @@ -3703,15 +4904,14 @@ babel-jest@^29.7.0: graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== +babel-loader@^8.2.3: + version "8.3.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== dependencies: - find-cache-dir "^2.1.0" - loader-utils "^1.4.0" - mkdirp "^0.5.3" - pify "^4.0.1" + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" schema-utils "^2.6.5" babel-plugin-dynamic-import-node@^2.3.3: @@ -3721,17 +4921,6 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - babel-plugin-istanbul@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" @@ -3743,10 +4932,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" - integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -3763,19 +4952,19 @@ babel-plugin-jest-hoist@^29.6.3: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" -babel-plugin-named-asset-import@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" - integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== +babel-plugin-named-asset-import@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" + integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== babel-plugin-polyfill-corejs2@^0.2.0: version "0.2.0" @@ -3786,6 +4975,23 @@ babel-plugin-polyfill-corejs2@^0.2.0: "@babel/helper-define-polyfill-provider" "^0.2.0" semver "^6.1.1" +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.11" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.2" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" + integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + core-js-compat "^3.36.1" + babel-plugin-polyfill-corejs3@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz#f4b4bb7b19329827df36ff56f6e6d367026cb7a2" @@ -3801,20 +5007,14 @@ babel-plugin-polyfill-regenerator@^0.2.0: dependencies: "@babel/helper-define-polyfill-provider" "^0.2.0" -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" + "@babel/helper-define-polyfill-provider" "^0.6.2" -babel-plugin-transform-react-remove-prop-types@0.4.24: +babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== @@ -3837,12 +5037,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" - integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== dependencies: - babel-plugin-jest-hoist "^26.6.2" + babel-plugin-jest-hoist "^27.5.1" babel-preset-current-node-syntax "^1.0.0" babel-preset-jest@^29.6.3: @@ -3853,26 +5053,27 @@ babel-preset-jest@^29.6.3: babel-plugin-jest-hoist "^29.6.3" babel-preset-current-node-syntax "^1.0.0" -babel-preset-react-app@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.0.tgz#689b60edc705f8a70ce87f47ab0e560a317d7045" - integrity sha512-itL2z8v16khpuKutx5IH8UdCdSTuzrOhRFTEdIhveZ2i1iBKDrVE0ATa4sFVy+02GLucZNVBWtoarXBy0Msdpg== - dependencies: - "@babel/core" "7.12.3" - "@babel/plugin-proposal-class-properties" "7.12.1" - "@babel/plugin-proposal-decorators" "7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "7.12.1" - "@babel/plugin-proposal-numeric-separator" "7.12.1" - "@babel/plugin-proposal-optional-chaining" "7.12.1" - "@babel/plugin-transform-flow-strip-types" "7.12.1" - "@babel/plugin-transform-react-display-name" "7.12.1" - "@babel/plugin-transform-runtime" "7.12.1" - "@babel/preset-env" "7.12.1" - "@babel/preset-react" "7.12.1" - "@babel/preset-typescript" "7.12.1" - "@babel/runtime" "7.12.1" - babel-plugin-macros "2.8.0" - babel-plugin-transform-react-remove-prop-types "0.4.24" +babel-preset-react-app@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" + integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== + dependencies: + "@babel/core" "^7.16.0" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-decorators" "^7.16.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-transform-flow-strip-types" "^7.16.0" + "@babel/plugin-transform-react-display-name" "^7.16.0" + "@babel/plugin-transform-runtime" "^7.16.4" + "@babel/preset-env" "^7.16.4" + "@babel/preset-react" "^7.16.0" + "@babel/preset-typescript" "^7.16.0" + "@babel/runtime" "^7.16.3" + babel-plugin-macros "^3.1.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" babel-runtime@^6.26.0: version "6.26.0" @@ -3882,21 +5083,11 @@ babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -3915,13 +5106,6 @@ batch@0.6.1: resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - bfj@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" @@ -3959,16 +5143,6 @@ bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - body-parser@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -3985,6 +5159,32 @@ body-parser@1.19.0: raw-body "2.4.0" type-is "~1.6.17" +body-parser@1.20.2: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" + integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== + dependencies: + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + bonjour@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" @@ -4010,6 +5210,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -4033,88 +5240,12 @@ braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@4.14.2: - version "4.14.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" - integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== - dependencies: - caniuse-lite "^1.0.30001125" - electron-to-chromium "^1.3.564" - escalade "^3.0.2" - node-releases "^1.1.61" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.6.2, browserslist@^4.6.4: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== @@ -4125,6 +5256,16 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4 escalade "^3.1.1" node-releases "^1.1.71" +browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + browserslist@^4.21.9: version "4.22.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" @@ -4159,30 +5300,11 @@ buffer-indexof@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - builtin-modules@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -4193,26 +5315,10 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacache@^15.0.5: version "15.0.6" @@ -4260,31 +5366,23 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= +call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@^4.1.1: +camel-case@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== @@ -4292,16 +5390,26 @@ camel-case@^4.1.1: pascal-case "^3.1.2" tslib "^2.0.3" -camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0, camelcase@^6.1.0, camelcase@^6.2.0: +camelcase@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== +camelcase@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -4312,7 +5420,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001219: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001219: version "1.0.30001228" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== @@ -4322,24 +5430,17 @@ caniuse-lite@^1.0.30001541: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz#a528b253c8a2d95d2b415e11d8b9942acc100c4f" integrity sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w== -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -case-sensitive-paths-webpack-plugin@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" - integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== +caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: + version "1.0.30001620" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz#78bb6f35b8fe315b96b8590597094145d0b146b4" + integrity sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew== -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +case-sensitive-paths-webpack-plugin@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== -chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4356,7 +5457,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4377,12 +5478,17 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +char-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" + integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== + check-types@^11.1.1: version "11.1.2" resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1: +"chokidar@>=3.0.0 <4.0.0": version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== @@ -4416,10 +5522,20 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chokidar@^3.4.2, chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" chownr@^2.0.0: version "2.0.0" @@ -4431,34 +5547,16 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - ci-info@^3.2.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - circular-json@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.4.0.tgz#c448ea998b7fe31ecf472ec29c6b608e2e2a62fd" integrity sha512-tKV502ADgm9Z37s6B1QOohegjJJrCl2iyMMb1+8ITHrh1fquW8Jdbkb4s5r4Iwutr1UfL1qvkqvc1wZZlLvwow== -cjs-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" - integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== - cjs-module-lexer@^1.0.0: version "1.2.3" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" @@ -4484,10 +5582,10 @@ classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.3.1, classna resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== -clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== +clean-css@^5.2.2: + version "5.3.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" + integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== dependencies: source-map "~0.6.0" @@ -4505,14 +5603,14 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" + wrap-ansi "^7.0.0" cliui@^8.0.1: version "8.0.1" @@ -4564,7 +5662,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -4583,45 +5681,44 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0, color-name@~1.1.4: +color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" - integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" - integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.4" +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -colorette@^1.2.1, colorette@^1.2.2: +colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== -combined-stream@^1.0.6, combined-stream@~1.0.6: +colorette@^2.0.10, colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1: +commander@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== @@ -4631,11 +5728,16 @@ commander@^6.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -commander@^7.0.0: +commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -4651,13 +5753,6 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -compose-function@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" - integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= - dependencies: - arity-n "^1.0.4" - compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -4688,40 +5783,20 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -confusing-browser-globals@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" - integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== +confusing-browser-globals@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== content-disposition@0.5.3: version "0.5.3" @@ -4730,23 +5805,30 @@ content-disposition@0.5.3: dependencies: safe-buffer "5.1.2" +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" -convert-source-map@^0.3.3: - version "0.3.5" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" - integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= - convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" @@ -4762,17 +5844,10 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== copy-descriptor@^0.1.0: version "0.1.1" @@ -4803,7 +5878,14 @@ copy-webpack-plugin@^6.3.2: serialize-javascript "^5.0.1" webpack-sources "^1.4.3" -core-js-compat@^3.6.2, core-js-compat@^3.9.0, core-js-compat@^3.9.1: +core-js-compat@^3.31.0, core-js-compat@^3.36.1: + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" + integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== + dependencies: + browserslist "^4.23.0" + +core-js-compat@^3.9.0, core-js-compat@^3.9.1: version "3.12.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.12.1.tgz#2c302c4708505fa7072b0adb5156d26f7801a18b" integrity sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ== @@ -4816,36 +5898,31 @@ core-js-pure@^3.0.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.12.1.tgz#934da8b9b7221e2a2443dc71dfa5bd77a7ea00b8" integrity sha512-1cch+qads4JnDSWsvc7d6nzlKAippwjUlf6vykkTLW53VSV+NkE6muGBToAjEA8pG90cSfcud3JgVmW2ds5TaQ== +core-js-pure@^3.23.3: + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.37.1.tgz#2b4b34281f54db06c9a9a5bd60105046900553bd" + integrity sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA== + core-js@^2.4.0: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== +core-js@^3.19.2: + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9" + integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw== + core-js@^3.32.1: version "3.33.3" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.3.tgz#3c644a323f0f533a0d360e9191e37f7fc059088d" integrity sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw== -core-js@^3.6.5: - version "3.12.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.12.1.tgz#6b5af4ff55616c08a44d386f1f510917ff204112" - integrity sha512-Ne9DKPHTObRuB09Dru5AjwKjY4cJHVGu+y5f7coGn1E9Grkc3p2iBwE9AI/nJzsE29mQF7oq+mhYYRqOMFN1Bw== - -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" @@ -4868,37 +5945,6 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - create-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" @@ -4912,15 +5958,6 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -4932,87 +5969,76 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - -css-blank-pseudo@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" - integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: - postcss "^7.0.5" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== +css-blank-pseudo@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== dependencies: - postcss "^7.0.1" - timsort "^0.3.0" + postcss-selector-parser "^6.0.9" -css-has-pseudo@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" - integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^5.0.0-rc.4" +css-declaration-sorter@^6.3.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== -css-loader@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" - integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== - dependencies: - camelcase "^6.0.0" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^2.0.0" - postcss "^7.0.32" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.3" - postcss-modules-scope "^2.2.0" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.1.0" - schema-utils "^2.7.1" - semver "^7.3.2" +css-has-pseudo@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== + dependencies: + postcss-selector-parser "^6.0.9" + +css-loader@^6.5.1: + version "6.11.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" + integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.33" + postcss-modules-extract-imports "^3.1.0" + postcss-modules-local-by-default "^4.0.5" + postcss-modules-scope "^3.2.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.5.4" -css-prefers-color-scheme@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" - integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== - dependencies: - postcss "^7.0.5" +css-minimizer-webpack-plugin@^3.2.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" + integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== + dependencies: + cssnano "^5.0.6" + jest-worker "^27.0.2" + postcss "^8.3.5" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + +css-prefers-color-scheme@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== css-select-base-adapter@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== -css-select@^2.0.0, css-select@^2.0.2: +css-select@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== @@ -5022,6 +6048,17 @@ css-select@^2.0.0, css-select@^2.0.2: domutils "^1.7.0" nth-check "^1.0.2" +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + css-tree@1.0.0-alpha.37: version "1.0.0-alpha.37" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" @@ -5030,7 +6067,7 @@ css-tree@1.0.0-alpha.37: mdn-data "2.0.4" source-map "^0.6.1" -css-tree@^1.1.2: +css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -5043,21 +6080,16 @@ css-what@^3.2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + css.escape@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= -css@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - css@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" @@ -5067,90 +6099,66 @@ css@^3.0.0: source-map "^0.6.1" source-map-resolve "^0.6.0" -cssdb@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" - integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== - -cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" - integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== +cssdb@^7.1.0: + version "7.11.2" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.11.2.tgz#127a2f5b946ee653361a5af5333ea85a39df5ae5" + integrity sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A== cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" - integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.3" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.1" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.4" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.2" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== -cssnano@^4.1.10: - version "4.1.11" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" - integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== +cssnano@^5.0.6: + version "5.1.15" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.8" - is-resolvable "^1.0.0" - postcss "^7.0.0" + cssnano-preset-default "^5.2.14" + lilconfig "^2.0.3" + yaml "^1.10.2" -csso@^4.0.2: +csso@^4.0.2, csso@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== @@ -5184,11 +6192,6 @@ csstype@^3.0.10: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - "d3-array@2 - 3", "d3-array@2.10.0 - 3", d3-array@^3.1.6: version "3.2.4" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" @@ -5260,25 +6263,10 @@ d3-timer@^3.0.1: resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -damerau-levenshtein@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" - integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== data-urls@^2.0.0: version "2.0.0" @@ -5289,26 +6277,60 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + dayjs@^1.11.1: version "1.11.7" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^3.1.1, debug@^3.2.6: +debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@^4.1.0, debug@^4.1.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -5380,13 +6402,43 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" -define-properties@^1.1.2, define-properties@^1.1.3: +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" +define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -5427,18 +6479,25 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== destroy@~1.0.4: version "1.0.4" @@ -5455,7 +6514,7 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.5.tgz#9d270aa7eaa5af0b72c4c9d9b814e7f4ce738b79" integrity sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw== -detect-port-alt@1.1.6: +detect-port-alt@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== @@ -5463,25 +6522,26 @@ detect-port-alt@1.1.6: address "^1.0.1" debug "^2.6.0" +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + diff-sequences@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + diff-sequences@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -5489,6 +6549,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -5502,6 +6567,13 @@ dns-packet@^1.3.1: ip "^1.1.0" safe-buffer "^5.0.1" +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + dns-txt@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" @@ -5509,14 +6581,6 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -5541,7 +6605,7 @@ dom-align@^1.7.0: resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.4.tgz#3503992eb2a7cfcb2ed3b2a6d21e0b9c00d54511" integrity sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw== -dom-converter@^0.2: +dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== @@ -5568,17 +6632,21 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.1: +domelementtype@1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== @@ -5588,6 +6656,11 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== +domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -5595,14 +6668,14 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: - domelementtype "1" + domelementtype "^2.2.0" -domutils@^1.5.1, domutils@^1.7.0: +domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -5610,6 +6683,15 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + dot-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" @@ -5618,57 +6700,39 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@5.1.0: +dotenv-expand@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== -duplexer@^0.1.1, duplexer@^0.1.2: +duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== +ejs@^3.1.6: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" -electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.723: +electron-to-chromium@^1.3.723: version "1.3.727" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz#857e310ca00f0b75da4e1db6ff0e073cc4a91ddf" integrity sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg== @@ -5678,28 +6742,25 @@ electron-to-chromium@^1.4.535: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.596.tgz#6752d1aa795d942d49dfc5d3764d6ea283fab1d7" integrity sha512-zW3zbZ40Icb2BCWjm47nxwcFGYlIgdXkAx85XDO7cyky9J4QQfq8t0W19/TLZqq3JPQXtlv8BPIGmfa9Jb4scg== -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" +electron-to-chromium@^1.4.668: + version "1.4.773" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.773.tgz#49741af9bb4e712ad899e35d8344d8d59cdb7e12" + integrity sha512-87eHF+h3PlCRwbxVEAw9KtK3v7lWfc/sUDr0W76955AdYTG4bV/k0zrl585Qnj/skRMH2qOSiE+kqMeOQ+LOpw== + +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== -emittery@^0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" - integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== emoji-regex@^7.0.1: version "7.0.3" @@ -5711,16 +6772,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emoji-regex@^9.0.0: +emoji-regex@^9.2.2: version "9.2.2" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -5738,14 +6794,14 @@ encoding@^0.1.11: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^4.0.0, enhanced-resolve@^4.3.0: +enhanced-resolve@^4.0.0: version "4.5.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== @@ -5754,17 +6810,13 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.3.0: memory-fs "^0.5.0" tapable "^1.0.0" -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== +enhanced-resolve@^5.16.0: + version "5.16.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz#e8bc63d51b826d6f1cbc0a150ecb5a8b0c62e567" + integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== dependencies: - ansi-colors "^4.1.1" - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + graceful-fs "^4.2.4" + tapable "^2.2.0" entities@^2.0.0: version "2.2.0" @@ -5776,14 +6828,14 @@ envinfo@^7.7.3: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== -errno@^0.1.3, errno@~0.1.7: +errno@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -5804,7 +6856,7 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.1.1" -es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: +es-abstract@^1.17.2, es-abstract@^1.18.0-next.2: version "1.18.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== @@ -5826,42 +6878,128 @@ es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.0" -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: + version "1.23.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + data-view-buffer "^1.0.1" + data-view-byte-length "^1.0.1" + data-view-byte-offset "^1.0.0" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.0.3" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.3" + is-string "^1.0.7" + is-typed-array "^1.1.13" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.2" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.9" + string.prototype.trimend "^1.0.8" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.6" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.15" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" + get-intrinsic "^1.2.4" + +es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: + version "1.0.19" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" + integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.3" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + globalthis "^1.0.3" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + iterator.prototype "^1.1.2" + safe-array-concat "^1.1.2" + +es-module-lexer@^1.2.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz#00b423304f2500ac59359cc9b6844951f372d497" + integrity sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA== -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" + es-errors "^1.3.0" -es6-iterator@2.0.3, es6-iterator@~2.0.3: +es-set-tostringtag@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - d "^1.0.1" - ext "^1.1.2" + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" -escalade@^3.0.2, escalade@^3.1.1: +escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== @@ -5871,16 +7009,21 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -5893,119 +7036,139 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-react-app@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" - integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== - dependencies: - confusing-browser-globals "^1.0.10" - -eslint-import-resolver-node@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" +eslint-config-react-app@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" + integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== + dependencies: + "@babel/core" "^7.16.0" + "@babel/eslint-parser" "^7.16.3" + "@rushstack/eslint-patch" "^1.1.0" + "@typescript-eslint/eslint-plugin" "^5.5.0" + "@typescript-eslint/parser" "^5.5.0" + babel-preset-react-app "^10.0.1" + confusing-browser-globals "^1.0.11" + eslint-plugin-flowtype "^8.0.3" + eslint-plugin-import "^2.25.3" + eslint-plugin-jest "^25.3.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.27.1" + eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-testing-library "^5.0.1" + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" -eslint-module-utils@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" - integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== +eslint-module-utils@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== dependencies: - debug "^2.6.9" - pkg-dir "^2.0.0" + debug "^3.2.7" -eslint-plugin-flowtype@^5.2.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.7.2.tgz#482a42fe5d15ee614652ed256d37543d584d7bc0" - integrity sha512-7Oq/N0+3nijBnYWQYzz/Mp/7ZCpwxYvClRyW/PLAmimY9uLCBvoXsNsERcJdkKceyOjgRbFhhxs058KTrne9Mg== +eslint-plugin-flowtype@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" + integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== dependencies: - lodash "^4.17.15" + lodash "^4.17.21" string-natural-compare "^3.0.1" -eslint-plugin-import@^2.22.1: - version "2.22.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" - integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== - dependencies: - array-includes "^3.1.1" - array.prototype.flat "^1.2.3" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.4" - eslint-module-utils "^2.6.0" - has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.1" - read-pkg-up "^2.0.0" - resolve "^1.17.0" - tsconfig-paths "^3.9.0" - -eslint-plugin-jest@^24.1.0: - version "24.3.6" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.3.6.tgz#5f0ca019183c3188c5ad3af8e80b41de6c8e9173" - integrity sha512-WOVH4TIaBLIeCX576rLcOgjNXqP+jNlCiEmRgFTfQtJ52DpwnIQKAVGlGPAN7CZ33bW6eNfHD6s8ZbEUTQubJg== +eslint-plugin-import@^2.25.3: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== dependencies: - "@typescript-eslint/experimental-utils" "^4.0.1" + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" -eslint-plugin-jsx-a11y@^6.3.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" - integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== +eslint-plugin-jest@^25.3.0: + version "25.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== dependencies: - "@babel/runtime" "^7.11.2" - aria-query "^4.2.2" - array-includes "^3.1.1" - ast-types-flow "^0.0.7" - axe-core "^4.0.2" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.6" - emoji-regex "^9.0.0" - has "^1.0.3" - jsx-ast-utils "^3.1.0" - language-tags "^1.0.5" - -eslint-plugin-react-hooks@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" - integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== + "@typescript-eslint/experimental-utils" "^5.0.0" -eslint-plugin-react@^7.21.5: - version "7.23.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz#2d2291b0f95c03728b55869f01102290e792d494" - integrity sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw== +eslint-plugin-jsx-a11y@^6.5.1: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== dependencies: - array-includes "^3.1.3" - array.prototype.flatmap "^1.2.4" + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" + minimatch "^3.1.2" + object.entries "^1.1.7" + object.fromentries "^2.0.7" + +eslint-plugin-react-hooks@^4.3.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" + integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== + +eslint-plugin-react@^7.27.1: + version "7.34.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997" + integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlast "^1.2.4" + array.prototype.flatmap "^1.3.2" + array.prototype.toreversed "^1.1.2" + array.prototype.tosorted "^1.1.3" doctrine "^2.1.0" - has "^1.0.3" + es-iterator-helpers "^1.0.17" + estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.0.4" - object.entries "^1.1.3" - object.fromentries "^2.0.4" - object.values "^1.1.3" - prop-types "^15.7.2" - resolve "^2.0.0-next.3" - string.prototype.matchall "^4.0.4" - -eslint-plugin-testing-library@^3.9.2: - version "3.10.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz#609ec2b0369da7cf2e6d9edff5da153cc31d87bd" - integrity sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA== - dependencies: - "@typescript-eslint/experimental-utils" "^3.10.1" + minimatch "^3.1.2" + object.entries "^1.1.7" + object.fromentries "^2.0.7" + object.hasown "^1.1.3" + object.values "^1.1.7" + prop-types "^15.8.1" + resolve "^2.0.0-next.5" + semver "^6.3.1" + string.prototype.matchall "^4.0.10" -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +eslint-plugin-testing-library@^5.0.1: + version "5.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz#5b46cdae96d4a78918711c0b4792f90088e62d20" + integrity sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw== dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" + "@typescript-eslint/utils" "^5.58.0" -eslint-scope@^5.0.0, eslint-scope@^5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -6013,100 +7176,101 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + esrecurse "^4.3.0" + estraverse "^5.2.0" -eslint-visitor-keys@^2.0.0: +eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-webpack-plugin@^2.5.2: - version "2.5.4" - resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.4.tgz#473b84932f1a8e2c2b8e66a402d0497bf440b986" - integrity sha512-7rYh0m76KyKSDE+B+2PUQrlNS4HJ51t3WKpkJg6vo2jFMbEPTG99cBV0Dm7LXSHucN4WGCG65wQcRiTFrj7iWw== - dependencies: - "@types/eslint" "^7.2.6" - arrify "^2.0.1" - jest-worker "^26.6.2" - micromatch "^4.0.2" - normalize-path "^3.0.0" - schema-utils "^3.0.0" +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^7.11.0: - version "7.26.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.26.0.tgz#d416fdcdcb3236cd8f282065312813f8c13982f6" - integrity sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg== +eslint-webpack-plugin@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" + integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.1" - ajv "^6.10.0" + "@types/eslint" "^7.29.0 || ^8.4.1" + jest-worker "^28.0.2" + micromatch "^4.0.5" + normalize-path "^3.0.0" + schema-utils "^4.0.0" + +eslint@^8.3.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" + fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.21" - minimatch "^3.0.4" + lodash.merge "^4.6.2" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.4" + optionator "^0.9.3" + strip-ansi "^6.0.1" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0, esrecurse@^4.3.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -6123,10 +7287,10 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-walker@^1.0.1: version "1.0.1" @@ -6148,7 +7312,7 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.1: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0: +events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -6160,19 +7324,6 @@ eventsource@^1.0.7: dependencies: original "^1.0.0" -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.3.2: - version "0.3.6" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" - integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -6186,21 +7337,6 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - execa@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" @@ -6234,17 +7370,15 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^26.6.0, expect@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" - integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== dependencies: - "@jest/types" "^26.6.2" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" expect@^29.0.0, expect@^29.7.0: version "29.7.0" @@ -6293,12 +7427,42 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== +express@^4.17.3: + version "4.19.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" + integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== dependencies: - type "^2.0.0" + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.2" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.6.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" extend-shallow@^2.0.1: version "2.0.1" @@ -6315,11 +7479,6 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -6334,17 +7493,7 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -6366,6 +7515,17 @@ fast-glob@^3.1.1, fast-glob@^3.2.4: micromatch "^4.0.2" picomatch "^2.2.1" +fast-glob@^3.2.9, fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -6402,11 +7562,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -6414,10 +7569,10 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-loader@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" - integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: loader-utils "^2.0.0" schema-utils "^3.0.0" @@ -6427,10 +7582,17 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -filesize@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" - integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== fill-range@^4.0.0: version "4.0.0" @@ -6449,6 +7611,19 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -6462,15 +7637,6 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - find-cache-dir@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" @@ -6480,7 +7646,14 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -6488,19 +7661,13 @@ find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - locate-path "^3.0.0" + locate-path "^6.0.0" + path-exists "^4.0.0" flat-cache@^3.0.4: version "3.0.4" @@ -6515,56 +7682,64 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== -flatten@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" - integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - follow-redirects@^1.0.0: version "1.15.5" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" -fork-ts-checker-webpack-plugin@4.1.6: - version "4.1.6" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" - integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== +fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.3" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" + integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== dependencies: - "@babel/code-frame" "^7.5.5" - chalk "^2.4.1" - micromatch "^3.1.10" + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" minimatch "^3.0.4" - semver "^5.6.0" + schema-utils "2.7.0" + semver "^7.3.2" tapable "^1.0.0" - worker-rpc "^0.1.0" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.6" + combined-stream "^1.0.8" mime-types "^2.1.12" +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -6575,6 +7750,11 @@ foundation-sites@^6.4.3: resolved "https://registry.yarnpkg.com/foundation-sites/-/foundation-sites-6.6.3.tgz#8ca5f246357db69e6a0e73351ce06aa8acce6540" integrity sha512-8X93wUAmUg1HhVv8uWMWnwoBLSQWSmFImJencneIZDctswn724Bq/MV1cbPZN/GFWGOB/9ngoQHztfzd4+ovCg== +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -6587,33 +7767,16 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -fs-extra@^9.0.1: +fs-extra@^9.0.0, fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -6630,15 +7793,10 @@ fs-minipass@^2.0.0: dependencies: minipass "^3.0.0" -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" +fs-monkey@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" + integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== fs.realpath@^1.0.0: version "1.0.0" @@ -6653,16 +7811,16 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.1.2, fsevents@^2.1.3, fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -fsevents@^2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -6673,12 +7831,22 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: +gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -6688,7 +7856,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -6697,6 +7865,17 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" @@ -6714,30 +7893,25 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -6746,13 +7920,36 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0: +glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^10.3.10: + version "10.3.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.15.tgz#e72bc61bc3038c90605f5dd48543dc67aaf3b50d" + integrity sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.6" + minimatch "^9.0.1" + minipass "^7.0.4" + path-scurry "^1.11.0" + glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -6765,7 +7962,7 @@ glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@2.0.0: +global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== @@ -6794,31 +7991,20 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globals@^13.6.0: - version "13.8.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" - integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" -globby@11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== +globalthis@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" + define-properties "^1.2.1" + gopd "^1.0.1" globby@^11.0.1: version "11.0.3" @@ -6832,6 +8018,18 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" +globby@^11.0.4, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -6843,28 +8041,27 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== -graceful-fs@^4.2.9: +graceful-fs@^4.2.11, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -gzip-size@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== gzip-size@^6.0.0: version "6.0.0" @@ -6878,19 +8075,6 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" @@ -6901,6 +8085,11 @@ has-bigints@^1.0.1: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -6911,11 +8100,35 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -6947,30 +8160,13 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - hasown@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" @@ -6978,16 +8174,18 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" +hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - history@^4.10.1, history@^4.7.2, history@^4.9.0: version "4.10.1" resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" @@ -7000,15 +8198,6 @@ history@^4.10.1, history@^4.7.2, history@^4.9.0: tiny-warning "^1.0.0" value-equal "^1.0.1" -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - hoist-non-react-statics@^2.5.0: version "2.5.5" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" @@ -7026,11 +8215,6 @@ hoopy@^0.1.4: resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -7041,16 +8225,6 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -7058,55 +8232,54 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" -html-entities@^1.2.1, html-entities@^1.3.1: +html-entities@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== +html-entities@^2.1.0, html-entities@^2.3.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" + integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-minifier-terser@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" - integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" he "^1.2.0" - param-case "^3.0.3" + param-case "^3.0.4" relateurl "^0.2.7" - terser "^4.6.3" + terser "^5.10.0" -html-webpack-plugin@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" - integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== - dependencies: - "@types/html-minifier-terser" "^5.0.0" - "@types/tapable" "^1.0.5" - "@types/webpack" "^4.41.8" - html-minifier-terser "^5.0.1" - loader-utils "^1.2.3" - lodash "^4.17.15" - pretty-error "^2.1.1" - tapable "^1.1.3" - util.promisify "1.0.0" +html-webpack-plugin@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" + integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" -htmlparser2@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" http-deceiver@^1.2.7: version "1.2.7" @@ -7124,6 +8297,17 @@ http-errors@1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" @@ -7150,6 +8334,15 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" @@ -7160,7 +8353,18 @@ http-proxy-middleware@0.19.1: lodash "^4.17.11" micromatch "^3.1.10" -http-proxy@^1.17.0: +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.17.0, http-proxy@^1.18.1: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== @@ -7169,24 +8373,13 @@ http-proxy@^1.17.0: follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + agent-base "6" + debug "4" human-signals@^2.1.0: version "2.1.0" @@ -7207,61 +8400,46 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: - postcss "^7.0.14" + safer-buffer ">= 2.1.2 < 3.0.0" -identity-obj-proxy@3.0.0: +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +idb@^7.0.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== + +identity-obj-proxy@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - ignore@^5.1.4: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -immer@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" - integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" +ignore@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" +immer@^9.0.7: + version "9.0.21" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" + integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: +import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -7269,13 +8447,6 @@ import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -7302,12 +8473,7 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3, infer-owner@^1.0.4: +infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -7320,16 +8486,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -7348,13 +8509,13 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" + es-errors "^1.3.0" + hasown "^2.0.0" side-channel "^1.0.4" "internmap@1 - 2": @@ -7362,10 +8523,10 @@ internal-slot@^1.0.3: resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== invariant@^2.2.4: version "2.2.4" @@ -7389,10 +8550,10 @@ ipaddr.js@1.9.1, ipaddr.js@^1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= +ipaddr.js@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== is-absolute-url@^3.0.3: version "3.0.3" @@ -7420,15 +8581,25 @@ is-arguments@^1.0.4: dependencies: call-bind "^1.0.0" +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" is-bigint@^1.0.1: version "1.0.2" @@ -7461,44 +8632,30 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-callable@^1.1.3, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-callable@^1.1.4, is-callable@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= +is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" + hasown "^2.0.0" -is-core-module@^2.0.0, is-core-module@^2.2.0: +is-core-module@^2.2.0: version "2.4.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== dependencies: has "^1.0.3" -is-core-module@^2.13.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -7513,11 +8670,25 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + is-date-object@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== +is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -7536,12 +8707,7 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: +is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== @@ -7563,6 +8729,13 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -7578,6 +8751,13 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -7592,6 +8772,18 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -7602,6 +8794,11 @@ is-negative-zero@^2.0.1: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + is-number-object@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" @@ -7624,11 +8821,6 @@ is-obj@^1.0.1: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - is-path-cwd@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" @@ -7648,10 +8840,15 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -7660,7 +8857,7 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-potential-custom-element-name@^1.0.0: +is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== @@ -7673,21 +8870,36 @@ is-regex@^1.0.4, is-regex@^1.1.2: call-bind "^1.0.2" has-symbols "^1.0.2" +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-root@2.1.0: +is-root@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== +is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== + +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -7703,6 +8915,13 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== +is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" @@ -7710,11 +8929,38 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + +is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007" + integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -7725,7 +8971,7 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.1.1, is-wsl@^2.2.0: +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -7737,11 +8983,16 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -7767,11 +9018,6 @@ isomorphic-fetch@^3.0.0: node-fetch "^2.6.1" whatwg-fetch "^3.4.1" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" @@ -7782,17 +9028,7 @@ istanbul-lib-coverage@^3.2.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-instrument@^5.0.4: +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== @@ -7832,14 +9068,6 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - istanbul-reports@^3.1.3: version "3.1.6" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" @@ -7848,14 +9076,44 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" - integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== dependencies: - "@jest/types" "^26.6.2" - execa "^4.0.0" - throat "^5.0.0" + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + +jackspeak@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jake@^10.8.5: + version "10.9.1" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.1.tgz#8dc96b7fcc41cb19aa502af506da4e1d56f5e62b" + integrity sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== + dependencies: + "@jest/types" "^27.5.1" + execa "^5.0.0" + throat "^6.0.1" jest-changed-files@^29.7.0: version "29.7.0" @@ -7866,32 +9124,30 @@ jest-changed-files@^29.7.0: jest-util "^29.7.0" p-limit "^3.1.0" -jest-circus@26.6.0: - version "26.6.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-26.6.0.tgz#7d9647b2e7f921181869faae1f90a2629fd70705" - integrity sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng== +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.0" - "@jest/test-result" "^26.6.0" - "@jest/types" "^26.6.0" - "@types/babel__traverse" "^7.0.4" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^26.6.0" + expect "^27.5.1" is-generator-fn "^2.0.0" - jest-each "^26.6.0" - jest-matcher-utils "^26.6.0" - jest-message-util "^26.6.0" - jest-runner "^26.6.0" - jest-runtime "^26.6.0" - jest-snapshot "^26.6.0" - jest-util "^26.6.0" - pretty-format "^26.6.0" - stack-utils "^2.0.2" - throat "^5.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" jest-circus@^29.7.0: version "29.7.0" @@ -7919,24 +9175,23 @@ jest-circus@^29.7.0: slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^26.6.0: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" - integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== dependencies: - "@jest/core" "^26.6.3" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.6.3" - jest-util "^26.6.2" - jest-validate "^26.6.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" prompts "^2.0.1" - yargs "^15.4.1" + yargs "^16.2.0" jest-cli@^29.7.0: version "29.7.0" @@ -7955,29 +9210,35 @@ jest-cli@^29.7.0: jest-validate "^29.7.0" yargs "^17.3.1" -jest-config@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" - integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.3" - "@jest/types" "^26.6.2" - babel-jest "^26.6.3" + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" chalk "^4.0.0" + ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.2" - jest-environment-node "^26.6.2" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.3" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - micromatch "^4.0.2" - pretty-format "^26.6.2" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" jest-config@^29.7.0: version "29.7.0" @@ -8007,7 +9268,7 @@ jest-config@^29.7.0: slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@^26.0.0, jest-diff@^26.6.2: +jest-diff@^26.0.0: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== @@ -8017,6 +9278,16 @@ jest-diff@^26.0.0, jest-diff@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" @@ -8027,10 +9298,10 @@ jest-diff@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== dependencies: detect-newline "^3.0.0" @@ -8041,16 +9312,16 @@ jest-docblock@^29.7.0: dependencies: detect-newline "^3.0.0" -jest-each@^26.6.0, jest-each@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" - integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.5.1" chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.6.2" - pretty-format "^26.6.2" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" jest-each@^29.7.0: version "29.7.0" @@ -8063,30 +9334,30 @@ jest-each@^29.7.0: jest-util "^29.7.0" pretty-format "^29.7.0" -jest-environment-jsdom@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" - integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - jsdom "^16.4.0" - -jest-environment-node@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" - integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" + +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" + jest-mock "^27.5.1" + jest-util "^27.5.1" jest-environment-node@^29.7.0: version "29.7.0" @@ -8105,31 +9376,35 @@ jest-get-type@^26.3.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + jest-get-type@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== -jest-haste-map@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" - integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.5.1" "@types/graceful-fs" "^4.1.2" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - micromatch "^4.0.2" - sane "^4.0.3" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" walker "^1.0.7" optionalDependencies: - fsevents "^2.1.2" + fsevents "^2.3.2" jest-haste-map@^29.7.0: version "29.7.0" @@ -8150,37 +9425,36 @@ jest-haste-map@^29.7.0: optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" - integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^26.6.2" + expect "^27.5.1" is-generator-fn "^2.0.0" - jest-each "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - pretty-format "^26.6.2" - throat "^5.0.0" - -jest-leak-detector@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" - integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== - dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.6.2" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" jest-leak-detector@^29.7.0: version "29.7.0" @@ -8190,15 +9464,15 @@ jest-leak-detector@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-matcher-utils@^26.6.0, jest-matcher-utils@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" - integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== +jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== dependencies: chalk "^4.0.0" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" jest-matcher-utils@^29.7.0: version "29.7.0" @@ -8210,20 +9484,35 @@ jest-matcher-utils@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-message-util@^26.6.0, jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" - integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.3" slash "^3.0.0" - stack-utils "^2.0.2" + stack-utils "^2.0.3" jest-message-util@^29.7.0: version "29.7.0" @@ -8240,12 +9529,12 @@ jest-message-util@^29.7.0: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" - integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.5.1" "@types/node" "*" jest-mock@^29.7.0: @@ -8262,24 +9551,29 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" - integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-regex-util@^28.0.0: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== jest-regex-util@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== -jest-resolve-dependencies@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" - integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== dependencies: - "@jest/types" "^26.6.2" - jest-regex-util "^26.0.0" - jest-snapshot "^26.6.2" + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" jest-resolve-dependencies@^29.7.0: version "29.7.0" @@ -8289,32 +9583,20 @@ jest-resolve-dependencies@^29.7.0: jest-regex-util "^29.6.3" jest-snapshot "^29.7.0" -jest-resolve@26.6.0: - version "26.6.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.0.tgz#070fe7159af87b03e50f52ea5e17ee95bbee40e1" - integrity sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ== - dependencies: - "@jest/types" "^26.6.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.6.0" - read-pkg-up "^7.0.1" - resolve "^1.17.0" - slash "^3.0.0" - -jest-resolve@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" - integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== +jest-resolve@^27.4.2, jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.5.1" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" jest-pnp-resolver "^1.2.2" - jest-util "^26.6.2" - read-pkg-up "^7.0.1" - resolve "^1.18.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" slash "^3.0.0" jest-resolve@^29.7.0: @@ -8332,31 +9614,32 @@ jest-resolve@^29.7.0: resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^26.6.0, jest-runner@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" - integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-docblock "^26.0.0" - jest-haste-map "^26.6.2" - jest-leak-detector "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - jest-runtime "^26.6.3" - jest-util "^26.6.2" - jest-worker "^26.6.2" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" source-map-support "^0.5.6" - throat "^5.0.0" + throat "^6.0.1" jest-runner@^29.7.0: version "29.7.0" @@ -8385,38 +9668,33 @@ jest-runner@^29.7.0: p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^26.6.0, jest-runtime@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" - integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/globals" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/yargs" "^15.0.0" +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" chalk "^4.0.0" - cjs-module-lexer "^0.6.0" + cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" - exit "^0.1.2" + execa "^5.0.0" glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^15.4.1" jest-runtime@^29.7.0: version "29.7.0" @@ -8446,34 +9724,40 @@ jest-runtime@^29.7.0: slash "^3.0.0" strip-bom "^4.0.0" -jest-serializer@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" - integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== dependencies: "@types/node" "*" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" -jest-snapshot@^26.6.0, jest-snapshot@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" - integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/types" "^26.6.2" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.0.0" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^26.6.2" - graceful-fs "^4.2.4" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" natural-compare "^1.4.0" - pretty-format "^26.6.2" + pretty-format "^27.5.1" semver "^7.3.2" jest-snapshot@^29.7.0: @@ -8502,17 +9786,29 @@ jest-snapshot@^29.7.0: pretty-format "^29.7.0" semver "^7.5.3" -jest-util@^26.6.0, jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" - integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" jest-util@^29.0.0, jest-util@^29.7.0: version "29.7.0" @@ -8526,17 +9822,17 @@ jest-util@^29.0.0, jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" + "@jest/types" "^27.5.1" + camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^26.3.0" + jest-get-type "^27.5.1" leven "^3.1.0" - pretty-format "^26.6.2" + pretty-format "^27.5.1" jest-validate@^29.7.0: version "29.7.0" @@ -8550,30 +9846,44 @@ jest-validate@^29.7.0: leven "^3.1.0" pretty-format "^29.7.0" -jest-watch-typeahead@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz#45221b86bb6710b7e97baaa1640ae24a07785e63" - integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg== +jest-watch-typeahead@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz#b4a6826dfb9c9420da2f7bc900de59dad11266a9" + integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== dependencies: ansi-escapes "^4.3.1" chalk "^4.0.0" - jest-regex-util "^26.0.0" - jest-watcher "^26.3.0" - slash "^3.0.0" + jest-regex-util "^28.0.0" + jest-watcher "^28.0.0" + slash "^4.0.0" + string-length "^5.0.1" + strip-ansi "^7.0.1" + +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== + dependencies: + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" string-length "^4.0.1" - strip-ansi "^6.0.0" -jest-watcher@^26.3.0, jest-watcher@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" - integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== +jest-watcher@^28.0.0: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" + integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== dependencies: - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^26.6.2" + emittery "^0.10.2" + jest-util "^28.1.3" string-length "^4.0.1" jest-watcher@^29.7.0: @@ -8590,15 +9900,7 @@ jest-watcher@^29.7.0: jest-util "^29.7.0" string-length "^4.0.1" -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^26.5.0, jest-worker@^26.6.2: +jest-worker@^26.2.1: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== @@ -8607,6 +9909,24 @@ jest-worker@^26.5.0, jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" +jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^28.0.2: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest-worker@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" @@ -8617,14 +9937,14 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@26.6.0: - version "26.6.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.0.tgz#546b25a1d8c888569dbbe93cae131748086a4a25" - integrity sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA== +jest@^27.4.3: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== dependencies: - "@jest/core" "^26.6.0" + "@jest/core" "^27.5.1" import-local "^3.0.2" - jest-cli "^26.6.0" + jest-cli "^27.5.1" jest@^29.7.0: version "29.7.0" @@ -8636,6 +9956,11 @@ jest@^29.7.0: import-local "^3.0.2" jest-cli "^29.7.0" +jiti@^1.21.0: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -8649,18 +9974,20 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" -jsdom@^16.4.0: - version "16.5.3" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.5.3.tgz#13a755b3950eb938b4482c407238ddf16f0d2136" - integrity sha512-Qj1H+PEvUsOtdPJ056ewXM4UJPCi4hhLA8wpiz9F2YvsRBhuFsXxtrIFAgGBDynQA9isAMGE91PfUYbdMPXuTA== +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== dependencies: abab "^2.0.5" - acorn "^8.1.0" + acorn "^8.2.4" acorn-globals "^6.0.0" cssom "^0.4.4" cssstyle "^2.3.0" @@ -8668,12 +9995,13 @@ jsdom@^16.4.0: decimal.js "^10.2.1" domexception "^2.0.1" escodegen "^2.0.0" + form-data "^3.0.0" html-encoding-sniffer "^2.0.1" - is-potential-custom-element-name "^1.0.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" nwsapi "^2.2.0" parse5 "6.0.1" - request "^2.88.2" - request-promise-native "^1.0.9" saxes "^5.0.1" symbol-tree "^3.2.4" tough-cookie "^4.0.0" @@ -8683,7 +10011,7 @@ jsdom@^16.4.0: whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" whatwg-url "^8.5.0" - ws "^7.4.4" + ws "^7.4.6" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -8696,12 +10024,7 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -8716,21 +10039,16 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - json2mq@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" @@ -8743,10 +10061,10 @@ json3@^3.3.3: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" @@ -8757,18 +10075,11 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" -json5@^2.2.3: +json5@^2.2.0, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -8778,17 +10089,12 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" +jsonpointer@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: +"jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.2.0" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== @@ -8796,6 +10102,16 @@ jsprim@^1.2.2: array-includes "^3.1.2" object.assign "^4.1.2" +jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -8835,25 +10151,30 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== +klona@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= +language-subtag-registry@^0.3.20: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== dependencies: - language-subtag-registry "~0.3.2" + language-subtag-registry "^0.3.20" -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== +launch-editor@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" + picocolors "^1.0.0" + shell-quote "^1.8.1" leven@^3.1.0: version "3.1.0" @@ -8876,36 +10197,27 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lilconfig@^2.0.3, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" + integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@2.0.0, loader-utils@^2.0.0: +loader-utils@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== @@ -8914,22 +10226,19 @@ loader-utils@2.0.0, loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== +loader-utils@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" - json5 "^1.0.1" + json5 "^2.1.2" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" +loader-utils@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== locate-path@^3.0.0: version "3.0.0" @@ -8946,21 +10255,18 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash-es@^4.2.1: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -8971,32 +10277,22 @@ lodash.memoize@4.x, lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.6.1, lodash@^4.7.0: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.2.1, lodash@^4.6.1, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -9020,6 +10316,11 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" +lru-cache@^10.2.0: + version "10.2.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" + integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -9046,15 +10347,7 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.4" -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -9092,15 +10385,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" @@ -9116,6 +10400,13 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= +memfs@^3.1.2, memfs@^3.4.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -9142,7 +10433,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -9150,12 +10441,7 @@ merge2@^1.3.0: methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" @@ -9184,7 +10470,7 @@ micromatch@^4.0.0, micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.2.3" -micromatch@^4.0.4: +micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -9192,26 +10478,30 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.47.0, "mime-db@>= 1.43.0 < 2": version "1.47.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24: version "2.1.30" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== dependencies: mime-db "1.47.0" +mime-types@^2.1.31, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -9247,16 +10537,6 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" -mini-css-extract-plugin@0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" - integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - mini-css-extract-plugin@^1.3.9: version "1.6.0" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.0.tgz#b4db2525af2624899ed64a23b0016e0036411893" @@ -9266,24 +10546,48 @@ mini-css-extract-plugin@^1.3.9: schema-utils "^3.0.0" webpack-sources "^1.1.0" -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: +mini-css-extract-plugin@^2.4.5: + version "2.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz#c73a1327ccf466f69026ac22a8e8fd707b78a235" + integrity sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA== + dependencies: + schema-utils "^4.0.0" + tapable "^2.2.1" + +minimalistic-assert@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@3.0.4, minimatch@^3.0.4: +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: +minimatch@^3.0.5, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.1: + version "9.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -9316,6 +10620,11 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4: + version "7.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.1.tgz#f7f85aff59aa22f110b20e27692465cf3bf89481" + integrity sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA== + minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -9324,22 +10633,6 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -9348,7 +10641,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -9379,18 +10672,6 @@ moment@2.29.4, "moment@>= 2.9.0", moment@^2.29.4: resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -9406,7 +10687,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -9424,15 +10705,32 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nan@^2.12.1: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -nanoid@^3.1.23: - version "3.1.23" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" - integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== nanomatch@^1.2.9: version "1.2.13" @@ -9451,12 +10749,10 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -native-url@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" - integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== - dependencies: - querystring "^0.2.0" +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== natural-compare@^1.4.0: version "1.4.0" @@ -9468,16 +10764,16 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -9511,58 +10807,22 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" - integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== - dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" - -node-releases@^1.1.61, node-releases@^1.1.71: +node-releases@^1.1.71: version "1.1.71" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== @@ -9572,15 +10832,10 @@ node-releases@^2.0.13: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== normalize-path@^2.1.1: version "2.1.1" @@ -9599,20 +10854,10 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-run-path@^2.0.0: version "2.0.2" @@ -9621,7 +10866,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0, npm-run-path@^4.0.1: +npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -9635,22 +10880,19 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -9664,6 +10906,16 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + object-inspect@^1.9.0: version "1.10.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" @@ -9699,27 +10951,36 @@ object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.entries@^1.1.0, object.entries@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" - integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== +object.assign@^4.1.4, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - has "^1.0.3" + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" -object.fromentries@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" - integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== +object.entries@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" + integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +object.fromentries@^2.0.7: + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: +object.getownpropertydescriptors@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== @@ -9728,6 +10989,24 @@ object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0 define-properties "^1.1.3" es-abstract "^1.18.0-next.2" +object.groupby@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.hasown@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" + integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== + dependencies: + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -9735,7 +11014,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.3: +object.values@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== @@ -9745,11 +11024,27 @@ object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.3: es-abstract "^1.18.0-next.2" has "^1.0.3" +object.values@^1.1.6, object.values@^1.1.7: + version "1.2.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" + integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -9769,20 +11064,21 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@^7.0.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== +open@^8.0.9, open@^8.4.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" opener@^1.5.2: version "1.5.2" @@ -9796,14 +11092,6 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optimize-css-assets-webpack-plugin@5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" - integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -9816,17 +11104,17 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== dependencies: deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" + word-wrap "^1.2.5" original@^1.0.0: version "1.0.2" @@ -9835,28 +11123,11 @@ original@^1.0.0: dependencies: url-parse "^1.4.3" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -9871,13 +11142,6 @@ p-limit@^3.0.2, p-limit@^3.1.0: dependencies: yocto-queue "^0.1.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -9892,6 +11156,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -9911,31 +11182,20 @@ p-retry@^3.0.1: dependencies: retry "^0.12.0" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@^3.0.3: +param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== @@ -9950,32 +11210,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -10009,11 +11243,6 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -10059,6 +11288,14 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.11.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -10071,34 +11308,21 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -10114,10 +11338,10 @@ picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^2.0.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pify@^4.0.1: version "4.0.1" @@ -10148,13 +11372,6 @@ pirates@^4.0.4: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -10169,20 +11386,13 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@3.1.0: +pkg-up@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: find-up "^3.0.0" -pnp-webpack-plugin@1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - popper.js@^1.16.0: version "1.16.1" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" @@ -10210,602 +11420,527 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-attribute-case-insensitive@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" - integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + +postcss-attribute-case-insensitive@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" + integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== dependencies: - postcss "^7.0.2" - postcss-selector-parser "^6.0.2" + postcss-selector-parser "^6.0.10" -postcss-browser-comments@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" - integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== +postcss-browser-comments@^4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz#bcfc86134df5807f5d3c0eefa191d42136b5e72a" + integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== dependencies: - postcss "^7" + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== +postcss-clamp@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" + integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" + postcss-value-parser "^4.2.0" -postcss-color-functional-notation@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" - integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== +postcss-color-functional-notation@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" + integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" + postcss-value-parser "^4.2.0" -postcss-color-gray@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" - integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== +postcss-color-hex-alpha@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" + integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.5" - postcss-values-parser "^2.0.0" + postcss-value-parser "^4.2.0" -postcss-color-hex-alpha@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" - integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== +postcss-color-rebeccapurple@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" + integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== dependencies: - postcss "^7.0.14" - postcss-values-parser "^2.0.1" + postcss-value-parser "^4.2.0" -postcss-color-mod-function@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" - integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" -postcss-color-rebeccapurple@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" - integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== +postcss-custom-media@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" + integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== +postcss-custom-properties@^12.1.10: + version "12.1.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz#d14bb9b3989ac4d40aaa0e110b43be67ac7845cf" + integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-custom-media@^7.0.8: - version "7.0.8" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" - integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== +postcss-custom-selectors@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" + integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== dependencies: - postcss "^7.0.14" + postcss-selector-parser "^6.0.4" -postcss-custom-properties@^8.0.11: - version "8.0.11" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" - integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== +postcss-dir-pseudo-class@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" + integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== dependencies: - postcss "^7.0.17" - postcss-values-parser "^2.0.1" + postcss-selector-parser "^6.0.10" -postcss-custom-selectors@^5.1.2: +postcss-discard-comments@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" - integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== -postcss-dir-pseudo-class@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" - integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== +postcss-double-position-gradients@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" + integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== dependencies: - postcss "^7.0.0" + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== +postcss-env-function@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" + integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== dependencies: - postcss "^7.0.0" + postcss-value-parser "^4.2.0" -postcss-double-position-gradients@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" - integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== - dependencies: - postcss "^7.0.5" - postcss-values-parser "^2.0.0" +postcss-flexbugs-fixes@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" + integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== -postcss-env-function@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" - integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== +postcss-focus-visible@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" + postcss-selector-parser "^6.0.9" -postcss-flexbugs-fixes@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" - integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== +postcss-focus-within@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== dependencies: - postcss "^7.0.26" + postcss-selector-parser "^6.0.9" -postcss-focus-visible@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" - integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== - dependencies: - postcss "^7.0.2" +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== -postcss-focus-within@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" - integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== - dependencies: - postcss "^7.0.2" +postcss-gap-properties@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" + integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== -postcss-font-variant@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" - integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== +postcss-image-set-function@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" + integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== dependencies: - postcss "^7.0.2" + postcss-value-parser "^4.2.0" -postcss-gap-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" - integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== dependencies: - postcss "^7.0.2" + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" -postcss-image-set-function@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" - integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" +postcss-initial@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" + integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== -postcss-initial@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" - integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== dependencies: - postcss "^7.0.2" + camelcase-css "^2.0.1" -postcss-lab-function@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" - integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== +postcss-lab-function@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" + integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" - integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" + lilconfig "^3.0.0" + yaml "^2.3.4" -postcss-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== +postcss-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" -postcss-logical@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" - integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== - dependencies: - postcss "^7.0.2" +postcss-logical@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== -postcss-media-minmax@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" - integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== - dependencies: - postcss "^7.0.2" +postcss-media-minmax@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" + integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== dependencies: - browserslist "^4.0.0" + browserslist "^4.21.4" caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" + postcss-selector-parser "^6.0.5" -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" +postcss-modules-extract-imports@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== -postcss-modules-local-by-default@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" - integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== +postcss-modules-local-by-default@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" + integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== dependencies: - icss-utils "^4.1.1" - postcss "^7.0.32" + icss-utils "^5.0.0" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-scope@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== +postcss-modules-scope@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" + integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" + postcss-selector-parser "^6.0.4" -postcss-nesting@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" - integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: - postcss "^7.0.2" + icss-utils "^5.0.0" -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== dependencies: - postcss "^7.0.0" + postcss-selector-parser "^6.0.11" -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== +postcss-nesting@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be" + integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" -postcss-normalize@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" - integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== dependencies: - "@csstools/normalize.css" "^10.1.0" - browserslist "^4.6.2" - postcss "^7.0.17" - postcss-browser-comments "^3.0.0" - sanitize.css "^10.0.0" + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-overflow-shorthand@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" - integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== +postcss-normalize@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-10.0.1.tgz#464692676b52792a06b06880a176279216540dd7" + integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== dependencies: - postcss "^7.0.2" + "@csstools/normalize.css" "*" + postcss-browser-comments "^4" + sanitize.css "*" -postcss-page-break@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" - integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== - dependencies: - postcss "^7.0.2" +postcss-opacity-percentage@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz#5b89b35551a556e20c5d23eb5260fbfcf5245da6" + integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== -postcss-place@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" - integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -postcss-preset-env@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" - integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== - dependencies: - autoprefixer "^9.6.1" - browserslist "^4.6.4" - caniuse-lite "^1.0.30000981" - css-blank-pseudo "^0.1.4" - css-has-pseudo "^0.10.0" - css-prefers-color-scheme "^3.1.1" - cssdb "^4.4.0" - postcss "^7.0.17" - postcss-attribute-case-insensitive "^4.0.1" - postcss-color-functional-notation "^2.0.1" - postcss-color-gray "^5.0.0" - postcss-color-hex-alpha "^5.0.3" - postcss-color-mod-function "^3.0.3" - postcss-color-rebeccapurple "^4.0.1" - postcss-custom-media "^7.0.8" - postcss-custom-properties "^8.0.11" - postcss-custom-selectors "^5.1.2" - postcss-dir-pseudo-class "^5.0.0" - postcss-double-position-gradients "^1.0.0" - postcss-env-function "^2.0.2" - postcss-focus-visible "^4.0.0" - postcss-focus-within "^3.0.0" - postcss-font-variant "^4.0.0" - postcss-gap-properties "^2.0.0" - postcss-image-set-function "^3.0.1" - postcss-initial "^3.0.0" - postcss-lab-function "^2.0.1" - postcss-logical "^3.0.0" - postcss-media-minmax "^4.0.0" - postcss-nesting "^7.0.0" - postcss-overflow-shorthand "^2.0.0" - postcss-page-break "^2.0.0" - postcss-place "^4.0.1" - postcss-pseudo-class-any-link "^6.0.0" - postcss-replace-overflow-wrap "^3.0.0" - postcss-selector-matches "^4.0.0" - postcss-selector-not "^4.0.0" - -postcss-pseudo-class-any-link@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" - integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== +postcss-overflow-shorthand@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" + integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" + postcss-value-parser "^4.2.0" -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== +postcss-place@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" + integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-replace-overflow-wrap@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" - integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== +postcss-preset-env@^7.0.1: + version "7.8.3" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz#2a50f5e612c3149cc7af75634e202a5b2ad4f1e2" + integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== + dependencies: + "@csstools/postcss-cascade-layers" "^1.1.1" + "@csstools/postcss-color-function" "^1.1.1" + "@csstools/postcss-font-format-keywords" "^1.0.1" + "@csstools/postcss-hwb-function" "^1.0.2" + "@csstools/postcss-ic-unit" "^1.0.1" + "@csstools/postcss-is-pseudo-class" "^2.0.7" + "@csstools/postcss-nested-calc" "^1.0.0" + "@csstools/postcss-normalize-display-values" "^1.0.1" + "@csstools/postcss-oklab-function" "^1.1.1" + "@csstools/postcss-progressive-custom-properties" "^1.3.0" + "@csstools/postcss-stepped-value-functions" "^1.0.1" + "@csstools/postcss-text-decoration-shorthand" "^1.0.0" + "@csstools/postcss-trigonometric-functions" "^1.0.2" + "@csstools/postcss-unset-value" "^1.0.2" + autoprefixer "^10.4.13" + browserslist "^4.21.4" + css-blank-pseudo "^3.0.3" + css-has-pseudo "^3.0.4" + css-prefers-color-scheme "^6.0.3" + cssdb "^7.1.0" + postcss-attribute-case-insensitive "^5.0.2" + postcss-clamp "^4.1.0" + postcss-color-functional-notation "^4.2.4" + postcss-color-hex-alpha "^8.0.4" + postcss-color-rebeccapurple "^7.1.1" + postcss-custom-media "^8.0.2" + postcss-custom-properties "^12.1.10" + postcss-custom-selectors "^6.0.3" + postcss-dir-pseudo-class "^6.0.5" + postcss-double-position-gradients "^3.1.2" + postcss-env-function "^4.0.6" + postcss-focus-visible "^6.0.4" + postcss-focus-within "^5.0.4" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^3.0.5" + postcss-image-set-function "^4.0.7" + postcss-initial "^4.0.1" + postcss-lab-function "^4.2.1" + postcss-logical "^5.0.4" + postcss-media-minmax "^5.0.0" + postcss-nesting "^10.2.0" + postcss-opacity-percentage "^1.1.2" + postcss-overflow-shorthand "^3.0.4" + postcss-page-break "^3.0.4" + postcss-place "^7.0.5" + postcss-pseudo-class-any-link "^7.1.6" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-pseudo-class-any-link@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" + integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== dependencies: - postcss "^7.0.2" + browserslist "^4.21.4" + caniuse-api "^3.0.0" -postcss-safe-parser@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz#459dd27df6bc2ba64608824ba39e45dacf5e852d" - integrity sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ== +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== dependencies: - postcss "^8.1.0" + postcss-value-parser "^4.2.0" -postcss-selector-matches@^4.0.0: +postcss-replace-overflow-wrap@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" - integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-not@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" - integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== +postcss-selector-not@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" + integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" + postcss-selector-parser "^6.0.10" -postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.16" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" + integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" + cssesc "^3.0.0" + util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: +postcss-selector-parser@^6.0.2: version "6.0.6" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== @@ -10813,69 +11948,47 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" - integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" + postcss-value-parser "^4.2.0" + svgo "^2.7.0" -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" + postcss-selector-parser "^6.0.5" -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: +postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" - integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss@7.0.21: - version "7.0.21" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" - integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== +postcss@^7.0.35: + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== dependencies: - chalk "^2.4.2" + picocolors "^0.2.1" source-map "^0.6.1" - supports-color "^6.1.0" -postcss@^8.1.0: - version "8.2.15" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65" - integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q== +postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.4: + version "8.4.38" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== dependencies: - colorette "^1.2.2" - nanoid "^3.1.23" - source-map "^0.6.1" + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.2.0" prelude-ls@^1.2.1: version "1.2.1" @@ -10887,25 +12000,20 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -pretty-bytes@^5.3.0: +pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== -pretty-error@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" - integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== dependencies: lodash "^4.17.20" - renderkid "^2.0.4" + renderkid "^3.0.0" -pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2: +pretty-format@^26.0.0, pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== @@ -10915,6 +12023,25 @@ pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" +pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== + dependencies: + "@jest/schemas" "^28.1.3" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -10934,11 +12061,6 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -10951,14 +12073,6 @@ promise@^8.1.0: dependencies: asap "~2.0.6" -prompts@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" - integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - prompts@^2.0.1: version "2.4.1" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" @@ -10967,6 +12081,14 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" @@ -10993,36 +12115,24 @@ proxy-addr@~2.0.5: forwarded "~0.1.2" ipaddr.js "1.9.1" +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -psl@^1.1.28, psl@^1.1.33: +psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -11031,25 +12141,11 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -11070,39 +12166,23 @@ qrcode.react@^3.1.0: resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.1.0.tgz#5c91ddc0340f768316fbdb8fff2765134c2aecd8" integrity sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q== +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -querystring@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== - querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -11120,21 +12200,13 @@ raf@^3.4.1: dependencies: performance-now "^2.1.0" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -11150,6 +12222,16 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + raw-loader@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" @@ -11875,17 +12957,17 @@ rc-virtual-list@^3.4.13, rc-virtual-list@^3.4.8: rc-resize-observer "^1.0.0" rc-util "^5.15.0" -react-app-polyfill@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz#a0bea50f078b8a082970a9d853dc34b6dcc6a3cf" - integrity sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA== +react-app-polyfill@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7" + integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== dependencies: - core-js "^3.6.5" + core-js "^3.19.2" object-assign "^4.1.1" promise "^8.1.0" raf "^3.4.1" - regenerator-runtime "^0.13.7" - whatwg-fetch "^3.4.1" + regenerator-runtime "^0.13.9" + whatwg-fetch "^3.6.2" react-autocomplete@1.8.1: version "1.8.1" @@ -11900,35 +12982,35 @@ react-deep-force-update@^2.1.1: resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-2.1.3.tgz#740612322e617bcced38f61794a4af75dc3d98e7" integrity sha512-lqD4eHKVuB65RyO/hGbEST53E2/GPbcIPcFYyeW/p4vNngtH4G7jnKGlU6u1OqrFo0uNfIvwuBOg98IbLHlNEA== -react-dev-utils@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a" - integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== - dependencies: - "@babel/code-frame" "7.10.4" - address "1.1.2" - browserslist "4.14.2" - chalk "2.4.2" - cross-spawn "7.0.3" - detect-port-alt "1.1.6" - escape-string-regexp "2.0.0" - filesize "6.1.0" - find-up "4.1.0" - fork-ts-checker-webpack-plugin "4.1.6" - global-modules "2.0.0" - globby "11.0.1" - gzip-size "5.1.1" - immer "8.0.1" - is-root "2.1.0" - loader-utils "2.0.0" - open "^7.0.2" - pkg-up "3.1.0" - prompts "2.4.0" - react-error-overlay "^6.0.9" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - strip-ansi "6.0.0" - text-table "0.2.0" +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== + dependencies: + "@babel/code-frame" "^7.16.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.11" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" react-dom@^17.0.1: version "17.0.2" @@ -11939,10 +13021,10 @@ react-dom@^17.0.1: object-assign "^4.1.1" scheduler "^0.20.2" -react-error-overlay@^6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" - integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== +react-error-overlay@^6.0.11: + version "6.0.11" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== react-fast-compare@^3.1.1: version "3.2.0" @@ -12032,10 +13114,10 @@ react-redux@^5.0.6: react-is "^16.6.0" react-lifecycles-compat "^3.0.0" -react-refresh@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" - integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== +react-refresh@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" + integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== react-resize-detector@^8.0.4: version "8.1.0" @@ -12098,71 +13180,60 @@ react-router@^4.3.1: prop-types "^15.6.1" warning "^4.0.1" -react-scripts@4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-4.0.3.tgz#b1cafed7c3fa603e7628ba0f187787964cb5d345" - integrity sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A== - dependencies: - "@babel/core" "7.12.3" - "@pmmmwh/react-refresh-webpack-plugin" "0.4.3" - "@svgr/webpack" "5.5.0" - "@typescript-eslint/eslint-plugin" "^4.5.0" - "@typescript-eslint/parser" "^4.5.0" - babel-eslint "^10.1.0" - babel-jest "^26.6.0" - babel-loader "8.1.0" - babel-plugin-named-asset-import "^0.3.7" - babel-preset-react-app "^10.0.0" +react-scripts@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003" + integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== + dependencies: + "@babel/core" "^7.16.0" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" + "@svgr/webpack" "^5.5.0" + babel-jest "^27.4.2" + babel-loader "^8.2.3" + babel-plugin-named-asset-import "^0.3.8" + babel-preset-react-app "^10.0.1" bfj "^7.0.2" - camelcase "^6.1.0" - case-sensitive-paths-webpack-plugin "2.3.0" - css-loader "4.3.0" - dotenv "8.2.0" - dotenv-expand "5.1.0" - eslint "^7.11.0" - eslint-config-react-app "^6.0.0" - eslint-plugin-flowtype "^5.2.0" - eslint-plugin-import "^2.22.1" - eslint-plugin-jest "^24.1.0" - eslint-plugin-jsx-a11y "^6.3.1" - eslint-plugin-react "^7.21.5" - eslint-plugin-react-hooks "^4.2.0" - eslint-plugin-testing-library "^3.9.2" - eslint-webpack-plugin "^2.5.2" - file-loader "6.1.1" - fs-extra "^9.0.1" - html-webpack-plugin "4.5.0" - identity-obj-proxy "3.0.0" - jest "26.6.0" - jest-circus "26.6.0" - jest-resolve "26.6.0" - jest-watch-typeahead "0.6.1" - mini-css-extract-plugin "0.11.3" - optimize-css-assets-webpack-plugin "5.0.4" - pnp-webpack-plugin "1.6.4" - postcss-flexbugs-fixes "4.2.1" - postcss-loader "3.0.0" - postcss-normalize "8.0.1" - postcss-preset-env "6.7.0" - postcss-safe-parser "5.0.2" - prompts "2.4.0" - react-app-polyfill "^2.0.0" - react-dev-utils "^11.0.3" - react-refresh "^0.8.3" - resolve "1.18.1" - resolve-url-loader "^3.1.2" - sass-loader "^10.0.5" - semver "7.3.2" - style-loader "1.3.0" - terser-webpack-plugin "4.2.3" - ts-pnp "1.2.0" - url-loader "4.1.1" - webpack "4.44.2" - webpack-dev-server "3.11.1" - webpack-manifest-plugin "2.2.0" - workbox-webpack-plugin "5.1.4" + browserslist "^4.18.1" + camelcase "^6.2.1" + case-sensitive-paths-webpack-plugin "^2.4.0" + css-loader "^6.5.1" + css-minimizer-webpack-plugin "^3.2.0" + dotenv "^10.0.0" + dotenv-expand "^5.1.0" + eslint "^8.3.0" + eslint-config-react-app "^7.0.1" + eslint-webpack-plugin "^3.1.1" + file-loader "^6.2.0" + fs-extra "^10.0.0" + html-webpack-plugin "^5.5.0" + identity-obj-proxy "^3.0.0" + jest "^27.4.3" + jest-resolve "^27.4.2" + jest-watch-typeahead "^1.0.0" + mini-css-extract-plugin "^2.4.5" + postcss "^8.4.4" + postcss-flexbugs-fixes "^5.0.2" + postcss-loader "^6.2.1" + postcss-normalize "^10.0.1" + postcss-preset-env "^7.0.1" + prompts "^2.4.2" + react-app-polyfill "^3.0.0" + react-dev-utils "^12.0.1" + react-refresh "^0.11.0" + resolve "^1.20.0" + resolve-url-loader "^4.0.0" + sass-loader "^12.3.0" + semver "^7.3.5" + source-map-loader "^3.0.0" + style-loader "^3.3.1" + tailwindcss "^3.0.2" + terser-webpack-plugin "^5.2.5" + webpack "^5.64.4" + webpack-dev-server "^4.6.0" + webpack-manifest-plugin "^4.0.2" + workbox-webpack-plugin "^6.4.1" optionalDependencies: - fsevents "^2.1.3" + fsevents "^2.3.2" react-side-effect@^2.1.0: version "2.1.1" @@ -12211,43 +13282,14 @@ react@^17.0.1: loose-envify "^1.1.0" object-assign "^4.1.1" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" + pify "^2.3.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.1, readable-stream@^2.0.2: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -12260,7 +13302,7 @@ read-pkg@^5.2.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: +readable-stream@^3.0.6: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -12285,6 +13327,13 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + recharts-scale@^0.4.4: version "0.4.5" resolved "https://registry.yarnpkg.com/recharts-scale/-/recharts-scale-0.4.5.tgz#0969271f14e732e642fcc5bd4ab270d6e87dd1d9" @@ -12307,19 +13356,19 @@ recharts@^2.9.0: tiny-invariant "^1.3.1" victory-vendor "^36.6.8" -rechoir@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" - integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== dependencies: - resolve "^1.9.0" + resolve "^1.20.0" -recursive-readdir@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== dependencies: - minimatch "3.0.4" + minimatch "^3.0.5" redbox-react@^1.3.6: version "1.6.0" @@ -12361,6 +13410,26 @@ redux@^3.7.2: loose-envify "^1.1.0" symbol-observable "^1.0.3" +reflect.getprototypeof@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" + integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.1" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -12368,7 +13437,7 @@ regenerate-unicode-properties@^8.2.0: dependencies: regenerate "^1.4.0" -regenerate@^1.4.0: +regenerate@^1.4.0, regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== @@ -12378,12 +13447,12 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.11: +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: +regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== @@ -12400,6 +13469,13 @@ regenerator-transform@^0.14.2: dependencies: "@babel/runtime" "^7.8.4" +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -12413,7 +13489,7 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: +regexp.prototype.flags@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== @@ -12421,10 +13497,15 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: call-bind "^1.0.2" define-properties "^1.1.3" -regexpp@^3.0.0, regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" regexpu-core@^4.7.1: version "4.7.1" @@ -12438,6 +13519,18 @@ regexpu-core@^4.7.1: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" @@ -12450,6 +13543,13 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" @@ -12460,16 +13560,16 @@ remove-trailing-separator@^1.0.1: resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= -renderkid@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" - integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== dependencies: - css-select "^2.0.2" - dom-converter "^0.2" - htmlparser2 "^3.10.1" - lodash "^4.17.20" - strip-ansi "^3.0.0" + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" repeat-element@^1.1.2: version "1.1.4" @@ -12481,48 +13581,6 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -12582,20 +13640,15 @@ resolve-pathname@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -resolve-url-loader@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.3.tgz#49ec68340f67d8d2ab6b401948d5def3ab2d0367" - integrity sha512-WbDSNFiKPPLem1ln+EVTE+bFUBdTTytfQZWbmghroaFNFaAVmGq0Saqw6F/306CwgPXsGwXVxbODE+3xAo/YbA== - dependencies: - adjust-sourcemap-loader "3.0.0" - camelcase "5.3.1" - compose-function "3.0.3" - convert-source-map "1.7.0" - es6-iterator "2.0.3" - loader-utils "1.2.3" - postcss "7.0.21" - rework "1.0.1" - rework-visit "1.0.0" +resolve-url-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" + integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== + dependencies: + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^7.0.35" source-map "0.6.1" resolve-url@^0.2.1: @@ -12603,20 +13656,26 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve.exports@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" + integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== + resolve.exports@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" - integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== +resolve@^1.1.7, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.0.0" - path-parse "^1.0.6" + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.8.1, resolve@^1.9.0: +resolve@^1.14.2: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -12624,23 +13683,15 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.1 is-core-module "^2.2.0" path-parse "^1.0.6" -resolve@^1.20.0: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== +resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== dependencies: is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -12651,35 +13702,17 @@ retry@^0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rework-visit@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" - integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= - -rework@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" - integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= - dependencies: - convert-source-map "^0.3.3" - css "^2.0.0" - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@^2.5.4, rimraf@^2.6.3: +rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -12693,53 +13726,22 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rollup-plugin-babel@^4.3.3: - version "4.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-terser@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" - integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== +rollup-plugin-terser@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" serialize-javascript "^4.0.0" - terser "^4.6.2" - -rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^1.31.1: - version "1.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" + terser "^5.0.0" -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== +rollup@^2.43.1: + version "2.79.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + optionalDependencies: + fsevents "~2.3.2" run-parallel@^1.1.9: version "1.2.0" @@ -12748,13 +13750,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - rxjs@^6.6.6: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" @@ -12769,16 +13764,35 @@ rxjs@^7.8.1: dependencies: tslib "^2.1.0" +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -12786,41 +13800,23 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -sanitize.css@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" - integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== +sanitize.css@*: + version "13.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" + integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== -sass-loader@^10.0.5: - version "10.2.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.2.0.tgz#3d64c1590f911013b3fa48a0b22a83d5e1494716" - integrity sha512-kUceLzC1gIHz0zNJPpqRsJyisWatGYNFRmv2CKZK2/ngMJgLqxTbXwe/hJ85luyvZkgqU3VlJ33UVF2T/0g6mw== +sass-loader@^12.3.0: + version "12.6.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" + integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== dependencies: klona "^2.0.4" - loader-utils "^2.0.0" neo-async "^2.6.2" - schema-utils "^3.0.0" - semver "^7.3.2" sass@^1.32.8: version "1.32.13" @@ -12849,6 +13845,15 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -12858,7 +13863,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.6.5, schema-utils@^2.7.0, schema-utils@^2.7.1: +schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -12876,6 +13881,25 @@ schema-utils@^3.0.0: ajv "^6.12.5" ajv-keywords "^3.5.2" +schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + scroll-into-view-if-needed@^3.0.3: version "3.0.10" resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.0.10.tgz#38fbfe770d490baff0fb2ba34ae3539f6ec44e13" @@ -12902,20 +13926,23 @@ selfsigned@^1.10.8: dependencies: node-forge "^0.10.0" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +selfsigned@^2.1.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" @@ -12927,13 +13954,18 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: +semver@^7.3.2, semver@^7.3.4: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" +semver@^7.3.5, semver@^7.3.7: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" @@ -12960,6 +13992,25 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -12974,6 +14025,13 @@ serialize-javascript@^5.0.1: dependencies: randombytes "^2.1.0" +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -12997,11 +14055,43 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.1, set-function-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -13012,11 +14102,6 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -13027,13 +14112,10 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== shallow-clone@^3.0.0: version "3.0.1" @@ -13066,15 +14148,10 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +shell-quote@^1.7.3, shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== side-channel@^1.0.4: version "1.0.4" @@ -13085,6 +14162,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -13095,12 +14182,10 @@ signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== sirv@^1.0.7: version "1.0.11" @@ -13121,14 +14206,10 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^4.0.0: +slash@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== snapdragon-node@^2.0.1: version "2.1.1" @@ -13181,19 +14262,35 @@ sockjs@^0.3.21: uuid "^3.4.0" websocket-driver "^0.7.4" -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: - is-plain-obj "^1.0.0" + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" -source-list-map@^2.0.0: +source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: +source-map-js@^1.0.1, source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + +source-map-loader@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.2.tgz#af23192f9b344daa729f6772933194cc5fa54fee" + integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== + dependencies: + abab "^2.0.5" + iconv-lite "^0.6.3" + source-map-js "^1.0.1" + +source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== @@ -13220,7 +14317,7 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: +source-map-support@^0.5.6: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -13228,6 +14325,14 @@ source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.1 buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" @@ -13248,11 +14353,18 @@ source-map@^0.5.0, source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.7.3, source-map@~0.7.2: +source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +source-map@^0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + sourcemap-codec@^1.4.4: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" @@ -13265,32 +14377,6 @@ sourcemapped-stacktrace@^1.1.6: dependencies: source-map "0.5.6" -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== - spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" @@ -13326,28 +14412,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" @@ -13360,13 +14424,6 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -stack-utils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" - integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== - dependencies: - escape-string-regexp "^2.0.0" - stack-utils@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" @@ -13392,53 +14449,16 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - string-convert@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" @@ -13452,11 +14472,28 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +string-length@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" + integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== + dependencies: + char-regex "^2.0.0" + strip-ansi "^7.0.1" + string-natural-compare@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -13475,27 +14512,42 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" -string.prototype.matchall@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz#608f255e93e072107f5de066f81a2dfb78cf6b29" - integrity sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has-symbols "^1.0.1" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" - side-channel "^1.0.4" +string.prototype.matchall@^4.0.10, string.prototype.matchall@^4.0.6: + version "4.0.11" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" + integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + regexp.prototype.flags "^1.5.2" + set-function-name "^2.0.2" + side-channel "^1.0.6" + +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" string.prototype.trimend@^1.0.4: version "1.0.4" @@ -13505,6 +14557,15 @@ string.prototype.trimend@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string.prototype.trimstart@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" @@ -13513,7 +14574,16 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -13536,14 +14606,14 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@6.0.0, strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^5.0.0" + ansi-regex "^5.0.1" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -13557,12 +14627,19 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: - ansi-regex "^5.0.1" + ansi-regex "^5.0.0" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" strip-bom@^3.0.0: version "3.0.0" @@ -13574,13 +14651,10 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-comments@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" - integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== - dependencies: - babel-extract-comments "^1.0.0" - babel-plugin-transform-object-rest-spread "^6.26.0" +strip-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== strip-eof@^1.0.0: version "1.0.0" @@ -13599,33 +14673,42 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -style-loader@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" - integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.7.0" +style-loader@^3.3.1: + version "3.3.4" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" + integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" stylis@^4.0.13: version "4.1.3" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -13672,7 +14755,7 @@ svg-parser@^2.0.2: resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svgo@^1.0.0, svgo@^1.2.2: +svgo@^1.2.2: version "1.3.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== @@ -13691,6 +14774,19 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + symbol-observable@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -13701,23 +14797,44 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -table@^6.0.4: - version "6.7.0" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.0.tgz#26274751f0ee099c547f6cb91d3eff0d61d155b2" - integrity sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - -tapable@^1.0.0, tapable@^1.1.3: +tailwindcss@^3.0.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.3.tgz#be48f5283df77dfced705451319a5dffb8621519" + integrity sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.0" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + +tapable@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + tar@^6.0.2: version "6.1.0" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" @@ -13730,19 +14847,20 @@ tar@^6.0.2: mkdirp "^1.0.3" yallist "^4.0.0" -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== -tempy@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" - integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== +tempy@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== dependencies: - temp-dir "^1.0.0" - type-fest "^0.3.1" - unique-string "^1.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" terminal-link@^2.0.0: version "2.1.1" @@ -13752,53 +14870,26 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" - integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== - dependencies: - cacache "^15.0.5" - find-cache-dir "^3.3.1" - jest-worker "^26.5.0" - p-limit "^3.0.2" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - source-map "^0.6.1" - terser "^5.3.4" - webpack-sources "^1.4.3" - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2, terser@^4.6.2, terser@^4.6.3: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== +terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + "@jridgewell/trace-mapping" "^0.3.20" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" -terser@^5.3.4: - version "5.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" - integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== +terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: + version "5.31.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.0.tgz#06eef86f17007dbad4593f11a574c7f5eb02c6a1" + integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg== dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.19" + source-map-support "~0.5.20" test-exclude@^6.0.0: version "6.0.0" @@ -13809,46 +14900,40 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@0.2.0, text-table@^0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +throat@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" + integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== throttle-debounce@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz#a17a4039e82a2ed38a5e7268e4132d6960d41933" integrity sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg== -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - thunky@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - tiny-invariant@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" @@ -13881,11 +14966,6 @@ tmpl@1.0.x: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -13933,19 +15013,16 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + totalist@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -13955,6 +15032,13 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== + dependencies: + punycode "^2.1.0" + tr46@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" @@ -13972,6 +15056,11 @@ tryer@^1.0.1: resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + ts-jest@^29.1.1: version "29.1.1" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" @@ -13997,19 +15086,14 @@ ts-loader@^8.0.17: micromatch "^4.0.0" semver "^7.3.4" -ts-pnp@1.2.0, ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== - -tsconfig-paths@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" - integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" + json5 "^1.0.2" + minimist "^1.2.6" strip-bom "^3.0.0" tslib@^1.8.1, tslib@^1.9.0: @@ -14027,30 +15111,13 @@ tslib@^2.1.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tsutils@^3.17.1: +tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -14070,6 +15137,11 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -14080,21 +15152,6 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -14103,15 +15160,49 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" -type@^2.0.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" - integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -14120,11 +15211,6 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - typescript@^4.9.5: version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" @@ -14145,6 +15231,16 @@ unbox-primitive@^1.0.0: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" @@ -14155,6 +15251,11 @@ unicode-canonical-property-names-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" @@ -14163,16 +15264,34 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -14183,16 +15302,6 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -14207,14 +15316,14 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: - crypto-random-string "^1.0.0" + crypto-random-string "^2.0.0" -universalify@^0.1.0, universalify@^0.1.2: +universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== @@ -14242,7 +15351,7 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: +upath@^1.1.1, upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== @@ -14255,7 +15364,7 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" -uri-js@^4.2.2: +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -14267,15 +15376,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - url-parse@^1.4.3, url-parse@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" @@ -14302,14 +15402,6 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - util.promisify@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" @@ -14320,20 +15412,6 @@ util.promisify@~1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.0" -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -14349,7 +15427,7 @@ uuid@^3.3.2, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.0: +uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -14359,15 +15437,10 @@ uuid@^9.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== -v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-to-istanbul@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" - integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -14382,14 +15455,6 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - value-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" @@ -14400,20 +15465,6 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - victory-vendor@^36.6.8: version "36.6.11" resolved "https://registry.yarnpkg.com/victory-vendor/-/victory-vendor-36.6.11.tgz#acae770717c2dae541a54929c304ecab5ab6ac2a" @@ -14434,11 +15485,6 @@ victory-vendor@^36.6.8: d3-time "^3.0.0" d3-timer "^3.0.1" -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -14453,7 +15499,7 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" -walker@^1.0.7, walker@~1.0.5: +walker@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= @@ -14474,23 +15520,13 @@ warning@^4.0.1: dependencies: loose-envify "^1.0.0" -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== +watchpack@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" + integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== dependencies: + glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" @@ -14509,6 +15545,11 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -14534,23 +15575,23 @@ webpack-bundle-analyzer@^4.4.0: sirv "^1.0.7" ws "^7.3.1" -webpack-cli@^4.5.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.7.0.tgz#3195a777f1f802ecda732f6c95d24c0004bc5a35" - integrity sha512-7bKr9182/sGfjFm+xdZSwgQuFjgEcy0iCTIBxRUeteJ2Kr8/Wz0qNJX+jw60LU36jApt4nmMkep6+W5AKhok6g== +webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== dependencies: "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.0.3" - "@webpack-cli/info" "^1.2.4" - "@webpack-cli/serve" "^1.4.0" - colorette "^1.2.1" - commander "^7.0.0" - execa "^5.0.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" fastest-levenshtein "^1.0.12" import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" - v8-compile-cache "^2.2.0" + interpret "^3.1.1" + rechoir "^0.8.0" webpack-merge "^5.7.3" webpack-dev-middleware@^3.7.2: @@ -14564,44 +15605,16 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz#c74028bf5ba8885aaf230e48a20e8936ab8511f0" - integrity sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ== +webpack-dev-middleware@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" + integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.8" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "^0.3.21" - sockjs-client "^1.5.0" - spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" webpack-dev-server@^3.11.2: version "3.11.2" @@ -14642,6 +15655,42 @@ webpack-dev-server@^3.11.2: ws "^6.2.1" yargs "^13.3.2" +webpack-dev-server@^4.6.0: + version "4.15.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" + integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.4" + ws "^8.13.0" + webpack-log@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" @@ -14650,15 +15699,13 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-manifest-plugin@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" - integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== +webpack-manifest-plugin@^4.0.2: + version "4.1.1" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz#10f8dbf4714ff93a215d5a45bcc416d80506f94f" + integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== dependencies: - fs-extra "^7.0.0" - lodash ">=3.5 <5" - object.entries "^1.1.0" - tapable "^1.0.0" + tapable "^2.0.0" + webpack-sources "^2.2.0" webpack-merge@^5.7.3: version "5.7.3" @@ -14668,7 +15715,7 @@ webpack-merge@^5.7.3: clone-deep "^4.0.1" wildcard "^2.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: +webpack-sources@^1.1.0, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -14676,34 +15723,48 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack- source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.44.2: - version "4.44.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" - integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" +webpack-sources@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.64.4: + version "5.91.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" + integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.12.1" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.21.10" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" + enhanced-resolve "^5.16.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" + webpack-sources "^3.2.3" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" @@ -14731,6 +15792,11 @@ whatwg-fetch@>=0.10.0, whatwg-fetch@^3.4.1: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== +whatwg-fetch@^3.6.2: + version "3.6.20" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" + integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== + whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" @@ -14744,6 +15810,15 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3" @@ -14764,11 +15839,50 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== + dependencies: + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -14776,7 +15890,7 @@ which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -14788,177 +15902,193 @@ wildcard@^2.0.0: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== -word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workbox-background-sync@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" - integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== +workbox-background-sync@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.6.1.tgz#08d603a33717ce663e718c30cc336f74909aff2f" + integrity sha512-trJd3ovpWCvzu4sW0E8rV3FUyIcC0W8G+AZ+VcqzzA890AsWZlUGOTSxIMmIHVusUw/FDq1HFWfy/kC/WTRqSg== dependencies: - workbox-core "^5.1.4" + idb "^7.0.1" + workbox-core "6.6.1" -workbox-broadcast-update@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" - integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== +workbox-broadcast-update@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.6.1.tgz#0fad9454cf8e4ace0c293e5617c64c75d8a8c61e" + integrity sha512-fBhffRdaANdeQ1V8s692R9l/gzvjjRtydBOvR6WCSB0BNE2BacA29Z4r9/RHd9KaXCPl6JTdI9q0bR25YKP8TQ== dependencies: - workbox-core "^5.1.4" + workbox-core "6.6.1" -workbox-build@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" - integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== +workbox-build@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.6.1.tgz#6010e9ce550910156761448f2dbea8cfcf759cb0" + integrity sha512-INPgDx6aRycAugUixbKgiEQBWD0MPZqU5r0jyr24CehvNuLPSXp/wGOpdRJmts656lNiXwqV7dC2nzyrzWEDnw== dependencies: - "@babel/core" "^7.8.4" - "@babel/preset-env" "^7.8.4" - "@babel/runtime" "^7.8.4" - "@hapi/joi" "^15.1.0" - "@rollup/plugin-node-resolve" "^7.1.1" - "@rollup/plugin-replace" "^2.3.1" - "@surma/rollup-plugin-off-main-thread" "^1.1.1" + "@apideck/better-ajv-errors" "^0.3.1" + "@babel/core" "^7.11.1" + "@babel/preset-env" "^7.11.0" + "@babel/runtime" "^7.11.2" + "@rollup/plugin-babel" "^5.2.0" + "@rollup/plugin-node-resolve" "^11.2.1" + "@rollup/plugin-replace" "^2.4.1" + "@surma/rollup-plugin-off-main-thread" "^2.2.3" + ajv "^8.6.0" common-tags "^1.8.0" fast-json-stable-stringify "^2.1.0" - fs-extra "^8.1.0" + fs-extra "^9.0.1" glob "^7.1.6" - lodash.template "^4.5.0" + lodash "^4.17.20" pretty-bytes "^5.3.0" - rollup "^1.31.1" - rollup-plugin-babel "^4.3.3" - rollup-plugin-terser "^5.3.1" - source-map "^0.7.3" - source-map-url "^0.4.0" + rollup "^2.43.1" + rollup-plugin-terser "^7.0.0" + source-map "^0.8.0-beta.0" stringify-object "^3.3.0" - strip-comments "^1.0.2" - tempy "^0.3.0" + strip-comments "^2.0.1" + tempy "^0.6.0" upath "^1.2.0" - workbox-background-sync "^5.1.4" - workbox-broadcast-update "^5.1.4" - workbox-cacheable-response "^5.1.4" - workbox-core "^5.1.4" - workbox-expiration "^5.1.4" - workbox-google-analytics "^5.1.4" - workbox-navigation-preload "^5.1.4" - workbox-precaching "^5.1.4" - workbox-range-requests "^5.1.4" - workbox-routing "^5.1.4" - workbox-strategies "^5.1.4" - workbox-streams "^5.1.4" - workbox-sw "^5.1.4" - workbox-window "^5.1.4" - -workbox-cacheable-response@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" - integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== - dependencies: - workbox-core "^5.1.4" - -workbox-core@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" - integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== - -workbox-expiration@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" - integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== - dependencies: - workbox-core "^5.1.4" - -workbox-google-analytics@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" - integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== - dependencies: - workbox-background-sync "^5.1.4" - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - workbox-strategies "^5.1.4" - -workbox-navigation-preload@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" - integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== - dependencies: - workbox-core "^5.1.4" - -workbox-precaching@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" - integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== - dependencies: - workbox-core "^5.1.4" - -workbox-range-requests@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" - integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== - dependencies: - workbox-core "^5.1.4" - -workbox-routing@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" - integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== - dependencies: - workbox-core "^5.1.4" - -workbox-strategies@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" - integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== - dependencies: - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - -workbox-streams@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" - integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== - dependencies: - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - -workbox-sw@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" - integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== - -workbox-webpack-plugin@5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz#7bfe8c16e40fe9ed8937080ac7ae9c8bde01e79c" - integrity sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ== + workbox-background-sync "6.6.1" + workbox-broadcast-update "6.6.1" + workbox-cacheable-response "6.6.1" + workbox-core "6.6.1" + workbox-expiration "6.6.1" + workbox-google-analytics "6.6.1" + workbox-navigation-preload "6.6.1" + workbox-precaching "6.6.1" + workbox-range-requests "6.6.1" + workbox-recipes "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + workbox-streams "6.6.1" + workbox-sw "6.6.1" + workbox-window "6.6.1" + +workbox-cacheable-response@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.6.1.tgz#284c2b86be3f4fd191970ace8c8e99797bcf58e9" + integrity sha512-85LY4veT2CnTCDxaVG7ft3NKaFbH6i4urZXgLiU4AiwvKqS2ChL6/eILiGRYXfZ6gAwDnh5RkuDbr/GMS4KSag== + dependencies: + workbox-core "6.6.1" + +workbox-core@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.6.1.tgz#7184776d4134c5ed2f086878c882728fc9084265" + integrity sha512-ZrGBXjjaJLqzVothoE12qTbVnOAjFrHDXpZe7coCb6q65qI/59rDLwuFMO4PcZ7jcbxY+0+NhUVztzR/CbjEFw== + +workbox-expiration@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.6.1.tgz#a841fa36676104426dbfb9da1ef6a630b4f93739" + integrity sha512-qFiNeeINndiOxaCrd2DeL1Xh1RFug3JonzjxUHc5WkvkD2u5abY3gZL1xSUNt3vZKsFFGGORItSjVTVnWAZO4A== + dependencies: + idb "^7.0.1" + workbox-core "6.6.1" + +workbox-google-analytics@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.6.1.tgz#a07a6655ab33d89d1b0b0a935ffa5dea88618c5d" + integrity sha512-1TjSvbFSLmkpqLcBsF7FuGqqeDsf+uAXO/pjiINQKg3b1GN0nBngnxLcXDYo1n/XxK4N7RaRrpRlkwjY/3ocuA== + dependencies: + workbox-background-sync "6.6.1" + workbox-core "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + +workbox-navigation-preload@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.6.1.tgz#61a34fe125558dd88cf09237f11bd966504ea059" + integrity sha512-DQCZowCecO+wRoIxJI2V6bXWK6/53ff+hEXLGlQL4Rp9ZaPDLrgV/32nxwWIP7QpWDkVEtllTAK5h6cnhxNxDA== + dependencies: + workbox-core "6.6.1" + +workbox-precaching@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.6.1.tgz#dedeeba10a2d163d990bf99f1c2066ac0d1a19e2" + integrity sha512-K4znSJ7IKxCnCYEdhNkMr7X1kNh8cz+mFgx9v5jFdz1MfI84pq8C2zG+oAoeE5kFrUf7YkT5x4uLWBNg0DVZ5A== + dependencies: + workbox-core "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + +workbox-range-requests@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.6.1.tgz#ddaf7e73af11d362fbb2f136a9063a4c7f507a39" + integrity sha512-4BDzk28govqzg2ZpX0IFkthdRmCKgAKreontYRC5YsAPB2jDtPNxqx3WtTXgHw1NZalXpcH/E4LqUa9+2xbv1g== + dependencies: + workbox-core "6.6.1" + +workbox-recipes@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.6.1.tgz#ea70d2b2b0b0bce8de0a9d94f274d4a688e69fae" + integrity sha512-/oy8vCSzromXokDA+X+VgpeZJvtuf8SkQ8KL0xmRivMgJZrjwM3c2tpKTJn6PZA6TsbxGs3Sc7KwMoZVamcV2g== + dependencies: + workbox-cacheable-response "6.6.1" + workbox-core "6.6.1" + workbox-expiration "6.6.1" + workbox-precaching "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + +workbox-routing@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.6.1.tgz#cba9a1c7e0d1ea11e24b6f8c518840efdc94f581" + integrity sha512-j4ohlQvfpVdoR8vDYxTY9rA9VvxTHogkIDwGdJ+rb2VRZQ5vt1CWwUUZBeD/WGFAni12jD1HlMXvJ8JS7aBWTg== + dependencies: + workbox-core "6.6.1" + +workbox-strategies@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.6.1.tgz#38d0f0fbdddba97bd92e0c6418d0b1a2ccd5b8bf" + integrity sha512-WQLXkRnsk4L81fVPkkgon1rZNxnpdO5LsO+ws7tYBC6QQQFJVI6v98klrJEjFtZwzw/mB/HT5yVp7CcX0O+mrw== + dependencies: + workbox-core "6.6.1" + +workbox-streams@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.6.1.tgz#b2f7ba7b315c27a6e3a96a476593f99c5d227d26" + integrity sha512-maKG65FUq9e4BLotSKWSTzeF0sgctQdYyTMq529piEN24Dlu9b6WhrAfRpHdCncRS89Zi2QVpW5V33NX8PgH3Q== + dependencies: + workbox-core "6.6.1" + workbox-routing "6.6.1" + +workbox-sw@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.6.1.tgz#d4c4ca3125088e8b9fd7a748ed537fa0247bd72c" + integrity sha512-R7whwjvU2abHH/lR6kQTTXLHDFU2izht9kJOvBRYK65FbwutT4VvnUAJIgHvfWZ/fokrOPhfoWYoPCMpSgUKHQ== + +workbox-webpack-plugin@^6.4.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.1.tgz#4f81cc1ad4e5d2cd7477a86ba83c84ee2d187531" + integrity sha512-zpZ+ExFj9NmiI66cFEApyjk7hGsfJ1YMOaLXGXBoZf0v7Iu6hL0ZBe+83mnDq3YYWAfA3fnyFejritjOHkFcrA== dependencies: - "@babel/runtime" "^7.5.5" - fast-json-stable-stringify "^2.0.0" - source-map-url "^0.4.0" - upath "^1.1.2" - webpack-sources "^1.3.0" - workbox-build "^5.1.4" - -workbox-window@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" - integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== - dependencies: - workbox-core "^5.1.4" + fast-json-stable-stringify "^2.1.0" + pretty-bytes "^5.4.1" + upath "^1.2.0" + webpack-sources "^1.4.3" + workbox-build "6.6.1" -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== +workbox-window@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.6.1.tgz#f22a394cbac36240d0dadcbdebc35f711bb7b89e" + integrity sha512-wil4nwOY58nTdCvif/KEZjQ2NP8uk3gGeRNy2jPBbzypU4BT4D9L8xiwbmDBpZlSgJd2xsT9FvSNU0gsxV51JQ== dependencies: - errno "~0.1.7" + "@types/trusted-types" "^2.0.2" + workbox-core "6.6.1" -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - microevent.ts "~0.1.1" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrap-ansi@^5.1.0: version "5.1.0" @@ -14969,23 +16099,14 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" wrappy@1: version "1.0.2" @@ -15017,11 +16138,21 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@^7.3.1, ws@^7.4.4: +ws@^7.3.1: version "7.4.5" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.13.0: + version "8.17.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" @@ -15032,11 +16163,6 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - xterm-addon-fit@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.5.0.tgz#2d51b983b786a97dcd6cde805e700c7f913bc596" @@ -15067,11 +16193,16 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0, yaml@^1.7.2: +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.3.4: + version "2.4.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.2.tgz#7a2b30f2243a5fc299e1f14ca58d475ed4bc5362" + integrity sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA== + yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -15080,13 +16211,10 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" @@ -15109,22 +16237,18 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^15.4.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" + y18n "^5.0.5" + yargs-parser "^20.2.2" yargs@^17.3.1: version "17.7.2" From dee5f3bd2e73d638fa354713c724baadc822518e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 14:08:47 -0700 Subject: [PATCH 027/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.11 to 1.27.16 (#3597) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.11 to 1.27.16. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.11...config/v1.27.16) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 20 ++++++++++---------- go.sum | 40 ++++++++++++++++++++-------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index 20585676c7..67c7a97c06 100644 --- a/go.mod +++ b/go.mod @@ -8,8 +8,8 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.26.1 - github.com/aws/aws-sdk-go-v2/config v1.27.11 + github.com/aws/aws-sdk-go-v2 v1.27.0 + github.com/aws/aws-sdk-go-v2/config v1.27.16 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5 github.com/aws/smithy-go v1.20.2 @@ -83,17 +83,17 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.11 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.16 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.7 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.7 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.20.9 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.28.10 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect diff --git a/go.sum b/go.sum index 818c7d0638..dedc0f82ab 100644 --- a/go.sum +++ b/go.sum @@ -98,18 +98,18 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA= -github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= -github.com/aws/aws-sdk-go-v2/config v1.27.11 h1:f47rANd2LQEYHda2ddSCKYId18/8BhSRM4BULGmfgNA= -github.com/aws/aws-sdk-go-v2/config v1.27.11/go.mod h1:SMsV78RIOYdve1vf36z8LmnszlRWkwMQtomCAI0/mIE= -github.com/aws/aws-sdk-go-v2/credentials v1.17.11 h1:YuIB1dJNf1Re822rriUOTxopaHHvIq0l/pX3fwO+Tzs= -github.com/aws/aws-sdk-go-v2/credentials v1.17.11/go.mod h1:AQtFPsDH9bI2O+71anW6EKL+NcD7LG3dpKGMV4SShgo= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 h1:FVJ0r5XTHSmIHJV6KuDmdYhEpvlHpiSd38RQWhut5J4= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1/go.mod h1:zusuAeqezXzAB24LGuzuekqMAEgWkVYukBec3kr3jUg= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 h1:aw39xVGeRWlWx9EzGVnhOR4yOjQDHPQ6o6NmBlscyQg= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5/go.mod h1:FSaRudD0dXiMPK2UjknVwwTYyZMRsHv3TtkabsZih5I= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 h1:PG1F3OD1szkuQPzDw3CIQsRIrtTlUC3lP84taWzHlq0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5/go.mod h1:jU1li6RFryMz+so64PpKtudI+QzbKoIEivqdf6LNpOc= +github.com/aws/aws-sdk-go-v2 v1.27.0 h1:7bZWKoXhzI+mMR/HjdMx8ZCC5+6fY0lS5tr0bbgiLlo= +github.com/aws/aws-sdk-go-v2 v1.27.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= +github.com/aws/aws-sdk-go-v2/config v1.27.16 h1:knpCuH7laFVGYTNd99Ns5t+8PuRjDn4HnnZK48csipM= +github.com/aws/aws-sdk-go-v2/config v1.27.16/go.mod h1:vutqgRhDUktwSge3hrC3nkuirzkJ4E/mLj5GvI0BQas= +github.com/aws/aws-sdk-go-v2/credentials v1.17.16 h1:7d2QxY83uYl0l58ceyiSpxg9bSbStqBC6BeEeHEchwo= +github.com/aws/aws-sdk-go-v2/credentials v1.17.16/go.mod h1:Ae6li/6Yc6eMzysRL2BXlPYvnrLLBg3D11/AmOjw50k= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.3 h1:dQLK4TjtnlRGb0czOht2CevZ5l6RSyRWAnKeGd7VAFE= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.3/go.mod h1:TL79f2P6+8Q7dTsILpiVST+AL9lkF6PPGI167Ny0Cjw= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.7 h1:lf/8VTF2cM+N4SLzaYJERKEWAXq8MOMpZfU6wEPWsPk= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.7/go.mod h1:4SjkU7QiqK2M9oozyMzfZ/23LmUY+h3oFqhdeP5OMiI= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.7 h1:4OYVp0705xu8yjdyoWix0r9wPIRXnIzzOoUpQVHIJ/g= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.7/go.mod h1:vd7ESTEvI76T2Na050gODNmNU7+OyKrIKroYTu4ABiI= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 h1:vAfGwYFCcPDS9Bg7ckfMBer6olJLOHsOAVoKWpPIirs= @@ -118,16 +118,16 @@ github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5 h1:/x2u/TOx+ github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5/go.mod h1:e1McVqsud0JOERidvppLEHnuCdh/X6MRyL5L0LseAUk= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 h1:ogRAwT1/gxJBcSWDMZlgyFUM962F51A5CRhDLbxLdmo= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7/go.mod h1:YCsIZhXfRPLFFCl5xxY+1T9RKzOKjCut+28JSX2DnAk= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9 h1:Wx0rlZoEJR7JwlSZcHnEa7CNjrSIyVxMFWGAaXy4fJY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9/go.mod h1:aVMHdE0aHO3v+f/iw01fmXV/5DbfQ3Bi9nN7nd9bE9Y= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 h1:vN8hEbpRnL7+Hopy9dzmRle1xmDc7o8tmY0klsr175w= -github.com/aws/aws-sdk-go-v2/service/sso v1.20.5/go.mod h1:qGzynb/msuZIE8I75DVRCUXw3o3ZyBmUvMwQ2t/BrGM= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 h1:Jux+gDDyi1Lruk+KHF91tK2KCuY61kzoCpvtvJJBtOE= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4/go.mod h1:mUYPBhaF2lGiukDEjJX2BLRRKTmoUSitGDUgM4tRxak= -github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 h1:cwIxeBttqPN3qkaAjcEcsh8NYr8n2HZPkcKgPAi1phU= -github.com/aws/aws-sdk-go-v2/service/sts v1.28.6/go.mod h1:FZf1/nKNEkHdGGJP/cI2MoIMquumuRK6ol3QQJNDxmw= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.9 h1:aD7AGQhvPuAxlSUfo0CWU7s6FpkbyykMhGYMvlqTjVs= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.9/go.mod h1:c1qtZUWtygI6ZdvKppzCSXsDOq5I4luJPZ0Ud3juFCA= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.3 h1:Pav5q3cA260Zqez42T9UhIlsd9QeypszRPwC9LdSSsQ= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.3/go.mod h1:9lmoVDVLz/yUZwLaQ676TK02fhCu4+PgRSmMaKR1ozk= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.10 h1:69tpbPED7jKPyzMcrwSvhWcJ9bPnZsZs18NT40JwM0g= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.10/go.mod h1:0Aqn1MnEuitqfsCNyKsdKLhDUOr4txD/g19EfiUqgws= github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= From 4894e4531d1bee119e16effbe718fc399068375d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 14:09:05 -0700 Subject: [PATCH 028/219] chore(deps): bump codecov/codecov-action from 4.3.1 to 4.4.1 (#3588) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/go.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 959ea6e835..158e9f7305 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -90,7 +90,7 @@ jobs: path: coverage.out - name: Upload code coverage information to codecov.io - uses: codecov/codecov-action@v4.3.1 + uses: codecov/codecov-action@v4.4.1 with: file: coverage.out From 1be50a03c95599d89c79d8b1bbf4bf00f5c92ecc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 14:09:22 -0700 Subject: [PATCH 029/219] chore(deps): bump softprops/action-gh-release from 2.0.4 to 2.0.5 (#3561) Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.4 to 2.0.5. - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/9d7c94cfd0a1f3ed45544c887983e9fa900f0564...69320dbe05506a9a39fc8ae11030b214ec2d1f87) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c9e2ca60b8..a38ad1dc05 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -107,7 +107,7 @@ jobs: make manifests IMAGE_TAG=${{ github.ref_name }} - name: Draft release - uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 # v0.1.15 + uses: softprops/action-gh-release@69320dbe05506a9a39fc8ae11030b214ec2d1f87 # v0.1.15 with: tag_name: ${{ github.event.inputs.tag }} draft: true @@ -212,7 +212,7 @@ jobs: /tmp/sbom.tar.gz - name: Upload SBOM and signature assets - uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 # v0.1.15 + uses: softprops/action-gh-release@69320dbe05506a9a39fc8ae11030b214ec2d1f87 # v0.1.15 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: From 283e5bfc71c6b6af1e1cf070b7b7d3434539a977 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 14:09:45 -0700 Subject: [PATCH 030/219] chore(deps): bump google.golang.org/protobuf from 1.34.0 to 1.34.1 (#3557) Bumps google.golang.org/protobuf from 1.34.0 to 1.34.1. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 67c7a97c06..ac5d5cd734 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( golang.org/x/oauth2 v0.19.0 google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de google.golang.org/grpc v1.63.2 - google.golang.org/protobuf v1.34.0 + google.golang.org/protobuf v1.34.1 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.29.3 k8s.io/apiextensions-apiserver v0.29.3 diff --git a/go.sum b/go.sum index dedc0f82ab..e66efb0030 100644 --- a/go.sum +++ b/go.sum @@ -1147,8 +1147,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4= -google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= From 36e02c0c95516f72b0d7d64a3183f8e99c599086 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 14:10:04 -0700 Subject: [PATCH 031/219] chore(deps): bump golangci/golangci-lint-action from 5 to 6 (#3556) Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 5 to 6. - [Release notes](https://github.com/golangci/golangci-lint-action/releases) - [Commits](https://github.com/golangci/golangci-lint-action/compare/v5...v6) --- updated-dependencies: - dependency-name: golangci/golangci-lint-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/go.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 158e9f7305..cd0590862d 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -42,7 +42,7 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - name: Run golangci-lint - uses: golangci/golangci-lint-action@v5 + uses: golangci/golangci-lint-action@v6 with: version: v1.57.2 args: --timeout 6m From 6329a7adfb8d2ed187d36cba598ab7f7d3dcbd46 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 21:10:35 +0000 Subject: [PATCH 032/219] chore(deps): bump golang.org/x/oauth2 from 0.19.0 to 0.20.0 (#3554) Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.19.0 to 0.20.0. - [Commits](https://github.com/golang/oauth2/compare/v0.19.0...v0.20.0) --- updated-dependencies: - dependency-name: golang.org/x/oauth2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 5 ++--- go.sum | 10 ++++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index ac5d5cd734..3fbabdba09 100644 --- a/go.mod +++ b/go.mod @@ -39,7 +39,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 - golang.org/x/oauth2 v0.19.0 + golang.org/x/oauth2 v0.20.0 google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de google.golang.org/grpc v1.63.2 google.golang.org/protobuf v1.34.1 @@ -61,8 +61,7 @@ require ( ) require ( - cloud.google.com/go/compute v1.24.0 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/compute/metadata v0.3.0 // indirect github.com/PagerDuty/go-pagerduty v1.7.0 // indirect github.com/bradleyfalzon/ghinstallation/v2 v2.5.0 // indirect github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 // indirect diff --git a/go.sum b/go.sum index e66efb0030..f88f096d75 100644 --- a/go.sum +++ b/go.sum @@ -19,11 +19,9 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= -cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -880,8 +878,8 @@ golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg= -golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From 48de5b20bcf6b77e5fd86c8dda867ccdd2981860 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 12:10:41 -0500 Subject: [PATCH 033/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.30.5 to 1.31.1 (#3608) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 Bumps [github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2](https://github.com/aws/aws-sdk-go-v2) from 1.30.5 to 1.31.1. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/service/s3/v1.31.1/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.30.5...service/s3/v1.31.1) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3fbabdba09..c6df91ed7e 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/aws/aws-sdk-go-v2 v1.27.0 github.com/aws/aws-sdk-go-v2/config v1.27.16 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 - github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5 + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.1 github.com/aws/smithy-go v1.20.2 github.com/blang/semver v3.5.1+incompatible github.com/bombsimon/logrusr/v4 v4.1.0 diff --git a/go.sum b/go.sum index f88f096d75..5b684da710 100644 --- a/go.sum +++ b/go.sum @@ -112,8 +112,8 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7 github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 h1:vAfGwYFCcPDS9Bg7ckfMBer6olJLOHsOAVoKWpPIirs= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0/go.mod h1:U12sr6Lt14X96f16t+rR52+2BdqtydwN7DjEEHRMjO0= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5 h1:/x2u/TOx+n17U+gz98TOw1HKJom0EOqrhL4SjrHr0cQ= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5/go.mod h1:e1McVqsud0JOERidvppLEHnuCdh/X6MRyL5L0LseAUk= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.1 h1:ZdIaRvkbFBS4mrH4slH8ypbW8XuFJOey3nhdYfPCsC8= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.1/go.mod h1:8OpnCueyLye/uyNWHz/AW+1uxcXoZ1U/ss4Ql3gogRM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9 h1:Wx0rlZoEJR7JwlSZcHnEa7CNjrSIyVxMFWGAaXy4fJY= From 70817c0839a8ea917b62ee6a93ab489c44c20e55 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 12:11:16 -0500 Subject: [PATCH 034/219] chore(deps): bump google.golang.org/grpc from 1.63.2 to 1.64.0 (#3607) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.63.2 to 1.64.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.63.2...v1.64.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index c6df91ed7e..313755fe9c 100644 --- a/go.mod +++ b/go.mod @@ -40,8 +40,8 @@ require ( github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 golang.org/x/oauth2 v0.20.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de - google.golang.org/grpc v1.63.2 + google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 + google.golang.org/grpc v1.64.0 google.golang.org/protobuf v1.34.1 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.29.3 @@ -215,7 +215,7 @@ require ( gomodules.xyz/notify v0.1.1 // indirect google.golang.org/api v0.162.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index 5b684da710..7f101c66e3 100644 --- a/go.sum +++ b/go.sum @@ -166,8 +166,8 @@ github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtM github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= -github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= +github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50 h1:DBmgJDC9dTfkVyGgipamEh2BpGYxScCH1TOF1LL1cXc= +github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50/go.mod h1:5e1+Vvlzido69INQaVO6d87Qn543Xr6nooe9Kz7oBFM= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -1112,10 +1112,10 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1130,8 +1130,8 @@ google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 8ee081564fc414f4a9037ccf3240fe4bef6cee16 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 12:11:43 -0500 Subject: [PATCH 035/219] chore(deps): bump github.com/hashicorp/go-plugin from 1.6.0 to 1.6.1 (#3606) Bumps [github.com/hashicorp/go-plugin](https://github.com/hashicorp/go-plugin) from 1.6.0 to 1.6.1. - [Release notes](https://github.com/hashicorp/go-plugin/releases) - [Changelog](https://github.com/hashicorp/go-plugin/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/go-plugin/compare/v1.6.0...v1.6.1) --- updated-dependencies: - dependency-name: github.com/hashicorp/go-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 313755fe9c..1d76d31b83 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/hashicorp/go-plugin v1.6.0 + github.com/hashicorp/go-plugin v1.6.1 github.com/influxdata/influxdb-client-go/v2 v2.13.0 github.com/juju/ansiterm v1.0.0 github.com/machinebox/graphql v0.2.2 diff --git a/go.sum b/go.sum index 7f101c66e3..84d5d6b9d7 100644 --- a/go.sum +++ b/go.sum @@ -414,8 +414,8 @@ github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/S github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.14.1 h1:nQcJDQwIAGnmoUWp8ubocEX40cCml/17YkF6csQLReU= github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= -github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= +github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= +github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= github.com/hashicorp/go-retryablehttp v0.5.1/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ= github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= From 2c192007df8dd41b312caeb37ba92167b3648222 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 17:49:15 +0000 Subject: [PATCH 036/219] chore(deps): bump docker/login-action from 3.1.0 to 3.2.0 (#3604) Bumps [docker/login-action](https://github.com/docker/login-action) from 3.1.0 to 3.2.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/e92390c5fb421da1463c202d546fed0ec5c39f20...0d4c9c5ea7693da7b068278f7b52bda2a190a446) --- updated-dependencies: - dependency-name: docker/login-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index b78d72a061..2f43bc61f3 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -106,7 +106,7 @@ jobs: echo 'EOF' >> $GITHUB_ENV - name: Login to Quay.io - uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 + uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0 with: registry: quay.io username: ${{ secrets.quay_username }} @@ -114,7 +114,7 @@ jobs: if: ${{ inputs.quay_image_name && inputs.push }} - name: Login to GitHub Container Registry - uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 + uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0 with: registry: ghcr.io username: ${{ secrets.ghcr_username }} @@ -122,7 +122,7 @@ jobs: if: ${{ inputs.ghcr_image_name && inputs.push }} - name: Login to dockerhub Container Registry - uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 + uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0 with: username: ${{ secrets.docker_username }} password: ${{ secrets.docker_password }} From 276a66dd12fa07b0ac7081a7ab2092e6e0a5a9c5 Mon Sep 17 00:00:00 2001 From: Keith Chong Date: Wed, 5 Jun 2024 11:48:33 -0400 Subject: [PATCH 037/219] fix: Update loader-utils to 2.0.4 (#3601) Signed-off-by: Keith Chong --- ui/yarn.lock | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/ui/yarn.lock b/ui/yarn.lock index 2ef9058665..628cb5963f 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -10217,16 +10217,7 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^2.0.4: +loader-utils@^2.0.0, loader-utils@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== From ec18d991020693fa2caa1fec4aa21f2f839a46de Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Fri, 7 Jun 2024 11:53:09 -0700 Subject: [PATCH 038/219] fix: rs conflict with fallback to patch (#3559) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: fallback to patch on scale conflict Signed-off-by: Zach Aller fix: switch to retry logic Signed-off-by: Zach Aller lint Signed-off-by: Zach Aller retry experiments Signed-off-by: Zach Aller remove TODO Signed-off-by: Zach Aller remove accidental add Signed-off-by: Zach Aller remove accidental add Signed-off-by: Zach Aller add retry to setting revision Signed-off-by: Zach Aller chore(deps): bump slsa-framework/slsa-github-generator from 1.10.0 to 2.0.0 (#3537) chore(deps): bump slsa-framework/slsa-github-generator Bumps [slsa-framework/slsa-github-generator](https://github.com/slsa-framework/slsa-github-generator) from 1.10.0 to 2.0.0. - [Release notes](https://github.com/slsa-framework/slsa-github-generator/releases) - [Changelog](https://github.com/slsa-framework/slsa-github-generator/blob/main/CHANGELOG.md) - [Commits](https://github.com/slsa-framework/slsa-github-generator/compare/v1.10.0...v2.0.0) --- updated-dependencies: - dependency-name: slsa-framework/slsa-github-generator dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> chore(deps): bump sigstore/cosign-installer from 3.4.0 to 3.5.0 (#3522) Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.4.0 to 3.5.0. - [Release notes](https://github.com/sigstore/cosign-installer/releases) - [Commits](https://github.com/sigstore/cosign-installer/compare/e1523de7571e31dbe865fd2e80c5c7c23ae71eb4...59acb6260d9c0ba8f4a2f9d9b48431a222b68e20) --- updated-dependencies: - dependency-name: sigstore/cosign-installer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> chore(deps): bump golangci/golangci-lint-action from 4 to 5 (#3540) Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 4 to 5. - [Release notes](https://github.com/golangci/golangci-lint-action/releases) - [Commits](https://github.com/golangci/golangci-lint-action/compare/v4...v5) --- updated-dependencies: - dependency-name: golangci/golangci-lint-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> docs: provide recommendation for strategies (#3531) * docs: provide recommendation for strategies Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> * docs: traffic manager clarifications Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> * docs: explain canary with/out traffic manager Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> * docs: add 3 columns on the comparison table Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --------- Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> feat(dashboard): change the color of the current rollout step (#3526) I feel that having the current (running) step in a orange color is misleading, as orange usually means warning. This commit changes the color to the `$argo-running-color`. Signed-off-by: Alejandro López Sánchez chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.37.0 to 1.38.0 (#3525) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.37.0 to 1.38.0. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/service/s3/v1.38.0/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.37.0...service/s3/v1.38.0) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> perform all of set revision actions on retry Signed-off-by: Zach Aller fix variable Signed-off-by: Zach Aller add retry counts to log Signed-off-by: Zach Aller add retry counts to logs Signed-off-by: Zach Aller clean logs, always dump controller e2e logs Signed-off-by: Zach Aller lower timeout Signed-off-by: Zach Aller bump timeout on e2e Signed-off-by: Zach Aller retry on rollout conflict Signed-off-by: Zach Aller don't reque on rs changes Signed-off-by: Zach Aller reque rs Signed-off-by: Zach Aller bump qps for e2e Signed-off-by: Zach Aller fix gen-crd Signed-off-by: Zach Aller switch to patch Signed-off-by: Zach Aller switch to patch Signed-off-by: Zach Aller add log Signed-off-by: Zach Aller move log lines Signed-off-by: Zach Aller Trigger Build Signed-off-by: Zach Aller fix one e2e test Signed-off-by: Zach Aller lint Signed-off-by: Zach Aller add test Signed-off-by: Zach Aller chore(deps): bump actions/setup-go from 5.0.0 to 5.0.1 (#3552) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.0.0 to 5.0.1. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v5.0.0...v5.0.1) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> chore(deps): bump codecov/codecov-action from 4.3.0 to 4.3.1 (#3550) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.3.0 to 4.3.1. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.3.0...v4.3.1) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> chore(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.0 (#3548) Bumps google.golang.org/protobuf from 1.33.0 to 1.34.0. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> refactor Signed-off-by: Zach Aller add test for updating rs revision Signed-off-by: Zach Aller add retry for ephemeral metadata Signed-off-by: Zach Aller clear some fields Signed-off-by: Zach Aller add logs Signed-off-by: Zach Aller refactor into function Signed-off-by: Zach Aller change log Signed-off-by: Zach Aller switch rollout update to patch fallback Signed-off-by: Zach Aller siwtch ephemeral metadata sync to shared function Signed-off-by: Zach Aller siwtch merge type Signed-off-by: Zach Aller lint Signed-off-by: Zach Aller don't update status Signed-off-by: Zach Aller switch rollout update to not use patch Signed-off-by: Zach Aller change log Signed-off-by: Zach Aller switch to small patch Signed-off-by: Zach Aller some cleanup Signed-off-by: Zach Aller remove not found rollout removal Signed-off-by: Zach Aller working setup Signed-off-by: Zach Aller lint Signed-off-by: Zach Aller fix test Signed-off-by: Zach Aller small cleanup Signed-off-by: Zach Aller * typo Signed-off-by: Zach Aller * cleanup commented out code Signed-off-by: Zach Aller * Trigger Build Signed-off-by: Zach Aller * only patch rollouts manged fields Signed-off-by: Zach Aller * lint Signed-off-by: Zach Aller * fix flaky test Signed-off-by: Zach Aller * fix flaky test Signed-off-by: Zach Aller * reduce patch size Signed-off-by: Zach Aller * get some logs Signed-off-by: Zach Aller * cleanup Signed-off-by: Zach Aller * improve tests Signed-off-by: Zach Aller * Trigger Build Signed-off-by: Zach Aller * add env var to log diff Signed-off-by: Zach Aller * remove expirment rs patch Signed-off-by: Zach Aller * imporve logs Signed-off-by: Zach Aller * use correct variable Signed-off-by: Zach Aller * change env var Signed-off-by: Zach Aller * fix flaky e2e Signed-off-by: Zach Aller * fix flaky e2e Signed-off-by: Zach Aller * fix flaky e2e Signed-off-by: Zach Aller * remove not found rollouts Signed-off-by: Zach Aller * update replica count Signed-off-by: Zach Aller * lint Signed-off-by: Zach Aller * refactor cleanup Signed-off-by: Zach Aller * keep track of UpdatedReplicas on sync Signed-off-by: Zach Aller * some hpa tests and log changes Signed-off-by: Zach Aller * remove update to UpdatedReplicas Signed-off-by: Zach Aller * add more test Signed-off-by: Zach Aller * fix test Signed-off-by: Zach Aller * undo change Signed-off-by: Zach Aller * add comment to flaky tests Signed-off-by: Zach Aller * cleanup Makefile Signed-off-by: Zach Aller * remove test Signed-off-by: Zach Aller * use labels Signed-off-by: Zach Aller * remove make file change Signed-off-by: Zach Aller * add label to test Signed-off-by: Zach Aller * review changes Signed-off-by: Zach Aller * change to TODO Signed-off-by: Zach Aller * fix test Signed-off-by: Zach Aller * add extra logging for tests Signed-off-by: Zach Aller * Trigger Build Signed-off-by: Zach Aller * add ignore to codecov Signed-off-by: Zach Aller * we always generate patch because we are comparing against emtpy obj Signed-off-by: Zach Aller --------- Signed-off-by: Zach Aller --- .codecov.yml | 2 + .github/workflows/e2e.yaml | 2 +- Makefile | 2 +- hack/gen-crd-spec/main.go | 11 +- rollout/canary.go | 2 +- rollout/canary_test.go | 109 ++++++++++++++++++ rollout/controller.go | 96 +++++++++++++++ rollout/controller_test.go | 21 ++++ rollout/ephemeralmetadata.go | 10 +- rollout/sync.go | 28 ++--- test/e2e/aws_test.go | 2 + test/e2e/canary_test.go | 6 +- .../analysistemplate-sleep-job.yaml | 2 +- test/e2e/functional_test.go | 13 ++- test/fixtures/e2e_suite.go | 6 +- utils/annotations/annotations.go | 3 + utils/controller/controller.go | 7 ++ utils/replicaset/canary.go | 4 +- 18 files changed, 284 insertions(+), 42 deletions(-) mode change 100755 => 100644 utils/replicaset/canary.go diff --git a/.codecov.yml b/.codecov.yml index a8e52fbeca..2758a60933 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -19,3 +19,5 @@ ignore: - 'pkg/client/.*' - 'vendor/.*' - '**/mocks/*' + - 'hack/gen-crd-spec/main.go' + - 'hack/gen-docs/main.go' diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 7b7b2c5300..0b7aca1509 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -95,4 +95,4 @@ jobs: with: name: e2e-controller-k8s-${{ matrix.kubernetes-minor-version }}.log path: /tmp/e2e-controller.log - if: ${{ failure() }} + if: ${{ always() }} diff --git a/Makefile b/Makefile index fd5736aa15..609cb724d9 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ DEV_IMAGE ?= false E2E_INSTANCE_ID ?= argo-rollouts-e2e E2E_TEST_OPTIONS ?= E2E_PARALLEL ?= 1 -E2E_WAIT_TIMEOUT ?= 120 +E2E_WAIT_TIMEOUT ?= 90 GOPATH ?= $(shell go env GOPATH) # Global toolchain configuration diff --git a/hack/gen-crd-spec/main.go b/hack/gen-crd-spec/main.go index a3e31d92b8..60c1bde9d7 100644 --- a/hack/gen-crd-spec/main.go +++ b/hack/gen-crd-spec/main.go @@ -96,11 +96,12 @@ func NewCustomResourceDefinition() []*extensionsobj.CustomResourceDefinition { // clean up stuff left by controller-gen deleteFile("config/webhook/manifests.yaml") deleteFile("config/webhook") - deleteFile("config/argoproj.io_analysisruns.yaml") - deleteFile("config/argoproj.io_analysistemplates.yaml") - deleteFile("config/argoproj.io_clusteranalysistemplates.yaml") - deleteFile("config/argoproj.io_experiments.yaml") - deleteFile("config/argoproj.io_rollouts.yaml") + deleteFile("config/crd/argoproj.io_analysisruns.yaml") + deleteFile("config/crd/argoproj.io_analysistemplates.yaml") + deleteFile("config/crd/argoproj.io_clusteranalysistemplates.yaml") + deleteFile("config/crd/argoproj.io_experiments.yaml") + deleteFile("config/crd/argoproj.io_rollouts.yaml") + deleteFile("config/crd") deleteFile("config") crds := []*extensionsobj.CustomResourceDefinition{} diff --git a/rollout/canary.go b/rollout/canary.go index ed27bd0a79..fa33b43616 100644 --- a/rollout/canary.go +++ b/rollout/canary.go @@ -112,7 +112,7 @@ func (c *rolloutContext) reconcileCanaryStableReplicaSet() (bool, error) { } scaled, _, err := c.scaleReplicaSetAndRecordEvent(c.stableRS, desiredStableRSReplicaCount) if err != nil { - return scaled, fmt.Errorf("failed to scaleReplicaSetAndRecordEvent in reconcileCanaryStableReplicaSet:L %w", err) + return scaled, fmt.Errorf("failed to scaleReplicaSetAndRecordEvent in reconcileCanaryStableReplicaSet: %w", err) } return scaled, err } diff --git a/rollout/canary_test.go b/rollout/canary_test.go index 56b05c7177..3d1eec9d14 100644 --- a/rollout/canary_test.go +++ b/rollout/canary_test.go @@ -4,10 +4,16 @@ import ( "context" "encoding/json" "fmt" + "os" "strconv" "testing" "time" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + k8stesting "k8s.io/client-go/testing" + "github.com/stretchr/testify/assert" appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/api/apps/v1" @@ -2141,3 +2147,106 @@ func TestCanaryReplicaAndSpecChangedTogether(t *testing.T) { // check the canary one is updated assert.NotEqual(t, originReplicas, int(*updated.Spec.Replicas)) } + +func TestSyncRolloutWithConflictInScaleReplicaSet(t *testing.T) { + os.Setenv("ARGO_ROLLOUTS_LOG_RS_DIFF_CONFLICT", "true") + defer os.Unsetenv("ARGO_ROLLOUTS_LOG_RS_DIFF_CONFLICT") + + f := newFixture(t) + defer f.Close() + + steps := []v1alpha1.CanaryStep{ + { + SetWeight: int32Ptr(10), + }, { + Pause: &v1alpha1.RolloutPause{ + Duration: v1alpha1.DurationFromInt(10), + }, + }, + } + r1 := newCanaryRollout("foo", 10, nil, steps, int32Ptr(1), intstr.FromInt(1), intstr.FromInt(0)) + r1.Spec.Template.Labels["rollout.argoproj.io/foo"] = "bar" + + rs1 := newReplicaSetWithStatus(r1, 10, 10) + r1.Spec.Replicas = pointer.Int32(2) + f.kubeobjects = append(f.kubeobjects, rs1) + f.replicaSetLister = append(f.replicaSetLister, rs1) + + f.rolloutLister = append(f.rolloutLister, r1) + f.objects = append(f.objects, r1) + + f.expectPatchRolloutAction(r1) + f.expectUpdateReplicaSetAction(rs1) // attempt to scale replicaset but conflict + patchIndex := f.expectPatchReplicaSetAction(rs1) // instead of update patch replicaset + + key := fmt.Sprintf("%s/%s", r1.Namespace, r1.Name) + c, i, k8sI := f.newController(func() time.Duration { return 30 * time.Minute }) + + f.kubeclient.PrependReactor("update", "replicasets", func(action k8stesting.Action) (handled bool, ret runtime.Object, err error) { + return true, action.(k8stesting.UpdateAction).GetObject(), errors.NewConflict(schema.GroupResource{ + Group: "Apps", + Resource: "ReplicaSet", + }, action.(k8stesting.UpdateAction).GetObject().(*appsv1.ReplicaSet).Name, fmt.Errorf("test error")) + }) + + f.runController(key, true, false, c, i, k8sI) + + updatedRs := f.getPatchedReplicaSet(patchIndex) // minus one because update did not happen because conflict + assert.Equal(t, int32(2), *updatedRs.Spec.Replicas) +} + +func TestSyncRolloutWithConflictInSyncReplicaSetRevision(t *testing.T) { + os.Setenv("ARGO_ROLLOUTS_LOG_RS_DIFF_CONFLICT", "true") + defer os.Unsetenv("ARGO_ROLLOUTS_LOG_RS_DIFF_CONFLICT") + + f := newFixture(t) + defer f.Close() + + steps := []v1alpha1.CanaryStep{ + { + SetWeight: int32Ptr(10), + }, { + Pause: &v1alpha1.RolloutPause{ + Duration: v1alpha1.DurationFromInt(10), + }, + }, + } + r1 := newCanaryRollout("foo", 3, nil, steps, int32Ptr(1), intstr.FromInt(1), intstr.FromInt(0)) + r2 := bumpVersion(r1) + + rs1 := newReplicaSetWithStatus(r1, 3, 3) + rs2 := newReplicaSetWithStatus(r2, 3, 3) + rs2.Annotations["rollout.argoproj.io/revision"] = "1" + + f.kubeobjects = append(f.kubeobjects, rs1, rs2) + f.replicaSetLister = append(f.replicaSetLister, rs1, rs2) + + f.rolloutLister = append(f.rolloutLister, r2) + f.objects = append(f.objects, r2) + + key := fmt.Sprintf("%s/%s", r1.Namespace, r1.Name) + c, i, k8sI := f.newController(func() time.Duration { return 30 * time.Minute }) + + f.kubeclient.PrependReactor("update", "replicasets", func(action k8stesting.Action) (handled bool, ret runtime.Object, err error) { + return true, &appsv1.ReplicaSet{}, errors.NewConflict(schema.GroupResource{ + Group: "Apps", + Resource: "ReplicaSet", + }, action.(k8stesting.UpdateAction).GetObject().(*appsv1.ReplicaSet).Name, fmt.Errorf("test error")) + }) + + f.expectPatchRolloutAction(r2) + f.expectUpdateReplicaSetAction(rs1) // attempt to update replicaset revision but conflict + patchIndex1 := f.expectPatchReplicaSetAction(rs1) // instead of update patch replicaset + + f.expectUpdateReplicaSetAction(rs2) // attempt to scale replicaset but conflict + patchIndex2 := f.expectPatchReplicaSetAction(rs2) // instead of update patch replicaset + + f.runController(key, true, false, c, i, k8sI) + + updatedRs1 := f.getPatchedReplicaSet(patchIndex1) + assert.Equal(t, "2", updatedRs1.Annotations["rollout.argoproj.io/revision"]) + assert.Equal(t, int32(3), *updatedRs1.Spec.Replicas) + + updatedRs2 := f.getPatchedReplicaSet(patchIndex2) + assert.Equal(t, int32(0), *updatedRs2.Spec.Replicas) +} diff --git a/rollout/controller.go b/rollout/controller.go index 972cea882c..23f7f340dd 100644 --- a/rollout/controller.go +++ b/rollout/controller.go @@ -4,11 +4,16 @@ import ( "context" "encoding/json" "fmt" + "os" "reflect" "strconv" + "strings" "sync" "time" + "github.com/argoproj/argo-rollouts/utils/annotations" + + "github.com/argoproj/argo-rollouts/utils/diff" "k8s.io/apimachinery/pkg/runtime/schema" "github.com/argoproj/argo-rollouts/pkg/apis/rollouts" @@ -16,11 +21,13 @@ import ( log "github.com/sirupsen/logrus" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/errors" k8serrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" + patchtypes "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/dynamic" @@ -937,3 +944,92 @@ func remarshalRollout(r *v1alpha1.Rollout) *v1alpha1.Rollout { } return &remarshalled } + +// updateReplicaSetWithPatch updates the replicaset using Update and on failure falls back to a patch this function only exists to make sure we always can update +// replicasets and to not get into an conflict loop updating replicasets. We should really look into a complete refactor of how rollouts handles replicasets such +// that we do not keep a fully replicaset on the rollout context under newRS and instead switch to a patch only based approach. +func (c *rolloutContext) updateReplicaSetFallbackToPatch(ctx context.Context, rs *appsv1.ReplicaSet) (*appsv1.ReplicaSet, error) { + updatedRS, err := c.kubeclientset.AppsV1().ReplicaSets(rs.Namespace).Update(ctx, rs, metav1.UpdateOptions{}) + if err != nil { + if errors.IsConflict(err) { + if os.Getenv("ARGO_ROLLOUTS_LOG_RS_DIFF_CONFLICT") == "true" { + rsGet, err := c.replicaSetLister.ReplicaSets(rs.Namespace).Get(rs.Name) + if err != nil { + return nil, fmt.Errorf("error getting replicaset in updateReplicaSetFallbackToPatch %s: %w", rs.Name, err) + } + rsGetJson, err := json.Marshal(rsGet) + if err != nil { + return nil, fmt.Errorf("error marshalling informer replicaset in updateReplicaSetFallbackToPatch %s: %w", rs.Name, err) + } + rsCopyJson, err := json.Marshal(rs) + if err != nil { + return nil, fmt.Errorf("error marshalling memory replicaset in updateReplicaSetFallbackToPatch %s: %w", rs.Name, err) + } + c.log.Infof("Informer RS: %s", rsGetJson) + c.log.Infof("Memory RS: %s", rsCopyJson) + } + + c.log.Infof("Conflict when updating replicaset %s, falling back to patch", rs.Name) + + patchRS := appsv1.ReplicaSet{} + patchRS.Spec.Replicas = rs.Spec.Replicas + patchRS.Spec.Template.Labels = rs.Spec.Template.Labels + patchRS.Spec.Template.Annotations = rs.Spec.Template.Annotations + + patchRS.Annotations = make(map[string]string) + patchRS.Labels = make(map[string]string) + patchRS.Spec.Selector = &metav1.LabelSelector{ + MatchLabels: make(map[string]string), + } + + if _, found := rs.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]; found { + patchRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] = rs.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + } + + if _, found := rs.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey]; found { + patchRS.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] = rs.Labels[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] + } + + if _, found := rs.Spec.Selector.MatchLabels[v1alpha1.DefaultRolloutUniqueLabelKey]; found { + patchRS.Spec.Selector.MatchLabels[v1alpha1.DefaultRolloutUniqueLabelKey] = rs.Spec.Selector.MatchLabels[v1alpha1.DefaultRolloutUniqueLabelKey] + } + + for key, value := range rs.Annotations { + if strings.HasPrefix(key, annotations.RolloutLabel) || + strings.HasPrefix(key, "argo-rollouts.argoproj.io") || + strings.HasPrefix(key, "experiment.argoproj.io") { + patchRS.Annotations[key] = value + } + } + for key, value := range rs.Labels { + if strings.HasPrefix(key, annotations.RolloutLabel) || + strings.HasPrefix(key, "argo-rollouts.argoproj.io") || + strings.HasPrefix(key, "experiment.argoproj.io") { + patchRS.Labels[key] = value + } + } + + patch, _, err := diff.CreateTwoWayMergePatch(appsv1.ReplicaSet{}, patchRS, appsv1.ReplicaSet{}) + if err != nil { + return nil, fmt.Errorf("error creating patch for conflict log in updateReplicaSetFallbackToPatch %s: %w", rs.Name, err) + } + + c.log.Infof("Patching replicaset with patch: %s", string(patch)) + updatedRS, err = c.kubeclientset.AppsV1().ReplicaSets(rs.Namespace).Patch(ctx, rs.Name, patchtypes.StrategicMergePatchType, patch, metav1.PatchOptions{}) + if err != nil { + return nil, fmt.Errorf("error patching replicaset in updateReplicaSetFallbackToPatch %s: %w", rs.Name, err) + } + + err = c.replicaSetInformer.GetIndexer().Update(updatedRS) + if err != nil { + return nil, fmt.Errorf("error updating replicaset informer in updateReplicaSetFallbackToPatch %s: %w", rs.Name, err) + } + + return updatedRS, err + } + } + if updatedRS != nil { + updatedRS.DeepCopyInto(rs) + } + return rs, err +} diff --git a/rollout/controller_test.go b/rollout/controller_test.go index 892a2be64f..e38fca79c5 100644 --- a/rollout/controller_test.go +++ b/rollout/controller_test.go @@ -792,6 +792,12 @@ func (f *fixture) expectPatchServiceAction(s *corev1.Service, newLabel string) i return len } +func (f *fixture) expectGetReplicaSetAction(r *appsv1.ReplicaSet) int { //nolint:unused + len := len(f.kubeactions) + f.kubeactions = append(f.kubeactions, core.NewGetAction(schema.GroupVersionResource{Resource: "replicasets"}, r.Namespace, r.Name)) + return len +} + func (f *fixture) expectCreateReplicaSetAction(r *appsv1.ReplicaSet) int { len := len(f.kubeactions) f.kubeactions = append(f.kubeactions, core.NewCreateAction(schema.GroupVersionResource{Resource: "replicasets"}, r.Namespace, r)) @@ -950,6 +956,21 @@ func (f *fixture) getUpdatedReplicaSet(index int) *appsv1.ReplicaSet { return rs } +func (f *fixture) getPatchedReplicaSet(index int) *appsv1.ReplicaSet { + action := filterInformerActions(f.kubeclient.Actions())[index] + patchAction, ok := action.(core.PatchAction) + if !ok { + f.t.Fatalf("Expected Patch action, not %s", action.GetVerb()) + } + + rs := appsv1.ReplicaSet{} + err := json.Unmarshal(patchAction.GetPatch(), &rs) + if err != nil { + panic(err) + } + return &rs +} + func (f *fixture) verifyPatchedReplicaSet(index int, scaleDownDelaySeconds int32) { action := filterInformerActions(f.kubeclient.Actions())[index] patchAction, ok := action.(core.PatchAction) diff --git a/rollout/ephemeralmetadata.go b/rollout/ephemeralmetadata.go index 60b745ed29..4f502a78ab 100644 --- a/rollout/ephemeralmetadata.go +++ b/rollout/ephemeralmetadata.go @@ -82,14 +82,12 @@ func (c *rolloutContext) syncEphemeralMetadata(ctx context.Context, rs *appsv1.R } // 2. Update ReplicaSet so that any new pods it creates will have the metadata - rs, err = c.kubeclientset.AppsV1().ReplicaSets(modifiedRS.Namespace).Update(ctx, modifiedRS, metav1.UpdateOptions{}) + rs, err = c.updateReplicaSetFallbackToPatch(ctx, modifiedRS) if err != nil { - return fmt.Errorf("error updating replicaset in syncEphemeralMetadata: %w", err) - } - err = c.replicaSetInformer.GetIndexer().Update(rs) - if err != nil { - return fmt.Errorf("error updating replicaset informer in syncEphemeralMetadata: %w", err) + c.log.Infof("failed to sync ephemeral metadata %v to ReplicaSet %s: %v", podMetadata, rs.Name, err) + return fmt.Errorf("failed to sync ephemeral metadata: %w", err) } + c.log.Infof("synced ephemeral metadata %v to ReplicaSet %s", podMetadata, rs.Name) return nil } diff --git a/rollout/sync.go b/rollout/sync.go index 875949ee55..6d656e2d5a 100644 --- a/rollout/sync.go +++ b/rollout/sync.go @@ -83,17 +83,13 @@ func (c *rolloutContext) syncReplicaSetRevision() (*appsv1.ReplicaSet, error) { affinityNeedsUpdate := replicasetutil.IfInjectedAntiAffinityRuleNeedsUpdate(rsCopy.Spec.Template.Spec.Affinity, *c.rollout) if annotationsUpdated || minReadySecondsNeedsUpdate || affinityNeedsUpdate { + rsCopy.Spec.MinReadySeconds = c.rollout.Spec.MinReadySeconds rsCopy.Spec.Template.Spec.Affinity = replicasetutil.GenerateReplicaSetAffinity(*c.rollout) - rs, err := c.kubeclientset.AppsV1().ReplicaSets(rsCopy.ObjectMeta.Namespace).Update(ctx, rsCopy, metav1.UpdateOptions{}) - if err != nil { - c.log.WithError(err).Error("Error: updating replicaset revision") - return nil, fmt.Errorf("error updating replicaset revision: %v", err) - } - c.log.Infof("Synced revision on ReplicaSet '%s' to '%s'", rs.Name, newRevision) - err = c.replicaSetInformer.GetIndexer().Update(rs) + + rs, err := c.updateReplicaSetFallbackToPatch(ctx, rsCopy) if err != nil { - return nil, fmt.Errorf("error updating replicaset informer in syncReplicaSetRevision: %w", err) + return nil, fmt.Errorf("failed to update replicaset revision on %s: %w", rsCopy.Name, err) } return rs, nil } @@ -113,7 +109,7 @@ func (c *rolloutContext) syncReplicaSetRevision() (*appsv1.ReplicaSet, error) { conditions.SetRolloutCondition(&c.rollout.Status, *condition) updatedRollout, err := c.argoprojclientset.ArgoprojV1alpha1().Rollouts(c.rollout.Namespace).UpdateStatus(ctx, c.rollout, metav1.UpdateOptions{}) if err != nil { - c.log.WithError(err).Error("Error: updating rollout revision") + c.log.WithError(err).Error("Error: updating rollout status in syncReplicaSetRevision") return nil, err } c.rollout = updatedRollout @@ -245,7 +241,7 @@ func (c *rolloutContext) createDesiredReplicaSet() (*appsv1.ReplicaSet, error) { cond := conditions.NewRolloutCondition(v1alpha1.RolloutProgressing, corev1.ConditionFalse, conditions.FailedRSCreateReason, msg) patchErr := c.patchCondition(c.rollout, newStatus, cond) if patchErr != nil { - c.log.Warnf("Error Patching Rollout: %s", patchErr.Error()) + c.log.Warnf("Error Patching Rollout Conditions: %s", patchErr.Error()) } return nil, err default: @@ -370,25 +366,21 @@ func (c *rolloutContext) scaleReplicaSet(rs *appsv1.ReplicaSet, newScale int32, rolloutReplicas := defaults.GetReplicasOrDefault(rollout.Spec.Replicas) annotationsNeedUpdate := annotations.ReplicasAnnotationsNeedUpdate(rs, rolloutReplicas) - scaled := false var err error + scaled := false if sizeNeedsUpdate || annotationsNeedUpdate { rsCopy := rs.DeepCopy() oldScale := defaults.GetReplicasOrDefault(rs.Spec.Replicas) *(rsCopy.Spec.Replicas) = newScale annotations.SetReplicasAnnotations(rsCopy, rolloutReplicas) if fullScaleDown && !c.shouldDelayScaleDownOnAbort() { + // This bypasses the normal call to removeScaleDownDelay and then depends on the removal via an update in updateReplicaSetFallbackToPatch delete(rsCopy.Annotations, v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey) } - rs, err = c.kubeclientset.AppsV1().ReplicaSets(rsCopy.Namespace).Update(ctx, rsCopy, metav1.UpdateOptions{}) - if err != nil { - return scaled, rs, fmt.Errorf("error updating replicaset %s: %w", rsCopy.Name, err) - } - err = c.replicaSetInformer.GetIndexer().Update(rs) + rs, err = c.updateReplicaSetFallbackToPatch(ctx, rsCopy) if err != nil { - err = fmt.Errorf("error updating replicaset informer in scaleReplicaSet: %w", err) - return scaled, rs, err + return scaled, rs, fmt.Errorf("failed to updateReplicaSetFallbackToPatch in scaleReplicaSet: %w", err) } if sizeNeedsUpdate { diff --git a/test/e2e/aws_test.go b/test/e2e/aws_test.go index f8b0553fe2..dab037e395 100644 --- a/test/e2e/aws_test.go +++ b/test/e2e/aws_test.go @@ -239,6 +239,7 @@ func (s *AWSSuite) TestALBExperimentStepMultiIngress() { } func (s *AWSSuite) TestALBExperimentStepNoSetWeight() { + //TODO: this test is flaky s.Given(). RolloutObjects("@alb/rollout-alb-experiment-no-setweight.yaml"). When(). @@ -272,6 +273,7 @@ func (s *AWSSuite) TestALBExperimentStepNoSetWeight() { } func (s *AWSSuite) TestALBExperimentStepNoSetWeightMultiIngress() { + //TODO: this test is flaky s.Given(). RolloutObjects("@alb/rollout-alb-multi-ingress-experiment-no-setweight.yaml"). When(). diff --git a/test/e2e/canary_test.go b/test/e2e/canary_test.go index 2c68ec8bd7..8656aa5c4d 100644 --- a/test/e2e/canary_test.go +++ b/test/e2e/canary_test.go @@ -149,7 +149,10 @@ spec: spec: containers: - name: updatescaling - command: [/bad-command]`). + resources: + requests: + memory: 16Mi + cpu: 2m`). WaitForRolloutReplicas(7). Then(). ExpectCanaryStablePodCount(4, 3). @@ -658,6 +661,7 @@ func (s *CanarySuite) TestCanaryDynamicStableScale() { When(). MarkPodsReady("1", 1). // mark last remaining stable pod as ready (4/4 stable are ready) WaitForRevisionPodCount("2", 0). + Sleep(2*time.Second). //WaitForRevisionPodCount does not wait for terminating pods and so ExpectServiceSelector fails sleep a bit for the terminating pods to be deleted Then(). // Expect that the canary service selector is now set to stable because of dynamic stable scale is over and we have all pods up on stable rs ExpectServiceSelector("dynamic-stable-scale-canary", map[string]string{"app": "dynamic-stable-scale", "rollouts-pod-template-hash": "868d98995b"}, false). diff --git a/test/e2e/functional/analysistemplate-sleep-job.yaml b/test/e2e/functional/analysistemplate-sleep-job.yaml index 86faa2c877..4fdd369dee 100644 --- a/test/e2e/functional/analysistemplate-sleep-job.yaml +++ b/test/e2e/functional/analysistemplate-sleep-job.yaml @@ -6,7 +6,7 @@ metadata: spec: args: - name: duration - value: 0s + value: "0" - name: exit-code value: "0" - name: count diff --git a/test/e2e/functional_test.go b/test/e2e/functional_test.go index 930c7d0c61..668c75bb0c 100644 --- a/test/e2e/functional_test.go +++ b/test/e2e/functional_test.go @@ -166,13 +166,14 @@ spec: UpdateSpec(). WaitForRolloutStatus("Paused"). // At step 1 (pause: {duration: 24h}) PromoteRollout(). - Sleep(2*time.Second). + Sleep(3*time.Second). + WaitForInlineAnalysisRunPhase("Running"). Then(). + ExpectRolloutStatus("Progressing"). // At step 2 (analysis: sleep-job - 24h) + ExpectAnalysisRunCount(1). ExpectRollout("status.currentStepIndex == 1", func(r *v1alpha1.Rollout) bool { return *r.Status.CurrentStepIndex == 1 }). - ExpectRolloutStatus("Progressing"). // At step 2 (analysis: sleep-job - 24h) - ExpectAnalysisRunCount(1). When(). PromoteRollout(). Sleep(2 * time.Second). @@ -205,6 +206,9 @@ spec: prePromotionAnalysis: templates: - templateName: sleep-job + args: + - name: duration + value: "10" postPromotionAnalysis: templates: - templateName: sleep-job @@ -228,7 +232,8 @@ spec: ApplyManifests(). WaitForRolloutStatus("Healthy"). UpdateSpec(). - Sleep(3 * time.Second). + Sleep(5 * time.Second). + WaitForPrePromotionAnalysisRunPhase("Running"). PromoteRolloutFull(). WaitForRolloutStatus("Healthy"). Then(). diff --git a/test/fixtures/e2e_suite.go b/test/fixtures/e2e_suite.go index a774afcf94..e78ae1aa68 100644 --- a/test/fixtures/e2e_suite.go +++ b/test/fixtures/e2e_suite.go @@ -54,7 +54,7 @@ const ( ) var ( - E2EWaitTimeout time.Duration = time.Second * 120 + E2EWaitTimeout time.Duration = time.Second * 90 E2EPodDelay = 0 E2EALBIngressAnnotations map[string]string @@ -143,8 +143,8 @@ func (s *E2ESuite) SetupSuite() { restConfig, err := config.ClientConfig() s.CheckError(err) s.Common.kubernetesHost = restConfig.Host - restConfig.Burst = defaults.DefaultBurst * 2 - restConfig.QPS = defaults.DefaultQPS * 2 + restConfig.Burst = defaults.DefaultBurst * 10 + restConfig.QPS = defaults.DefaultQPS * 10 s.namespace, _, err = config.Namespace() s.CheckError(err) s.kubeClient, err = kubernetes.NewForConfig(restConfig) diff --git a/utils/annotations/annotations.go b/utils/annotations/annotations.go index 121c6c0803..067492bc2b 100644 --- a/utils/annotations/annotations.go +++ b/utils/annotations/annotations.go @@ -28,6 +28,8 @@ const ( DesiredReplicasAnnotation = RolloutLabel + "/desired-replicas" // WorkloadGenerationAnnotation is the generation of the referenced workload WorkloadGenerationAnnotation = RolloutLabel + "/workload-generation" + // NotificationEngineAnnotation the annotation notification engine uses to determine if it should notify + NotificationEngineAnnotation = "notified.notifications.argoproj.io" ) // GetDesiredReplicasAnnotation returns the number of desired replicas @@ -219,6 +221,7 @@ var annotationsToSkip = map[string]bool{ RevisionAnnotation: true, RevisionHistoryAnnotation: true, DesiredReplicasAnnotation: true, + NotificationEngineAnnotation: true, } // skipCopyAnnotation returns true if we should skip copying the annotation with the given annotation key diff --git a/utils/controller/controller.go b/utils/controller/controller.go index 2530e1d5fa..b5c1fc875b 100644 --- a/utils/controller/controller.go +++ b/utils/controller/controller.go @@ -6,6 +6,8 @@ import ( "runtime/debug" "time" + "k8s.io/apimachinery/pkg/api/errors" + log "github.com/sirupsen/logrus" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -157,6 +159,11 @@ func processNextWorkItem(ctx context.Context, workqueue workqueue.RateLimitingIn if err := runSyncHandler(); err != nil { logCtx.Errorf("%s syncHandler error: %v", objType, err) metricsServer.IncError(namespace, name, objType) + + if errors.IsNotFound(err) { + workqueue.Forget(obj) + return nil + } // Put the item back on // the workqueue to handle any transient errors. workqueue.AddRateLimited(key) diff --git a/utils/replicaset/canary.go b/utils/replicaset/canary.go old mode 100755 new mode 100644 index cf41e6baa5..f8fd8fe869 --- a/utils/replicaset/canary.go +++ b/utils/replicaset/canary.go @@ -4,6 +4,8 @@ import ( "encoding/json" "math" + "github.com/argoproj/argo-rollouts/utils/annotations" + log "github.com/sirupsen/logrus" appsv1 "k8s.io/api/apps/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -15,7 +17,7 @@ import ( const ( // EphemeralMetadataAnnotation denotes pod metadata which is ephemerally injected to canary/stable pods - EphemeralMetadataAnnotation = "rollout.argoproj.io/ephemeral-metadata" + EphemeralMetadataAnnotation = annotations.RolloutLabel + "/ephemeral-metadata" ) func allDesiredAreAvailable(rs *appsv1.ReplicaSet, desired int32) bool { From e807d391eb55e13e6fcb7a97c0ac449d5b85fd7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 06:52:04 -0700 Subject: [PATCH 039/219] chore(deps): bump github.com/aws/aws-sdk-go-v2 from 1.27.0 to 1.27.2 (#3621) Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.27.0 to 1.27.2. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.27.0...v1.27.2) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 1d76d31b83..222101a6b4 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.27.0 + github.com/aws/aws-sdk-go-v2 v1.27.2 github.com/aws/aws-sdk-go-v2/config v1.27.16 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.1 diff --git a/go.sum b/go.sum index 84d5d6b9d7..66d60533aa 100644 --- a/go.sum +++ b/go.sum @@ -96,8 +96,8 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.27.0 h1:7bZWKoXhzI+mMR/HjdMx8ZCC5+6fY0lS5tr0bbgiLlo= -github.com/aws/aws-sdk-go-v2 v1.27.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= +github.com/aws/aws-sdk-go-v2 v1.27.2 h1:pLsTXqX93rimAOZG2FIYraDQstZaaGVVN4tNw65v0h8= +github.com/aws/aws-sdk-go-v2 v1.27.2/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= github.com/aws/aws-sdk-go-v2/config v1.27.16 h1:knpCuH7laFVGYTNd99Ns5t+8PuRjDn4HnnZK48csipM= github.com/aws/aws-sdk-go-v2/config v1.27.16/go.mod h1:vutqgRhDUktwSge3hrC3nkuirzkJ4E/mLj5GvI0BQas= github.com/aws/aws-sdk-go-v2/credentials v1.17.16 h1:7d2QxY83uYl0l58ceyiSpxg9bSbStqBC6BeEeHEchwo= From 32d50b78d3da531d30024d5842fc3f3c2b5c1948 Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Mon, 10 Jun 2024 09:32:42 -0700 Subject: [PATCH 040/219] chore: add codecov token (#3623) * add codecov token Signed-off-by: Zach Aller * fail if we do not upload Signed-off-by: Zach Aller --------- Signed-off-by: Zach Aller --- .github/workflows/go.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index cd0590862d..45f161d0e2 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -93,6 +93,9 @@ jobs: uses: codecov/codecov-action@v4.4.1 with: file: coverage.out + fail_ci_if_error: true + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} codegen: name: Verify Codegen From e20bcde8f39d462506e6cd4ed9839fa026209df3 Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Wed, 12 Jun 2024 12:11:22 -0500 Subject: [PATCH 041/219] fix: verify the weight of the alb at the end of the rollout (#3627) * fix: verify the weight of the alb at the end of the rollout when we auto set max weight Signed-off-by: Zach Aller * add unit test Signed-off-by: Zach Aller * refactor add unit test Signed-off-by: Zach Aller * Trigger Build Signed-off-by: Zach Aller * Trigger Build Signed-off-by: Zach Aller * block reconcile Signed-off-by: Zach Aller * add tests Signed-off-by: Zach Aller * rename test and cleanup un-need logic check Signed-off-by: Zach Aller --------- Signed-off-by: Zach Aller --- rollout/trafficrouting.go | 6 ++++ rollout/trafficrouting/alb/alb.go | 2 +- rollout/trafficrouting/alb/alb_test.go | 43 +++++++++++++++++++++++ rollout/trafficrouting_test.go | 47 ++++++++++++++++++++++++++ utils/rollout/rolloututil.go | 10 +++--- utils/rollout/rolloututil_test.go | 12 +++++-- 6 files changed, 112 insertions(+), 8 deletions(-) diff --git a/rollout/trafficrouting.go b/rollout/trafficrouting.go index f8b01951a4..e992277a57 100644 --- a/rollout/trafficrouting.go +++ b/rollout/trafficrouting.go @@ -288,6 +288,12 @@ func (c *rolloutContext) reconcileTrafficRouting() error { } else { c.log.Infof("Desired weight (stepIdx: %s) %d not yet verified", indexString, desiredWeight) c.enqueueRolloutAfter(c.rollout, defaults.GetRolloutVerifyRetryInterval()) + // At the end of the rollout we need to verify the weight is correct, and return an error if not because we don't want the rest of the + // reconcile process to continue. We don't need to do this if we are in the middle of the rollout because the rest of the reconcile + // process won't scale down the old replicasets yet due to being in the middle of some steps. + if desiredWeight == weightutil.MaxTrafficWeight(c.rollout) && len(c.rollout.Spec.Strategy.Canary.Steps) >= int(*c.rollout.Status.CurrentStepIndex) { + return fmt.Errorf("end of rollout, desired weight %d not yet verified", desiredWeight) + } } } } diff --git a/rollout/trafficrouting/alb/alb.go b/rollout/trafficrouting/alb/alb.go index 8e81b113c7..2abeb052db 100644 --- a/rollout/trafficrouting/alb/alb.go +++ b/rollout/trafficrouting/alb/alb.go @@ -202,7 +202,7 @@ func (r *Reconciler) VerifyWeight(desiredWeight int32, additionalDestinations .. return nil, nil } - if !rolloututil.ShouldVerifyWeight(r.cfg.Rollout) { + if !rolloututil.ShouldVerifyWeight(r.cfg.Rollout, desiredWeight) { // If we should not verify weight but the ALB status has not been set yet due to a Rollout resource just being // installed in the cluster we want to actually run the rest of the function, so we do not return if // r.cfg.Rollout.Status.ALB is nil. However, if we should not verify, and we have already updated the status once diff --git a/rollout/trafficrouting/alb/alb_test.go b/rollout/trafficrouting/alb/alb_test.go index fb131849d4..faa798e524 100644 --- a/rollout/trafficrouting/alb/alb_test.go +++ b/rollout/trafficrouting/alb/alb_test.go @@ -918,6 +918,7 @@ func TestVerifyWeight(t *testing.T) { { var status v1alpha1.RolloutStatus r, fakeClient := newFakeReconciler(&status) + fakeClient.loadBalancers = []*elbv2types.LoadBalancer{ { LoadBalancerName: pointer.StringPtr("lb-abc123-name"), @@ -955,6 +956,48 @@ func TestVerifyWeight(t *testing.T) { assert.Equal(t, *status.ALB, *fakeClient.getAlbStatus("ingress")) } + // LoadBalancer found, at max weight, end of rollout + { + var status v1alpha1.RolloutStatus + status.CurrentStepIndex = pointer.Int32Ptr(2) + r, fakeClient := newFakeReconciler(&status) + fakeClient.loadBalancers = []*elbv2types.LoadBalancer{ + { + LoadBalancerName: pointer.StringPtr("lb-abc123-name"), + LoadBalancerArn: pointer.StringPtr("arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/lb-abc123-name/1234567890123456"), + DNSName: pointer.StringPtr("verify-weight-test-abc-123.us-west-2.elb.amazonaws.com"), + }, + } + fakeClient.targetGroups = []aws.TargetGroupMeta{ + { + TargetGroup: elbv2types.TargetGroup{ + TargetGroupName: pointer.StringPtr("canary-tg-abc123-name"), + TargetGroupArn: pointer.StringPtr("arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/canary-tg-abc123-name/1234567890123456"), + }, + Weight: pointer.Int32Ptr(100), + Tags: map[string]string{ + aws.AWSLoadBalancerV2TagKeyResourceID: "default/ingress-canary-svc:443", + }, + }, + { + TargetGroup: elbv2types.TargetGroup{ + TargetGroupName: pointer.StringPtr("stable-tg-abc123-name"), + TargetGroupArn: pointer.StringPtr("arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/stable-tg-abc123-name/1234567890123456"), + }, + Weight: pointer.Int32Ptr(0), + Tags: map[string]string{ + aws.AWSLoadBalancerV2TagKeyResourceID: "default/ingress-stable-svc:443", + }, + }, + } + + weightVerified, err := r.VerifyWeight(100) + assert.NoError(t, err) + assert.True(t, *weightVerified) + assert.Equal(t, status.ALBs[0], *status.ALB) + assert.Equal(t, *status.ALB, *fakeClient.getAlbStatus("ingress")) + } + // LoadBalancer found, but ARNs are unparsable { var status v1alpha1.RolloutStatus diff --git a/rollout/trafficrouting_test.go b/rollout/trafficrouting_test.go index f7dd459964..f358a18f64 100644 --- a/rollout/trafficrouting_test.go +++ b/rollout/trafficrouting_test.go @@ -130,6 +130,53 @@ func TestReconcileTrafficRoutingVerifyWeightFalse(t *testing.T) { assert.True(t, enqueued) } +func TestReconcileTrafficRoutingVerifyWeightEndOfRollout(t *testing.T) { + f := newFixture(t) + defer f.Close() + + steps := []v1alpha1.CanaryStep{ + { + SetWeight: pointer.Int32Ptr(10), + }, + { + Pause: &v1alpha1.RolloutPause{}, + }, + } + r1 := newCanaryRollout("foo", 10, nil, steps, pointer.Int32Ptr(2), intstr.FromInt(1), intstr.FromInt(0)) + r2 := bumpVersion(r1) + r2.Spec.Strategy.Canary.TrafficRouting = &v1alpha1.RolloutTrafficRouting{} + r2.Spec.Strategy.Canary.CanaryService = "canary" + r2.Spec.Strategy.Canary.StableService = "stable" + + rs1 := newReplicaSetWithStatus(r1, 10, 10) + rs2 := newReplicaSetWithStatus(r2, 10, 10) + + rs1PodHash := rs1.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + rs2PodHash := rs2.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + canarySelector := map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: rs2PodHash} + stableSelector := map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: rs1PodHash} + canarySvc := newService("canary", 80, canarySelector, r2) + stableSvc := newService("stable", 80, stableSelector, r2) + + f.kubeobjects = append(f.kubeobjects, rs1, rs2, canarySvc, stableSvc) + f.replicaSetLister = append(f.replicaSetLister, rs1, rs2) + + r2 = updateCanaryRolloutStatus(r2, rs1PodHash, 10, 0, 10, false) + f.rolloutLister = append(f.rolloutLister, r2) + f.objects = append(f.objects, r2) + + f.fakeTrafficRouting = newUnmockedFakeTrafficRoutingReconciler() + f.fakeTrafficRouting.On("UpdateHash", mock.Anything, mock.Anything, mock.Anything).Return(nil) + f.fakeTrafficRouting.On("SetWeight", mock.Anything, mock.Anything).Return(func(desiredWeight int32, additionalDestinations ...v1alpha1.WeightDestination) error { + // make sure SetWeight was called with correct value + assert.Equal(t, int32(100), desiredWeight) + return nil + }) + f.fakeTrafficRouting.On("SetHeaderRoute", mock.Anything, mock.Anything).Return(nil) + f.fakeTrafficRouting.On("VerifyWeight", mock.Anything).Return(pointer.BoolPtr(false), nil) + f.runExpectError(getKey(r2, t), true) +} + func TestRolloutUseDesiredWeight(t *testing.T) { f := newFixture(t) defer f.Close() diff --git a/utils/rollout/rolloututil.go b/utils/rollout/rolloututil.go index 0b7df7ff38..5411f3f58c 100644 --- a/utils/rollout/rolloututil.go +++ b/utils/rollout/rolloututil.go @@ -4,6 +4,8 @@ import ( "fmt" "strconv" + "github.com/argoproj/argo-rollouts/utils/weightutil" + replicasetutil "github.com/argoproj/argo-rollouts/utils/replicaset" "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" @@ -184,13 +186,13 @@ func CanaryStepString(c v1alpha1.CanaryStep) string { // ShouldVerifyWeight We use this to test if we should verify weights because weight verification could involve // API calls to the cloud provider which could incur rate limiting -func ShouldVerifyWeight(ro *v1alpha1.Rollout) bool { +func ShouldVerifyWeight(ro *v1alpha1.Rollout, desiredWeight int32) bool { currentStep, _ := replicasetutil.GetCurrentCanaryStep(ro) // If we are in the middle of an update at a setWeight step, also perform weight verification. // Note that we don't do this every reconciliation because weight verification typically involves // API calls to the cloud provider which could incur rate limitingq - shouldVerifyWeight := ro.Status.StableRS != "" && - !IsFullyPromoted(ro) && - currentStep != nil && currentStep.SetWeight != nil + shouldVerifyWeight := (ro.Status.StableRS != "" && !IsFullyPromoted(ro) && currentStep != nil && currentStep.SetWeight != nil) || + (ro.Status.StableRS != "" && !IsFullyPromoted(ro) && currentStep == nil && desiredWeight == weightutil.MaxTrafficWeight(ro)) // We are at end of rollout + return shouldVerifyWeight } diff --git a/utils/rollout/rolloututil_test.go b/utils/rollout/rolloututil_test.go index 37c1810f00..d88f080f64 100644 --- a/utils/rollout/rolloututil_test.go +++ b/utils/rollout/rolloututil_test.go @@ -422,15 +422,21 @@ func TestShouldVerifyWeight(t *testing.T) { ro.Spec.Strategy.Canary.Steps = []v1alpha1.CanaryStep{{ SetWeight: pointer.Int32Ptr(20), }} - assert.Equal(t, true, ShouldVerifyWeight(ro)) + assert.Equal(t, true, ShouldVerifyWeight(ro, 20)) ro.Status.StableRS = "" - assert.Equal(t, false, ShouldVerifyWeight(ro)) + assert.Equal(t, false, ShouldVerifyWeight(ro, 20)) ro.Status.StableRS = "34feab23f" ro.Status.CurrentStepIndex = nil ro.Spec.Strategy.Canary.Steps = nil - assert.Equal(t, false, ShouldVerifyWeight(ro)) + assert.Equal(t, false, ShouldVerifyWeight(ro, 20)) + + // Test when the weight is 100, because we are at end of rollout + ro.Status.StableRS = "34feab23f" + ro.Status.CurrentStepIndex = nil + ro.Spec.Strategy.Canary.Steps = nil + assert.Equal(t, true, ShouldVerifyWeight(ro, 100)) } func Test_isGenerationObserved(t *testing.T) { From 7df3d17ac4d65c56ef12f19581784bdbb5c24b8b Mon Sep 17 00:00:00 2001 From: May Zhang Date: Wed, 12 Jun 2024 13:18:02 -0700 Subject: [PATCH 042/219] fix: when Rollout has pingpong and stable/canary service defined, only alb traffic management uses pingpong. (#3628) * fix: when Rollout has pingpong and stable/canary service defined, GetStableAndCanaryServices returns based on isPingpongPreferred. Only when it is ALB controller, then isPringpongPreferred is true. Signed-off-by: mayz985 * fix lint error Signed-off-by: mayz985 * added e2e Signed-off-by: mayz985 --------- Signed-off-by: mayz985 --- rollout/canary.go | 2 +- rollout/service.go | 2 +- rollout/trafficrouting/alb/alb.go | 6 +- rollout/trafficrouting/istio/istio.go | 12 +- rollout/trafficrouting/service_helper.go | 17 ++- rollout/trafficrouting/service_helper_test.go | 82 +++++++++++ test/e2e/aws_test.go | 65 ++++++++ ...albmesh-pingpong-stablecanary-rollout.yaml | 139 ++++++++++++++++++ 8 files changed, 310 insertions(+), 15 deletions(-) create mode 100644 rollout/trafficrouting/service_helper_test.go create mode 100644 test/e2e/functional/albmesh-pingpong-stablecanary-rollout.yaml diff --git a/rollout/canary.go b/rollout/canary.go index fa33b43616..a3033fea02 100644 --- a/rollout/canary.go +++ b/rollout/canary.go @@ -296,7 +296,7 @@ func (c *rolloutContext) canProceedWithScaleDownAnnotation(oldRSs []*appsv1.Repl // AWS API calls. return true, nil } - stableSvcName, _ := trafficrouting.GetStableAndCanaryServices(c.rollout) + stableSvcName, _ := trafficrouting.GetStableAndCanaryServices(c.rollout, true) stableSvc, err := c.servicesLister.Services(c.rollout.Namespace).Get(stableSvcName) if err != nil { return false, err diff --git a/rollout/service.go b/rollout/service.go index 69739b9315..c0904ffd23 100644 --- a/rollout/service.go +++ b/rollout/service.go @@ -243,7 +243,7 @@ func (c *rolloutContext) getPreviewAndActiveServices() (*corev1.Service, *corev1 func (c *rolloutContext) reconcilePingAndPongService() error { if trafficrouting.IsPingPongEnabled(c.rollout) && !rolloututils.IsFullyPromoted(c.rollout) { - _, canaryService := trafficrouting.GetStableAndCanaryServices(c.rollout) + _, canaryService := trafficrouting.GetStableAndCanaryServices(c.rollout, true) return c.ensureSVCTargets(canaryService, c.newRS, false) } return nil diff --git a/rollout/trafficrouting/alb/alb.go b/rollout/trafficrouting/alb/alb.go index 2abeb052db..0a053857d6 100644 --- a/rollout/trafficrouting/alb/alb.go +++ b/rollout/trafficrouting/alb/alb.go @@ -242,7 +242,7 @@ func (r *Reconciler) VerifyWeightPerIngress(desiredWeight int32, ingresses []str } resourceIDToDest := map[string]v1alpha1.WeightDestination{} - stableService, canaryService := trafficrouting.GetStableAndCanaryServices(rollout) + stableService, canaryService := trafficrouting.GetStableAndCanaryServices(rollout, true) canaryResourceID := aws.BuildTargetGroupResourceID(rollout.Namespace, ingress.GetName(), canaryService, rollout.Spec.Strategy.Canary.TrafficRouting.ALB.ServicePort) stableResourceID := aws.BuildTargetGroupResourceID(rollout.Namespace, ingress.GetName(), stableService, rollout.Spec.Strategy.Canary.TrafficRouting.ALB.ServicePort) @@ -347,7 +347,7 @@ func updateTargetGroupStatus(status *v1alpha1.ALBStatus, tg *aws.TargetGroupMeta } func getForwardActionString(r *v1alpha1.Rollout, port int32, desiredWeight int32, additionalDestinations ...v1alpha1.WeightDestination) (string, error) { - stableService, canaryService := trafficrouting.GetStableAndCanaryServices(r) + stableService, canaryService := trafficrouting.GetStableAndCanaryServices(r, true) portStr := strconv.Itoa(int(port)) stableWeight := int32(100) targetGroups := make([]ingressutil.ALBTargetGroup, 0) @@ -479,7 +479,7 @@ func removeValue(array []string, key string) []string { } func getTrafficForwardActionString(r *v1alpha1.Rollout, port int32) (string, error) { - _, canaryService := trafficrouting.GetStableAndCanaryServices(r) + _, canaryService := trafficrouting.GetStableAndCanaryServices(r, true) portStr := strconv.Itoa(int(port)) weight := int64(100) targetGroups := make([]ingressutil.ALBTargetGroup, 0) diff --git a/rollout/trafficrouting/istio/istio.go b/rollout/trafficrouting/istio/istio.go index 5308d59a42..bb9a15eb5e 100644 --- a/rollout/trafficrouting/istio/istio.go +++ b/rollout/trafficrouting/istio/istio.go @@ -125,7 +125,7 @@ func (patches virtualServicePatches) patchVirtualService(httpRoutes []any, tlsRo } func (r *Reconciler) generateVirtualServicePatches(rolloutVsvcRouteNames []string, httpRoutes []VirtualServiceHTTPRoute, rolloutVsvcTLSRoutes []v1alpha1.TLSRoute, tlsRoutes []VirtualServiceTLSRoute, rolloutVsvcTCPRoutes []v1alpha1.TCPRoute, tcpRoutes []VirtualServiceTCPRoute, desiredWeight int64, additionalDestinations ...v1alpha1.WeightDestination) virtualServicePatches { - stableSvc, canarySvc := trafficrouting.GetStableAndCanaryServices(r.rollout) + stableSvc, canarySvc := trafficrouting.GetStableAndCanaryServices(r.rollout, false) canarySubset := "" stableSubset := "" if r.rollout.Spec.Strategy.Canary.TrafficRouting.Istio.DestinationRule != nil { @@ -718,7 +718,7 @@ func (r *Reconciler) reconcileVirtualServiceHeaderRoutes(virtualService v1alpha1 return err } - _, canarySvc := trafficrouting.GetStableAndCanaryServices(r.rollout) + _, canarySvc := trafficrouting.GetStableAndCanaryServices(r.rollout, false) if destRuleHost != "" { canarySvc = destRuleHost } @@ -1023,7 +1023,7 @@ func searchTcpRoute(tcpRoute v1alpha1.TCPRoute, istioTcpRoutes []VirtualServiceT // ValidateHTTPRoutes ensures that all the routes in the rollout exist func ValidateHTTPRoutes(r *v1alpha1.Rollout, routeNames []string, httpRoutes []VirtualServiceHTTPRoute) error { - stableSvc, canarySvc := trafficrouting.GetStableAndCanaryServices(r) + stableSvc, canarySvc := trafficrouting.GetStableAndCanaryServices(r, false) routeIndexesToPatch, err := getHttpRouteIndexesToPatch(routeNames, httpRoutes) if err != nil { @@ -1060,7 +1060,7 @@ func ValidateHTTPRoutes(r *v1alpha1.Rollout, routeNames []string, httpRoutes []V // ValidateTlsRoutes ensures that all the routes in the rollout exist and they only have two destinations func ValidateTlsRoutes(r *v1alpha1.Rollout, vsvcTLSRoutes []v1alpha1.TLSRoute, tlsRoutes []VirtualServiceTLSRoute) error { - stableSvc, canarySvc := trafficrouting.GetStableAndCanaryServices(r) + stableSvc, canarySvc := trafficrouting.GetStableAndCanaryServices(r, false) routeIndexesToPatch, err := getTlsRouteIndexesToPatch(vsvcTLSRoutes, tlsRoutes) if err != nil { @@ -1081,7 +1081,7 @@ func ValidateTlsRoutes(r *v1alpha1.Rollout, vsvcTLSRoutes []v1alpha1.TLSRoute, t // ValidateTcpRoutes ensures that all the routes in the rollout exist and they only have two destinations func ValidateTcpRoutes(r *v1alpha1.Rollout, vsvcTCPRoutes []v1alpha1.TCPRoute, tcpRoutes []VirtualServiceTCPRoute) error { - stableSvc, canarySvc := trafficrouting.GetStableAndCanaryServices(r) + stableSvc, canarySvc := trafficrouting.GetStableAndCanaryServices(r, false) routeIndexesToPatch, err := getTcpRouteIndexesToPatch(vsvcTCPRoutes, tcpRoutes) if err != nil { @@ -1189,7 +1189,7 @@ func (r *Reconciler) reconcileVirtualServiceMirrorRoutes(virtualService v1alpha1 if err != nil { return fmt.Errorf("[reconcileVirtualServiceMirrorRoutes] failed to get destination rule host: %w", err) } - _, canarySvc := trafficrouting.GetStableAndCanaryServices(r.rollout) + _, canarySvc := trafficrouting.GetStableAndCanaryServices(r.rollout, false) if destRuleHost != "" { canarySvc = destRuleHost } diff --git a/rollout/trafficrouting/service_helper.go b/rollout/trafficrouting/service_helper.go index 15d03cad53..8bae069fe7 100644 --- a/rollout/trafficrouting/service_helper.go +++ b/rollout/trafficrouting/service_helper.go @@ -7,17 +7,26 @@ import ( // GetStableAndCanaryServices return a service names for current stable and canary services. // If ping-pong feature enabled then the current ping or pong service will be returned. Which is a stable is defined // based on a rollout status field Status.Canary.StablePingPong -func GetStableAndCanaryServices(ro *v1alpha1.Rollout) (string, string) { - if IsPingPongEnabled(ro) { + +// isPingpongPreferred is needed when Rollout uses both pingpong service and stable/canary service +// for ALB trafficRouting, isPingpongPreferred is true. It uses pingpong service as priority +// for other trafficRouting, isPingpongPrefrered is false. It uses stable/canary service +// This is to ensure it is compatible with previous release. + +func GetStableAndCanaryServices(ro *v1alpha1.Rollout, isPingpongPreferred bool) (string, string) { + pingPongNotPreferredOtherServiceNotDefined := !isPingpongPreferred && ro.Spec.Strategy.Canary.StableService == "" && ro.Spec.Strategy.Canary.CanaryService == "" + if IsPingPongEnabled(ro) && + (isPingpongPreferred || pingPongNotPreferredOtherServiceNotDefined) { canary := ro.Spec.Strategy.Canary if IsStablePing(ro) { return canary.PingPong.PingService, canary.PingPong.PongService } else { return canary.PingPong.PongService, canary.PingPong.PingService } - } else { - return ro.Spec.Strategy.Canary.StableService, ro.Spec.Strategy.Canary.CanaryService } + + return ro.Spec.Strategy.Canary.StableService, ro.Spec.Strategy.Canary.CanaryService + } // IsStablePing return true if the 'ping' service is pointing to the stable replica set. diff --git a/rollout/trafficrouting/service_helper_test.go b/rollout/trafficrouting/service_helper_test.go new file mode 100644 index 0000000000..cc0634eb6f --- /dev/null +++ b/rollout/trafficrouting/service_helper_test.go @@ -0,0 +1,82 @@ +package trafficrouting + +import ( + "testing" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/stretchr/testify/assert" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const PING_SVC = "ping-service" +const PONG_SVC = "pong-service" + +func fakeRollout(stableSvc, canarySvc string, pingPong *v1alpha1.PingPongSpec, stableIng string, port int32) *v1alpha1.Rollout { + return &v1alpha1.Rollout{ + ObjectMeta: metav1.ObjectMeta{ + Name: "rollout", + Namespace: metav1.NamespaceDefault, + }, + Spec: v1alpha1.RolloutSpec{ + Strategy: v1alpha1.RolloutStrategy{ + Canary: &v1alpha1.CanaryStrategy{ + StableService: stableSvc, + CanaryService: canarySvc, + PingPong: pingPong, + TrafficRouting: &v1alpha1.RolloutTrafficRouting{ + ALB: &v1alpha1.ALBTrafficRouting{ + Ingress: stableIng, + ServicePort: port, + }, + Istio: &v1alpha1.IstioTrafficRouting{ + VirtualService: &v1alpha1.IstioVirtualService{ + Name: "istio-vsvc", + }, + DestinationRule: &v1alpha1.IstioDestinationRule{ + Name: "istio-destrule", + CanarySubsetName: "canary", + StableSubsetName: "stable", + }, + }, + }, + }, + }, + }, + } +} + +func TestGetStableAndCanaryServices(t *testing.T) { + // Rollout has no pingPong + rollout := fakeRollout("stable-service", "canary-service", nil, "stable-ingress", 443) + + stableService, canaryService := GetStableAndCanaryServices(rollout, true) + assert.Equal(t, "stable-service", stableService) + assert.Equal(t, "canary-service", canaryService) + + stableService, canaryService = GetStableAndCanaryServices(rollout, false) + assert.Equal(t, "stable-service", stableService) + assert.Equal(t, "canary-service", canaryService) + + // Rollout has pingPong and stable/canary + pp := &v1alpha1.PingPongSpec{PingService: PING_SVC, PongService: PONG_SVC} + rollout = fakeRollout("stable-service", "canary-service", pp, "stable-ingress", 443) + + stableService, canaryService = GetStableAndCanaryServices(rollout, true) + assert.Equal(t, PONG_SVC, stableService) + assert.Equal(t, PING_SVC, canaryService) + + stableService, canaryService = GetStableAndCanaryServices(rollout, false) + assert.Equal(t, "stable-service", stableService) + assert.Equal(t, "canary-service", canaryService) + + // Rollout has pingPong, no stable/canary + rollout = fakeRollout("", "", pp, "stable-ingress", 443) + + stableService, canaryService = GetStableAndCanaryServices(rollout, true) + assert.Equal(t, PONG_SVC, stableService) + assert.Equal(t, PING_SVC, canaryService) + + stableService, canaryService = GetStableAndCanaryServices(rollout, false) + assert.Equal(t, PONG_SVC, stableService) + assert.Equal(t, PING_SVC, canaryService) +} diff --git a/test/e2e/aws_test.go b/test/e2e/aws_test.go index dab037e395..fcbb1a2ef5 100644 --- a/test/e2e/aws_test.go +++ b/test/e2e/aws_test.go @@ -94,6 +94,71 @@ func (s *AWSSuite) TestALBPingPongUpdate() { Assert(assertWeights(s, "ping-service", "pong-service", 100, 0)) } +// Rollout uses both alb and mesh for trafficRouting. +// also uses both pingpong service and stable/canary services +// Expecting: * alb is using pingpong +// - mesh is using stable/canary +func (s *AWSSuite) TestALBMesh_PingPong_StableCanary_Update() { + s.Given(). + RolloutObjects("@functional/albmesh-pingpong-stablecanary-rollout.yaml"). + When().ApplyManifests().WaitForRolloutStatus("Healthy"). + Then(). + Assert(assertWeights(s, "ping-service", "pong-service", 100, 0)). + Assert(func(t *fixtures.Then) { + vsvc := t.GetVirtualService() + assert.Equal(s.T(), int64(100), vsvc.Spec.HTTP[0].Route[0].Weight) + assert.Equal(s.T(), int64(0), vsvc.Spec.HTTP[0].Route[1].Weight) + assert.Equal(s.T(), "stable-service", vsvc.Spec.HTTP[0].Route[0].Destination.Host) + assert.Equal(s.T(), "canary-service", vsvc.Spec.HTTP[0].Route[1].Destination.Host) + }). + // Update 1. Test the weight switch from ping => pong + When().UpdateSpec(). + WaitForRolloutCanaryStepIndex(1).Sleep(1 * time.Second).Then(). + Assert(assertWeights(s, "ping-service", "pong-service", 75, 25)). + Assert(func(t *fixtures.Then) { + vsvc := t.GetVirtualService() + assert.Equal(s.T(), int64(75), vsvc.Spec.HTTP[0].Route[0].Weight) + assert.Equal(s.T(), int64(25), vsvc.Spec.HTTP[0].Route[1].Weight) + assert.Equal(s.T(), "stable-service", vsvc.Spec.HTTP[0].Route[0].Destination.Host) + assert.Equal(s.T(), "canary-service", vsvc.Spec.HTTP[0].Route[1].Destination.Host) + }). + When().PromoteRollout(). + WaitForRolloutStatus("Healthy"). + Sleep(1 * time.Second). + Then(). + Assert(assertWeights(s, "ping-service", "pong-service", 0, 100)). + Assert(func(t *fixtures.Then) { + vsvc := t.GetVirtualService() + assert.Equal(s.T(), int64(100), vsvc.Spec.HTTP[0].Route[0].Weight) + assert.Equal(s.T(), int64(0), vsvc.Spec.HTTP[0].Route[1].Weight) + assert.Equal(s.T(), "stable-service", vsvc.Spec.HTTP[0].Route[0].Destination.Host) + assert.Equal(s.T(), "canary-service", vsvc.Spec.HTTP[0].Route[1].Destination.Host) + }). + // Update 2. Test the weight switch from pong => ping + When().UpdateSpec(). + WaitForRolloutCanaryStepIndex(1).Sleep(1 * time.Second).Then(). + Assert(assertWeights(s, "ping-service", "pong-service", 25, 75)). + Assert(func(t *fixtures.Then) { + vsvc := t.GetVirtualService() + assert.Equal(s.T(), int64(75), vsvc.Spec.HTTP[0].Route[0].Weight) + assert.Equal(s.T(), int64(25), vsvc.Spec.HTTP[0].Route[1].Weight) + assert.Equal(s.T(), "stable-service", vsvc.Spec.HTTP[0].Route[0].Destination.Host) + assert.Equal(s.T(), "canary-service", vsvc.Spec.HTTP[0].Route[1].Destination.Host) + }). + When().PromoteRollout(). + WaitForRolloutStatus("Healthy"). + Sleep(1 * time.Second). + Then(). + Assert(assertWeights(s, "ping-service", "pong-service", 100, 0)). + Assert(func(t *fixtures.Then) { + vsvc := t.GetVirtualService() + assert.Equal(s.T(), int64(100), vsvc.Spec.HTTP[0].Route[0].Weight) + assert.Equal(s.T(), int64(0), vsvc.Spec.HTTP[0].Route[1].Weight) + assert.Equal(s.T(), "stable-service", vsvc.Spec.HTTP[0].Route[0].Destination.Host) + assert.Equal(s.T(), "canary-service", vsvc.Spec.HTTP[0].Route[1].Destination.Host) + }) +} + func (s *AWSSuite) TestALBPingPongUpdateMultiIngress() { s.Given(). RolloutObjects("@functional/alb-pingpong-multi-ingress-rollout.yaml"). diff --git a/test/e2e/functional/albmesh-pingpong-stablecanary-rollout.yaml b/test/e2e/functional/albmesh-pingpong-stablecanary-rollout.yaml new file mode 100644 index 0000000000..0476b1076e --- /dev/null +++ b/test/e2e/functional/albmesh-pingpong-stablecanary-rollout.yaml @@ -0,0 +1,139 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: ping-service +spec: + type: NodePort + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app: alb-canary +--- +apiVersion: v1 +kind: Service +metadata: + name: pong-service +spec: + type: NodePort + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app: alb-canary +--- +--- +apiVersion: v1 +kind: Service +metadata: + name: stable-service +spec: + type: NodePort + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app: alb-canary +--- +apiVersion: v1 +kind: Service +metadata: + name: canary-service +spec: + type: NodePort + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app: alb-canary +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: alb-canary-ingress + annotations: + kubernetes.io/ingress.class: alb +spec: + rules: + - http: + paths: + - path: /* + backend: + service: + name: alb-rollout-root + port: + name: use-annotation + pathType: ImplementationSpecific +--- +apiVersion: argoproj.io/v1alpha1 +kind: Rollout +metadata: + name: alb-canary +spec: + replicas: 2 + selector: + matchLabels: + app: alb-canary + template: + metadata: + labels: + app: alb-canary + spec: + containers: + - name: alb-canary + image: "argoproj/rollouts-demo:red" + ports: + - name: http + containerPort: 80 + protocol: TCP + resources: + requests: + memory: 16Mi + cpu: 5m + strategy: + canary: + scaleDownDelaySeconds: 2 + canaryService: canary-service + stableService: stable-service + pingPong: + pingService: ping-service + pongService: pong-service + trafficRouting: + alb: + ingress: alb-canary-ingress + rootService: alb-rollout-root + servicePort: 80 + istio: + virtualService: + name: istio-host-split-vsvc + routes: + - primary + steps: + - setWeight: 25 + - pause: {} +--- +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + name: istio-host-split-vsvc +spec: + hosts: + - istio-host-split + http: + - name: primary + route: + - destination: + host: stable-service + weight: 100 + - destination: + host: canary-service + weight: 0 From 1d5c9b46e623bd6d96e330485f15682c55e40b25 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 15:18:29 -0500 Subject: [PATCH 043/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.31.1 to 1.31.3 (#3620) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 Bumps [github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2](https://github.com/aws/aws-sdk-go-v2) from 1.31.1 to 1.31.3. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.31.1...service/s3/v1.31.3) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 222101a6b4..a6fadbc59d 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/aws/aws-sdk-go-v2 v1.27.2 github.com/aws/aws-sdk-go-v2/config v1.27.16 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 - github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.1 + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.2 github.com/blang/semver v3.5.1+incompatible github.com/bombsimon/logrusr/v4 v4.1.0 @@ -84,8 +84,8 @@ require ( github.com/aws/aws-sdk-go v1.44.116 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.16 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.3 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.7 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.7 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9 // indirect diff --git a/go.sum b/go.sum index 66d60533aa..5ec9e1f629 100644 --- a/go.sum +++ b/go.sum @@ -104,16 +104,16 @@ github.com/aws/aws-sdk-go-v2/credentials v1.17.16 h1:7d2QxY83uYl0l58ceyiSpxg9bSb github.com/aws/aws-sdk-go-v2/credentials v1.17.16/go.mod h1:Ae6li/6Yc6eMzysRL2BXlPYvnrLLBg3D11/AmOjw50k= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.3 h1:dQLK4TjtnlRGb0czOht2CevZ5l6RSyRWAnKeGd7VAFE= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.3/go.mod h1:TL79f2P6+8Q7dTsILpiVST+AL9lkF6PPGI167Ny0Cjw= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.7 h1:lf/8VTF2cM+N4SLzaYJERKEWAXq8MOMpZfU6wEPWsPk= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.7/go.mod h1:4SjkU7QiqK2M9oozyMzfZ/23LmUY+h3oFqhdeP5OMiI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.7 h1:4OYVp0705xu8yjdyoWix0r9wPIRXnIzzOoUpQVHIJ/g= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.7/go.mod h1:vd7ESTEvI76T2Na050gODNmNU7+OyKrIKroYTu4ABiI= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9 h1:cy8ahBJuhtM8GTTSyOkfy6WVPV1IE+SS5/wfXUYuulw= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9/go.mod h1:CZBXGLaJnEZI6EVNcPd7a6B5IC5cA/GkRWtu9fp3S6Y= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9 h1:A4SYk07ef04+vxZToz9LWvAXl9LW0NClpPpMsi31cz0= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9/go.mod h1:5jJcHuwDagxN+ErjQ3PU3ocf6Ylc/p9x+BLO/+X4iXw= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 h1:vAfGwYFCcPDS9Bg7ckfMBer6olJLOHsOAVoKWpPIirs= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0/go.mod h1:U12sr6Lt14X96f16t+rR52+2BdqtydwN7DjEEHRMjO0= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.1 h1:ZdIaRvkbFBS4mrH4slH8ypbW8XuFJOey3nhdYfPCsC8= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.1/go.mod h1:8OpnCueyLye/uyNWHz/AW+1uxcXoZ1U/ss4Ql3gogRM= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9 h1:Wx0rlZoEJR7JwlSZcHnEa7CNjrSIyVxMFWGAaXy4fJY= From f6567357657034325aac17afb3a57d436e981069 Mon Sep 17 00:00:00 2001 From: Joshua Mathew <59318184+umjoshua@users.noreply.github.com> Date: Thu, 13 Jun 2024 01:52:13 +0530 Subject: [PATCH 044/219] fix: protocol missing in ambassador canary mapping creation. Fixes #3593 (#3603) fix protocol missing in ambassador canary mapping creation Signed-off-by: Joshua Mathew --- .../trafficrouting/ambassador/ambassador.go | 22 +++++-------------- .../ambassador/ambassador_test.go | 12 +++++----- 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/rollout/trafficrouting/ambassador/ambassador.go b/rollout/trafficrouting/ambassador/ambassador.go index 5c50f38f26..ceb389c81a 100644 --- a/rollout/trafficrouting/ambassador/ambassador.go +++ b/rollout/trafficrouting/ambassador/ambassador.go @@ -4,7 +4,6 @@ import ( "context" "errors" "fmt" - "strconv" "strings" "sync" "time" @@ -218,7 +217,8 @@ func (r *Reconciler) createCanaryMapping(ctx context.Context, } canarySvc := r.Rollout.Spec.Strategy.Canary.CanaryService - canaryMapping := buildCanaryMapping(baseMapping, canarySvc, desiredWeight) + stableService := r.Rollout.Spec.Strategy.Canary.StableService + canaryMapping := buildCanaryMapping(baseMapping, canarySvc, stableService, desiredWeight) _, err = client.Create(ctx, canaryMapping, metav1.CreateOptions{}) if err != nil { msg := fmt.Sprintf("Error creating canary mapping: %s", err) @@ -227,9 +227,9 @@ func (r *Reconciler) createCanaryMapping(ctx context.Context, return err } -func buildCanaryMapping(baseMapping *unstructured.Unstructured, canarySvc string, desiredWeight int32) *unstructured.Unstructured { +func buildCanaryMapping(baseMapping *unstructured.Unstructured, canarySvc string, stableService string, desiredWeight int32) *unstructured.Unstructured { canaryMapping := baseMapping.DeepCopy() - svc := buildCanaryService(baseMapping, canarySvc) + svc := buildCanaryService(baseMapping, canarySvc, stableService) unstructured.RemoveNestedField(canaryMapping.Object, "metadata") cMappingName := buildCanaryMappingName(baseMapping.GetName()) canaryMapping.SetName(cMappingName) @@ -239,19 +239,9 @@ func buildCanaryMapping(baseMapping *unstructured.Unstructured, canarySvc string return canaryMapping } -func buildCanaryService(baseMapping *unstructured.Unstructured, canarySvc string) string { +func buildCanaryService(baseMapping *unstructured.Unstructured, canarySvc string, stableService string) string { curSvc := GetMappingService(baseMapping) - parts := strings.Split(curSvc, ":") - if len(parts) < 2 { - return canarySvc - } - // Check if the last part is a valid int that can be used as the port - port := parts[len(parts)-1] - if _, err := strconv.Atoi(port); err != nil { - return canarySvc - - } - return fmt.Sprintf("%s:%s", canarySvc, port) + return strings.Replace(curSvc, stableService, canarySvc, 1) } func (r *Reconciler) VerifyWeight(desiredWeight int32, additionalDestinations ...v1alpha1.WeightDestination) (*bool, error) { diff --git a/rollout/trafficrouting/ambassador/ambassador_test.go b/rollout/trafficrouting/ambassador/ambassador_test.go index 66d193b83a..ee1ac347e3 100644 --- a/rollout/trafficrouting/ambassador/ambassador_test.go +++ b/rollout/trafficrouting/ambassador/ambassador_test.go @@ -31,7 +31,7 @@ metadata: spec: prefix: /myapp/ rewrite: /myapp/ - service: myapp:8080` + service: main-service:8080` baseMappingNoPort = ` apiVersion: getambassador.io/v2 @@ -42,7 +42,7 @@ metadata: spec: prefix: /myapp/ rewrite: /myapp/ - service: myapp` + service: main-service` baseMappingWithWeight = ` apiVersion: getambassador.io/v2 @@ -53,7 +53,7 @@ metadata: spec: prefix: /myapp/ rewrite: /myapp/ - service: myapp:8080 + service: main-service:8080 weight: 20` baseV3Mapping = ` @@ -66,7 +66,7 @@ spec: hostname: 'example.com' prefix: /myapp/ rewrite: /myapp/ - service: myapp:8080` + service: main-service:8080` canaryMapping = ` apiVersion: getambassador.io/v2 @@ -77,7 +77,7 @@ metadata: spec: prefix: /myapp/ rewrite: /myapp/ - service: myapp:8080 + service: main-service:8080 weight: 20` canaryMappingWithZeroWeight = ` @@ -89,7 +89,7 @@ metadata: spec: prefix: /myapp/ rewrite: /myapp/ - service: myapp:8080 + service: main-service:8080 weight: 0` ) From 0d3ed790797c44001432b22cf4d1cfffb726da59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Jun 2024 14:28:36 -0500 Subject: [PATCH 045/219] chore(deps): bump golang.org/x/oauth2 from 0.20.0 to 0.21.0 (#3631) Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.20.0 to 0.21.0. - [Commits](https://github.com/golang/oauth2/compare/v0.20.0...v0.21.0) --- updated-dependencies: - dependency-name: golang.org/x/oauth2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a6fadbc59d..70e67e46b2 100644 --- a/go.mod +++ b/go.mod @@ -39,7 +39,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 - golang.org/x/oauth2 v0.20.0 + golang.org/x/oauth2 v0.21.0 google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 google.golang.org/grpc v1.64.0 google.golang.org/protobuf v1.34.1 diff --git a/go.sum b/go.sum index 5ec9e1f629..f6339dbf9f 100644 --- a/go.sum +++ b/go.sum @@ -878,8 +878,8 @@ golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= -golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From 8bf1b5e392ab09c4f00636dfffb2635a4b89e8ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Jun 2024 19:45:06 +0000 Subject: [PATCH 046/219] chore(deps): bump docker/build-push-action from 5.3.0 to 5.4.0 (#3624) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.3.0 to 5.4.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/2cdde995de11925a030ce8070c3d77a52ffcf1c0...ca052bb54ab0790a636c9b5f226502c73d547a25) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 2f43bc61f3..a44bc4b962 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 #v5.3.0 + uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 #v5.4.0 with: context: . platforms: ${{ inputs.platforms }} From a2c7dbd029f8f0d3e75e4964b3866b7e0701708c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 13 Jun 2024 21:12:30 +0000 Subject: [PATCH 047/219] docs: Update Changelog (#3632) * update changelog * Update CHANGELOG.md --------- Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com> Co-authored-by: Zach Aller --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 48a46a8bad..a87407e1ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ + +## [v1.7.0](https://github.com/argoproj/argo-rollouts/compare/v1.7.0-rc1...v1.7.0) (2024-06-12) + +### Fix + +* verify the weight of the alb at the end of the rollout ([#3627](https://github.com/argoproj/argo-rollouts/issues/3627)) +* when Rollout has pingpong and stable/canary service defined, only alb traffic management uses pingpong. ([#3628](https://github.com/argoproj/argo-rollouts/issues/3628)) +* protocol missing in ambassador canary mapping creation. Fixes [#3593](https://github.com/argoproj/argo-rollouts/issues/3593) ([#3603](https://github.com/argoproj/argo-rollouts/issues/3603)) +* rs conflict with fallback to patch ([#3559](https://github.com/argoproj/argo-rollouts/issues/3559)) +* **controller:** Corrects the logic of comparing sha256 has. Fixes [#3519](https://github.com/argoproj/argo-rollouts/issues/3519) ([#3520](https://github.com/argoproj/argo-rollouts/issues/3520)) + ## [v1.7.0-rc1](https://github.com/argoproj/argo-rollouts/compare/v1.6.6...v1.7.0-rc1) (2024-04-03) From 11089c91d371abfd5e2578b6c4c2d7cbe49af5dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Jun 2024 11:03:05 -0500 Subject: [PATCH 048/219] chore(deps): bump codecov/codecov-action from 4.4.1 to 4.5.0 (#3634) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.4.1 to 4.5.0. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.4.1...v4.5.0) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/go.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 45f161d0e2..731ff70223 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -90,7 +90,7 @@ jobs: path: coverage.out - name: Upload code coverage information to codecov.io - uses: codecov/codecov-action@v4.4.1 + uses: codecov/codecov-action@v4.5.0 with: file: coverage.out fail_ci_if_error: true From 8f32113be6dad9e7716e1b3b7d6eefb9d7d4e077 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Jun 2024 11:03:21 -0500 Subject: [PATCH 049/219] chore(deps): bump google.golang.org/protobuf from 1.34.1 to 1.34.2 (#3633) Bumps google.golang.org/protobuf from 1.34.1 to 1.34.2. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 70e67e46b2..a9f006a2d4 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( golang.org/x/oauth2 v0.21.0 google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 google.golang.org/grpc v1.64.0 - google.golang.org/protobuf v1.34.1 + google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.29.3 k8s.io/apiextensions-apiserver v0.29.3 diff --git a/go.sum b/go.sum index f6339dbf9f..c2f89ff46f 100644 --- a/go.sum +++ b/go.sum @@ -1145,8 +1145,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= From 84ef9f8cc190ebde764ccd76de6475ca7fe76c68 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Jun 2024 11:03:37 -0500 Subject: [PATCH 050/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.16 to 1.27.18 (#3625) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.16 to 1.27.18. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.16...config/v1.27.18) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 14 +++++++------- go.sum | 28 ++++++++++++++-------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index a9f006a2d4..2f9c6255fb 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.27.2 - github.com/aws/aws-sdk-go-v2/config v1.27.16 + github.com/aws/aws-sdk-go-v2/config v1.27.18 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.2 @@ -82,17 +82,17 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.16 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.3 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.18 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.11 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.20.9 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.3 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.28.10 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.20.11 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.28.12 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect diff --git a/go.sum b/go.sum index c2f89ff46f..fe1b650e39 100644 --- a/go.sum +++ b/go.sum @@ -98,12 +98,12 @@ github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WN github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v1.27.2 h1:pLsTXqX93rimAOZG2FIYraDQstZaaGVVN4tNw65v0h8= github.com/aws/aws-sdk-go-v2 v1.27.2/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= -github.com/aws/aws-sdk-go-v2/config v1.27.16 h1:knpCuH7laFVGYTNd99Ns5t+8PuRjDn4HnnZK48csipM= -github.com/aws/aws-sdk-go-v2/config v1.27.16/go.mod h1:vutqgRhDUktwSge3hrC3nkuirzkJ4E/mLj5GvI0BQas= -github.com/aws/aws-sdk-go-v2/credentials v1.17.16 h1:7d2QxY83uYl0l58ceyiSpxg9bSbStqBC6BeEeHEchwo= -github.com/aws/aws-sdk-go-v2/credentials v1.17.16/go.mod h1:Ae6li/6Yc6eMzysRL2BXlPYvnrLLBg3D11/AmOjw50k= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.3 h1:dQLK4TjtnlRGb0czOht2CevZ5l6RSyRWAnKeGd7VAFE= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.3/go.mod h1:TL79f2P6+8Q7dTsILpiVST+AL9lkF6PPGI167Ny0Cjw= +github.com/aws/aws-sdk-go-v2/config v1.27.18 h1:wFvAnwOKKe7QAyIxziwSKjmer9JBMH1vzIL6W+fYuKk= +github.com/aws/aws-sdk-go-v2/config v1.27.18/go.mod h1:0xz6cgdX55+kmppvPm2IaKzIXOheGJhAufacPJaXZ7c= +github.com/aws/aws-sdk-go-v2/credentials v1.17.18 h1:D/ALDWqK4JdY3OFgA2thcPO1c9aYTT5STS/CvnkqY1c= +github.com/aws/aws-sdk-go-v2/credentials v1.17.18/go.mod h1:JuitCWq+F5QGUrmMPsk945rop6bB57jdscu+Glozdnc= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5 h1:dDgptDO9dxeFkXy+tEgVkzSClHZje/6JkPW5aZyEvrQ= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5/go.mod h1:gjvE2KBUgUQhcv89jqxrIxH9GaKs1JbZzWejj/DaHGA= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9 h1:cy8ahBJuhtM8GTTSyOkfy6WVPV1IE+SS5/wfXUYuulw= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9/go.mod h1:CZBXGLaJnEZI6EVNcPd7a6B5IC5cA/GkRWtu9fp3S6Y= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9 h1:A4SYk07ef04+vxZToz9LWvAXl9LW0NClpPpMsi31cz0= @@ -116,16 +116,16 @@ github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sg github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9 h1:Wx0rlZoEJR7JwlSZcHnEa7CNjrSIyVxMFWGAaXy4fJY= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9/go.mod h1:aVMHdE0aHO3v+f/iw01fmXV/5DbfQ3Bi9nN7nd9bE9Y= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.11 h1:o4T+fKxA3gTMcluBNZZXE9DNaMkJuUL1O3mffCUjoJo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.11/go.mod h1:84oZdJ+VjuJKs9v1UTC9NaodRZRseOXCTgku+vQJWR8= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.20.9 h1:aD7AGQhvPuAxlSUfo0CWU7s6FpkbyykMhGYMvlqTjVs= -github.com/aws/aws-sdk-go-v2/service/sso v1.20.9/go.mod h1:c1qtZUWtygI6ZdvKppzCSXsDOq5I4luJPZ0Ud3juFCA= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.3 h1:Pav5q3cA260Zqez42T9UhIlsd9QeypszRPwC9LdSSsQ= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.3/go.mod h1:9lmoVDVLz/yUZwLaQ676TK02fhCu4+PgRSmMaKR1ozk= -github.com/aws/aws-sdk-go-v2/service/sts v1.28.10 h1:69tpbPED7jKPyzMcrwSvhWcJ9bPnZsZs18NT40JwM0g= -github.com/aws/aws-sdk-go-v2/service/sts v1.28.10/go.mod h1:0Aqn1MnEuitqfsCNyKsdKLhDUOr4txD/g19EfiUqgws= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.11 h1:gEYM2GSpr4YNWc6hCd5nod4+d4kd9vWIAWrmGuLdlMw= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.11/go.mod h1:gVvwPdPNYehHSP9Rs7q27U1EU+3Or2ZpXvzAYJNh63w= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.5 h1:iXjh3uaH3vsVcnyZX7MqCoCfcyxIrVE9iOQruRaWPrQ= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.5/go.mod h1:5ZXesEuy/QcO0WUnt+4sDkxhdXRHTu2yG0uCSH8B6os= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.12 h1:M/1u4HBpwLuMtjlxuI2y6HoVLzF5e2mfxHCg7ZVMYmk= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.12/go.mod h1:kcfd+eTdEi/40FIbLq4Hif3XMXnl5b/+t/KTfLt9xIk= github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= From 42cef175687d4fde00a59cdc8c0c746380d9fae8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Jun 2024 16:36:33 +0000 Subject: [PATCH 051/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.38.0 to 1.38.6 (#3619) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.38.0 to 1.38.6. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.38.0...service/kendra/v1.38.6) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2f9c6255fb..27d6e3ccac 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.27.2 github.com/aws/aws-sdk-go-v2/config v1.27.18 - github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.6 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.2 github.com/blang/semver v3.5.1+incompatible diff --git a/go.sum b/go.sum index fe1b650e39..93f01128c9 100644 --- a/go.sum +++ b/go.sum @@ -110,8 +110,8 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9 h1:A4SYk07ef04+vxZToz9 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9/go.mod h1:5jJcHuwDagxN+ErjQ3PU3ocf6Ylc/p9x+BLO/+X4iXw= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 h1:vAfGwYFCcPDS9Bg7ckfMBer6olJLOHsOAVoKWpPIirs= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0/go.mod h1:U12sr6Lt14X96f16t+rR52+2BdqtydwN7DjEEHRMjO0= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.6 h1:UVjxYe8VGpwXYcmBcciBHlQrNssdEvntXCPWmnRR15U= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.6/go.mod h1:4V6VDA0kZavRn71+sLpVna75oobnlG+gwtnNcBwZhu4= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= From 7188d999fbb0e081d7b815ee88e40ea2df20442b Mon Sep 17 00:00:00 2001 From: Tommy Chen Date: Mon, 17 Jun 2024 22:14:28 +0800 Subject: [PATCH 052/219] fix: Add volume for plugin and tmp folder (#3546) Signed-off-by: Tommy Chen --- manifests/base/argo-rollouts-deployment.yaml | 13 +++++++++++++ manifests/install.yaml | 13 +++++++++++++ manifests/namespace-install.yaml | 13 +++++++++++++ 3 files changed, 39 insertions(+) diff --git a/manifests/base/argo-rollouts-deployment.yaml b/manifests/base/argo-rollouts-deployment.yaml index 046a1a0bba..285617fde4 100644 --- a/manifests/base/argo-rollouts-deployment.yaml +++ b/manifests/base/argo-rollouts-deployment.yaml @@ -52,7 +52,20 @@ spec: readOnlyRootFilesystem: true seccompProfile: type: RuntimeDefault + resources: + limits: + ephemeral-storage: 1Gi + volumeMounts: + - name: plugin-bin + mountPath: /home/argo-rollouts/plugin-bin + - name: tmp + mountPath: /tmp securityContext: runAsNonRoot: true + volumes: + - name: plugin-bin + emptyDir: {} + - name: tmp + emptyDir: {} strategy: type: RollingUpdate diff --git a/manifests/install.yaml b/manifests/install.yaml index dfb8d18768..4421af7c17 100755 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -16757,6 +16757,9 @@ spec: periodSeconds: 5 successThreshold: 1 timeoutSeconds: 4 + resources: + limits: + ephemeral-storage: 1Gi securityContext: allowPrivilegeEscalation: false capabilities: @@ -16765,6 +16768,16 @@ spec: readOnlyRootFilesystem: true seccompProfile: type: RuntimeDefault + volumeMounts: + - mountPath: /home/argo-rollouts/plugin-bin + name: plugin-bin + - mountPath: /tmp + name: tmp securityContext: runAsNonRoot: true serviceAccountName: argo-rollouts + volumes: + - emptyDir: {} + name: plugin-bin + - emptyDir: {} + name: tmp diff --git a/manifests/namespace-install.yaml b/manifests/namespace-install.yaml index 0a7adf80ed..3f0dffa29b 100644 --- a/manifests/namespace-install.yaml +++ b/manifests/namespace-install.yaml @@ -413,6 +413,9 @@ spec: periodSeconds: 5 successThreshold: 1 timeoutSeconds: 4 + resources: + limits: + ephemeral-storage: 1Gi securityContext: allowPrivilegeEscalation: false capabilities: @@ -421,6 +424,16 @@ spec: readOnlyRootFilesystem: true seccompProfile: type: RuntimeDefault + volumeMounts: + - mountPath: /home/argo-rollouts/plugin-bin + name: plugin-bin + - mountPath: /tmp + name: tmp securityContext: runAsNonRoot: true serviceAccountName: argo-rollouts + volumes: + - emptyDir: {} + name: plugin-bin + - emptyDir: {} + name: tmp From 112dd4fad903c60e772b182b449f5ccd1c3bdd2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 09:23:27 -0500 Subject: [PATCH 053/219] chore(deps): bump github.com/spf13/cobra from 1.8.0 to 1.8.1 (#3640) Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.8.0 to 1.8.1. - [Release notes](https://github.com/spf13/cobra/releases) - [Commits](https://github.com/spf13/cobra/compare/v1.8.0...v1.8.1) --- updated-dependencies: - dependency-name: github.com/spf13/cobra dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 27d6e3ccac..7c7fedccf7 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/soheilhy/cmux v0.1.5 github.com/spaceapegames/go-wavefront v1.8.1 - github.com/spf13/cobra v1.8.0 + github.com/spf13/cobra v1.8.1 github.com/stretchr/testify v1.9.0 github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 diff --git a/go.sum b/go.sum index 93f01128c9..11ef39a3e2 100644 --- a/go.sum +++ b/go.sum @@ -175,7 +175,7 @@ github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03V github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= @@ -659,8 +659,8 @@ github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= From b83ef70ff401f167f60a79db5e756c8c010cf595 Mon Sep 17 00:00:00 2001 From: yyzxw <34639446+yyzxw@users.noreply.github.com> Date: Mon, 17 Jun 2024 22:25:37 +0800 Subject: [PATCH 054/219] chore: fix and add more cli usage case (#3592) Signed-off-by: xiaowu.zhu --- .../kubectl-argo-rollouts_dashboard.md | 10 ++++++++++ .../kubectl-argo-rollouts_get_rollout.md | 3 +++ .../kubectl-argo-rollouts_list_experiments.md | 2 +- .../kubectl-argo-rollouts_list_rollouts.md | 3 +++ .../kubectl-argo-rollouts_set_image.md | 4 ++-- .../kubectl-argo-rollouts_status.md | 3 +++ .../kubectl-argo-rollouts_terminate.md | 2 +- .../kubectl-argo-rollouts_terminate_analysisrun.md | 2 +- .../kubectl-argo-rollouts_undo.md | 2 +- .../cmd/dashboard/dashboard.go | 14 ++++++++++++-- pkg/kubectl-argo-rollouts/cmd/get/get_rollout.go | 5 ++++- pkg/kubectl-argo-rollouts/cmd/lint/lint.go | 7 +------ .../cmd/list/list_experiments.go | 2 +- .../cmd/list/list_rollouts.go | 3 +++ pkg/kubectl-argo-rollouts/cmd/set/set_image.go | 4 ++-- pkg/kubectl-argo-rollouts/cmd/status/status.go | 3 +++ .../cmd/terminate/terminate.go | 4 ++-- pkg/kubectl-argo-rollouts/cmd/undo/undo.go | 2 +- 18 files changed, 54 insertions(+), 21 deletions(-) diff --git a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_dashboard.md b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_dashboard.md index eb6ee9e6fc..ad99bfb5ca 100644 --- a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_dashboard.md +++ b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_dashboard.md @@ -10,6 +10,16 @@ Start UI dashboard kubectl argo rollouts dashboard [flags] ``` +## Examples + +```shell +# Start UI dashboard +kubectl argo rollouts dashboard + +# Start UI dashboard on a specific port +kubectl argo rollouts dashboard --port 8080 +``` + ## Options ``` diff --git a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_get_rollout.md b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_get_rollout.md index 77b04d2217..4654f2f9c5 100644 --- a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_get_rollout.md +++ b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_get_rollout.md @@ -30,6 +30,9 @@ kubectl argo rollouts get rollout guestbook # Watch progress of a rollout kubectl argo rollouts get rollout guestbook -w + +# Watch the rollout, fail if it takes more than 60 seconds +kubectl argo rollouts get rollout guestbook -w --timeout-seconds 60 ``` ## Options diff --git a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_list_experiments.md b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_list_experiments.md index 4add56c247..39d9f902bb 100644 --- a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_list_experiments.md +++ b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_list_experiments.md @@ -26,7 +26,7 @@ kubectl argo rollouts list experiments --watch ## Options ``` - --all-namespaces Include all namespaces + -A, --all-namespaces Include all namespaces -h, --help help for experiments ``` diff --git a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_list_rollouts.md b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_list_rollouts.md index e861ca20c8..7382d88185 100644 --- a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_list_rollouts.md +++ b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_list_rollouts.md @@ -16,6 +16,9 @@ kubectl argo rollouts list rollouts [flags] # List rollouts kubectl argo rollouts list rollouts +# List rollouts with a specific name +kubectl argo rollouts list rollouts --name my-rollout + # List rollouts from all namespaces kubectl argo rollouts list rollouts --all-namespaces diff --git a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_set_image.md b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_set_image.md index 5f89a6a506..1ad60ac547 100644 --- a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_set_image.md +++ b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_set_image.md @@ -13,8 +13,8 @@ kubectl argo rollouts set image ROLLOUT_NAME CONTAINER=IMAGE [flags] ## Examples ```shell -# Set rollout image -kubectl argo rollouts set image my-rollout www=image:v2 +# Set rollout image (containers contains 'initContainer', 'container', 'ephemeralContainer') +kubectl argo rollouts set image my-rollout containerName=imageName ``` ## Options diff --git a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_status.md b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_status.md index e1221d4056..4bfff8b586 100644 --- a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_status.md +++ b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_status.md @@ -17,6 +17,9 @@ kubectl argo rollouts status ROLLOUT_NAME [flags] # Watch the rollout until it succeeds kubectl argo rollouts status guestbook +# Show the rollout status +kubectl argo rollouts status guestbook --watch false + # Watch the rollout until it succeeds, fail if it takes more than 60 seconds kubectl argo rollouts status --timeout 60s guestbook diff --git a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_terminate.md b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_terminate.md index 4491cca5fe..21881976dc 100644 --- a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_terminate.md +++ b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_terminate.md @@ -13,7 +13,7 @@ kubectl argo rollouts terminate RESOURCE_NAME [flags] ## Examples ```shell -# Terminate an analysisRun +# Terminate an AnalysisRun kubectl argo rollouts terminate analysisrun guestbook-877894d5b-4-success-rate.1 # Terminate a failed experiment diff --git a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_terminate_analysisrun.md b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_terminate_analysisrun.md index 268b7a0150..3ff552e97a 100644 --- a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_terminate_analysisrun.md +++ b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_terminate_analysisrun.md @@ -14,7 +14,7 @@ kubectl argo rollouts terminate analysisrun ANALYSISRUN_NAME [flags] ```shell # Terminate an AnalysisRun -kubectl argo rollouts terminate analysis guestbook-877894d5b-4-success-rate.1 +kubectl argo rollouts terminate analysisrun guestbook-877894d5b-4-success-rate.1 ``` ## Options diff --git a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_undo.md b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_undo.md index 0ddf539dc9..e6d95a203b 100644 --- a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_undo.md +++ b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_undo.md @@ -16,7 +16,7 @@ kubectl argo rollouts undo ROLLOUT_NAME [flags] # Undo a rollout kubectl argo rollouts undo guestbook -# Undo a rollout revision 3 +# Undo a rollout to revision 3 kubectl argo rollouts undo guestbook --to-revision=3 ``` diff --git a/pkg/kubectl-argo-rollouts/cmd/dashboard/dashboard.go b/pkg/kubectl-argo-rollouts/cmd/dashboard/dashboard.go index f0c720df72..468d0437c6 100644 --- a/pkg/kubectl-argo-rollouts/cmd/dashboard/dashboard.go +++ b/pkg/kubectl-argo-rollouts/cmd/dashboard/dashboard.go @@ -8,12 +8,22 @@ import ( "github.com/spf13/cobra" ) +var ( + dashBoardExample = ` + # Start UI dashboard + %[1]s dashboard + + # Start UI dashboard on a specific port + %[1]s dashboard --port 8080` +) + func NewCmdDashboard(o *options.ArgoRolloutsOptions) *cobra.Command { var rootPath string var port int var cmd = &cobra.Command{ - Use: "dashboard", - Short: "Start UI dashboard", + Use: "dashboard", + Short: "Start UI dashboard", + Example: o.Example(dashBoardExample), RunE: func(c *cobra.Command, args []string) error { namespace := o.Namespace() kubeclientset := o.KubeClientset() diff --git a/pkg/kubectl-argo-rollouts/cmd/get/get_rollout.go b/pkg/kubectl-argo-rollouts/cmd/get/get_rollout.go index f5b0719509..dd56693a45 100644 --- a/pkg/kubectl-argo-rollouts/cmd/get/get_rollout.go +++ b/pkg/kubectl-argo-rollouts/cmd/get/get_rollout.go @@ -25,7 +25,10 @@ const ( %[1]s get rollout guestbook # Watch progress of a rollout - %[1]s get rollout guestbook -w` + %[1]s get rollout guestbook -w + + # Watch the rollout, fail if it takes more than 60 seconds + %[1]s get rollout guestbook -w --timeout-seconds 60` ) // NewCmdGetRollout returns a new instance of an `rollouts get rollout` command diff --git a/pkg/kubectl-argo-rollouts/cmd/lint/lint.go b/pkg/kubectl-argo-rollouts/cmd/lint/lint.go index 810abf2c8e..4d8a268994 100644 --- a/pkg/kubectl-argo-rollouts/cmd/lint/lint.go +++ b/pkg/kubectl-argo-rollouts/cmd/lint/lint.go @@ -53,12 +53,7 @@ func NewCmdLint(o *options.ArgoRolloutsOptions) *cobra.Command { return o.UsageErr(c) } - err := lintOptions.lintResource(lintOptions.File) - if err != nil { - return err - } - - return nil + return lintOptions.lintResource(lintOptions.File) }, } cmd.Flags().StringVarP(&lintOptions.File, "filename", "f", "", "File to lint") diff --git a/pkg/kubectl-argo-rollouts/cmd/list/list_experiments.go b/pkg/kubectl-argo-rollouts/cmd/list/list_experiments.go index cb83a157fa..962b4d6ce4 100644 --- a/pkg/kubectl-argo-rollouts/cmd/list/list_experiments.go +++ b/pkg/kubectl-argo-rollouts/cmd/list/list_experiments.go @@ -62,7 +62,7 @@ func NewCmdListExperiments(o *options.ArgoRolloutsOptions) *cobra.Command { return nil }, } - cmd.Flags().BoolVar(&listOptions.allNamespaces, "all-namespaces", false, "Include all namespaces") + cmd.Flags().BoolVarP(&listOptions.allNamespaces, "all-namespaces", "A", false, "Include all namespaces") return cmd } diff --git a/pkg/kubectl-argo-rollouts/cmd/list/list_rollouts.go b/pkg/kubectl-argo-rollouts/cmd/list/list_rollouts.go index 6746876767..c233776c6d 100644 --- a/pkg/kubectl-argo-rollouts/cmd/list/list_rollouts.go +++ b/pkg/kubectl-argo-rollouts/cmd/list/list_rollouts.go @@ -18,6 +18,9 @@ const ( listRolloutsExample = ` # List rollouts %[1]s list rollouts + + # List rollouts with a specific name + %[1]s list rollouts --name my-rollout # List rollouts from all namespaces %[1]s list rollouts --all-namespaces diff --git a/pkg/kubectl-argo-rollouts/cmd/set/set_image.go b/pkg/kubectl-argo-rollouts/cmd/set/set_image.go index 1a5b5dce24..d2f199a4a4 100644 --- a/pkg/kubectl-argo-rollouts/cmd/set/set_image.go +++ b/pkg/kubectl-argo-rollouts/cmd/set/set_image.go @@ -19,8 +19,8 @@ import ( const ( setImageExample = ` - # Set rollout image - %[1]s set image my-rollout www=image:v2` + # Set rollout image (containers contains 'initContainer', 'container', 'ephemeralContainer') + %[1]s set image my-rollout containerName=imageName` ) const ( diff --git a/pkg/kubectl-argo-rollouts/cmd/status/status.go b/pkg/kubectl-argo-rollouts/cmd/status/status.go index 79d7272d88..33d6652900 100644 --- a/pkg/kubectl-argo-rollouts/cmd/status/status.go +++ b/pkg/kubectl-argo-rollouts/cmd/status/status.go @@ -20,6 +20,9 @@ the rollout is healthy upon completion and an error otherwise.` # Watch the rollout until it succeeds %[1]s status guestbook + # Show the rollout status + %[1]s status guestbook --watch false + # Watch the rollout until it succeeds, fail if it takes more than 60 seconds %[1]s status --timeout 60s guestbook ` diff --git a/pkg/kubectl-argo-rollouts/cmd/terminate/terminate.go b/pkg/kubectl-argo-rollouts/cmd/terminate/terminate.go index f0dd7e91b1..c4123f0e78 100644 --- a/pkg/kubectl-argo-rollouts/cmd/terminate/terminate.go +++ b/pkg/kubectl-argo-rollouts/cmd/terminate/terminate.go @@ -18,7 +18,7 @@ const ( const ( terminateExample = ` - # Terminate an analysisRun + # Terminate an AnalysisRun %[1]s terminate analysisrun guestbook-877894d5b-4-success-rate.1 # Terminate a failed experiment @@ -26,7 +26,7 @@ const ( terminateAnalysisRunExample = ` # Terminate an AnalysisRun - %[1]s terminate analysis guestbook-877894d5b-4-success-rate.1` + %[1]s terminate analysisrun guestbook-877894d5b-4-success-rate.1` terminateExperimentExample = ` # Terminate an experiment diff --git a/pkg/kubectl-argo-rollouts/cmd/undo/undo.go b/pkg/kubectl-argo-rollouts/cmd/undo/undo.go index d3a78d15f2..be9d0289d7 100644 --- a/pkg/kubectl-argo-rollouts/cmd/undo/undo.go +++ b/pkg/kubectl-argo-rollouts/cmd/undo/undo.go @@ -32,7 +32,7 @@ const ( # Undo a rollout %[1]s undo guestbook - # Undo a rollout revision 3 + # Undo a rollout to revision 3 %[1]s undo guestbook --to-revision=3` ) From d1ebbe958c15e6f0c6fc6acd2b722bc902c76aa7 Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Mon, 17 Jun 2024 11:09:11 -0500 Subject: [PATCH 055/219] fix: don't default datadog aggregator (#3643) * fix: don't default datadog aggregator Signed-off-by: Zach Aller * codegen Signed-off-by: Zach Aller * fix: don't default datadog aggregator Signed-off-by: Zach Aller --------- Signed-off-by: Zach Aller --- docs/features/kustomize/rollout_cr_schema.json | 3 --- manifests/crds/analysis-run-crd.yaml | 1 - manifests/crds/analysis-template-crd.yaml | 1 - manifests/crds/cluster-analysis-template-crd.yaml | 1 - manifests/install.yaml | 3 --- metricproviders/datadog/datadog_test.go | 6 ------ pkg/apiclient/rollout/rollout.swagger.json | 2 +- pkg/apis/rollouts/v1alpha1/analysis_types.go | 3 +-- pkg/apis/rollouts/v1alpha1/generated.proto | 3 +-- pkg/apis/rollouts/v1alpha1/openapi_generated.go | 2 +- 10 files changed, 4 insertions(+), 21 deletions(-) diff --git a/docs/features/kustomize/rollout_cr_schema.json b/docs/features/kustomize/rollout_cr_schema.json index 038ebebf89..b7ca35204f 100644 --- a/docs/features/kustomize/rollout_cr_schema.json +++ b/docs/features/kustomize/rollout_cr_schema.json @@ -244,7 +244,6 @@ "datadog": { "properties": { "aggregator": { - "default": "last", "enum": [ "avg", "min", @@ -5082,7 +5081,6 @@ "datadog": { "properties": { "aggregator": { - "default": "last", "enum": [ "avg", "min", @@ -9933,7 +9931,6 @@ "datadog": { "properties": { "aggregator": { - "default": "last", "enum": [ "avg", "min", diff --git a/manifests/crds/analysis-run-crd.yaml b/manifests/crds/analysis-run-crd.yaml index c8088911b6..816702aa04 100644 --- a/manifests/crds/analysis-run-crd.yaml +++ b/manifests/crds/analysis-run-crd.yaml @@ -179,7 +179,6 @@ spec: datadog: properties: aggregator: - default: last enum: - avg - min diff --git a/manifests/crds/analysis-template-crd.yaml b/manifests/crds/analysis-template-crd.yaml index 3cd6ec81a4..3bcf3855ad 100644 --- a/manifests/crds/analysis-template-crd.yaml +++ b/manifests/crds/analysis-template-crd.yaml @@ -175,7 +175,6 @@ spec: datadog: properties: aggregator: - default: last enum: - avg - min diff --git a/manifests/crds/cluster-analysis-template-crd.yaml b/manifests/crds/cluster-analysis-template-crd.yaml index ab4d887d23..1f97c14bd8 100644 --- a/manifests/crds/cluster-analysis-template-crd.yaml +++ b/manifests/crds/cluster-analysis-template-crd.yaml @@ -175,7 +175,6 @@ spec: datadog: properties: aggregator: - default: last enum: - avg - min diff --git a/manifests/install.yaml b/manifests/install.yaml index 4421af7c17..3dff99191a 100755 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -180,7 +180,6 @@ spec: datadog: properties: aggregator: - default: last enum: - avg - min @@ -3470,7 +3469,6 @@ spec: datadog: properties: aggregator: - default: last enum: - avg - min @@ -6638,7 +6636,6 @@ spec: datadog: properties: aggregator: - default: last enum: - avg - min diff --git a/metricproviders/datadog/datadog_test.go b/metricproviders/datadog/datadog_test.go index fe817f385e..ed81977296 100644 --- a/metricproviders/datadog/datadog_test.go +++ b/metricproviders/datadog/datadog_test.go @@ -66,12 +66,6 @@ func TestDatadogSpecDefaults(t *testing.T) { assert.Equal(t, "\"l2norm\"", string(aggregatorEnums[7].Raw), "\"l2norm\" expected, got %s", string(aggregatorEnums[7].Raw)) assert.Equal(t, "\"area\"", string(aggregatorEnums[8].Raw), "\"area\" expected, got %s", string(aggregatorEnums[8].Raw)) }) - - t.Run("aggregator: Validate default is last", func(t *testing.T) { - defaultAggregator := string(ddSpec.Properties["aggregator"].Default.Raw) - assert.Equal(t, "\"last\"", defaultAggregator, "Default aggregator should be \"last\" ") - }) - } func TestValidateIncomingProps(t *testing.T) { diff --git a/pkg/apiclient/rollout/rollout.swagger.json b/pkg/apiclient/rollout/rollout.swagger.json index b3c10e03f8..3a74f48a24 100755 --- a/pkg/apiclient/rollout/rollout.swagger.json +++ b/pkg/apiclient/rollout/rollout.swagger.json @@ -1205,7 +1205,7 @@ }, "aggregator": { "type": "string", - "title": "+kubebuilder:default=\"last\"\n+kubebuilder:validation:Enum=avg;min;max;sum;last;percentile;mean;l2norm;area\nAggregator is a type of aggregator to use for metrics-based queries (default: last). Used for v2" + "title": "+kubebuilder:validation:Enum=avg;min;max;sum;last;percentile;mean;l2norm;area\nAggregator is a type of aggregator to use for metrics-based queries (default: \"\"). Used for v2" } } }, diff --git a/pkg/apis/rollouts/v1alpha1/analysis_types.go b/pkg/apis/rollouts/v1alpha1/analysis_types.go index 08ef18071f..3a287ec856 100644 --- a/pkg/apis/rollouts/v1alpha1/analysis_types.go +++ b/pkg/apis/rollouts/v1alpha1/analysis_types.go @@ -601,8 +601,7 @@ type DatadogMetric struct { // +kubebuilder:validation:Enum=v1;v2 // +kubebuilder:default=v1 ApiVersion string `json:"apiVersion,omitempty" protobuf:"bytes,5,opt,name=apiVersion"` - // +kubebuilder:default="last" // +kubebuilder:validation:Enum=avg;min;max;sum;last;percentile;mean;l2norm;area - // Aggregator is a type of aggregator to use for metrics-based queries (default: last). Used for v2 + // Aggregator is a type of aggregator to use for metrics-based queries (default: ""). Used for v2 Aggregator string `json:"aggregator,omitempty" protobuf:"bytes,6,opt,name=aggregator"` } diff --git a/pkg/apis/rollouts/v1alpha1/generated.proto b/pkg/apis/rollouts/v1alpha1/generated.proto index 0ea0a7bc2c..eebb4453cc 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.proto +++ b/pkg/apis/rollouts/v1alpha1/generated.proto @@ -655,9 +655,8 @@ message DatadogMetric { // +kubebuilder:default=v1 optional string apiVersion = 5; - // +kubebuilder:default="last" // +kubebuilder:validation:Enum=avg;min;max;sum;last;percentile;mean;l2norm;area - // Aggregator is a type of aggregator to use for metrics-based queries (default: last). Used for v2 + // Aggregator is a type of aggregator to use for metrics-based queries (default: ""). Used for v2 optional string aggregator = 6; } diff --git a/pkg/apis/rollouts/v1alpha1/openapi_generated.go b/pkg/apis/rollouts/v1alpha1/openapi_generated.go index 2d4d68ff1e..6c18e64a2b 100644 --- a/pkg/apis/rollouts/v1alpha1/openapi_generated.go +++ b/pkg/apis/rollouts/v1alpha1/openapi_generated.go @@ -1935,7 +1935,7 @@ func schema_pkg_apis_rollouts_v1alpha1_DatadogMetric(ref common.ReferenceCallbac }, "aggregator": { SchemaProps: spec.SchemaProps{ - Description: "Aggregator is a type of aggregator to use for metrics-based queries (default: last). Used for v2", + Description: "Aggregator is a type of aggregator to use for metrics-based queries (default: \"\"). Used for v2", Type: []string{"string"}, Format: "", }, From 5a6ca83afc141adb04b86d0472721ddc21c6fed6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 09:06:21 -0500 Subject: [PATCH 056/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.38.6 to 1.38.7 (#3647) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.38.6 to 1.38.7. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/kendra/v1.38.6...service/kendra/v1.38.7) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 7c7fedccf7..b75f0d1969 100644 --- a/go.mod +++ b/go.mod @@ -8,9 +8,9 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.27.2 + github.com/aws/aws-sdk-go-v2 v1.28.0 github.com/aws/aws-sdk-go-v2/config v1.27.18 - github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.6 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.7 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.2 github.com/blang/semver v3.5.1+incompatible @@ -84,8 +84,8 @@ require ( github.com/aws/aws-sdk-go v1.44.116 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.18 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.10 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.10 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.11 // indirect diff --git a/go.sum b/go.sum index 11ef39a3e2..bd6d77e25e 100644 --- a/go.sum +++ b/go.sum @@ -96,22 +96,22 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.27.2 h1:pLsTXqX93rimAOZG2FIYraDQstZaaGVVN4tNw65v0h8= -github.com/aws/aws-sdk-go-v2 v1.27.2/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= +github.com/aws/aws-sdk-go-v2 v1.28.0 h1:ne6ftNhY0lUvlazMUQF15FF6NH80wKmPRFG7g2q6TCw= +github.com/aws/aws-sdk-go-v2 v1.28.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= github.com/aws/aws-sdk-go-v2/config v1.27.18 h1:wFvAnwOKKe7QAyIxziwSKjmer9JBMH1vzIL6W+fYuKk= github.com/aws/aws-sdk-go-v2/config v1.27.18/go.mod h1:0xz6cgdX55+kmppvPm2IaKzIXOheGJhAufacPJaXZ7c= github.com/aws/aws-sdk-go-v2/credentials v1.17.18 h1:D/ALDWqK4JdY3OFgA2thcPO1c9aYTT5STS/CvnkqY1c= github.com/aws/aws-sdk-go-v2/credentials v1.17.18/go.mod h1:JuitCWq+F5QGUrmMPsk945rop6bB57jdscu+Glozdnc= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5 h1:dDgptDO9dxeFkXy+tEgVkzSClHZje/6JkPW5aZyEvrQ= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5/go.mod h1:gjvE2KBUgUQhcv89jqxrIxH9GaKs1JbZzWejj/DaHGA= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9 h1:cy8ahBJuhtM8GTTSyOkfy6WVPV1IE+SS5/wfXUYuulw= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9/go.mod h1:CZBXGLaJnEZI6EVNcPd7a6B5IC5cA/GkRWtu9fp3S6Y= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9 h1:A4SYk07ef04+vxZToz9LWvAXl9LW0NClpPpMsi31cz0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9/go.mod h1:5jJcHuwDagxN+ErjQ3PU3ocf6Ylc/p9x+BLO/+X4iXw= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.10 h1:LZIUb8sQG2cb89QaVFtMSnER10gyKkqU1k3hP3g9das= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.10/go.mod h1:BRIqay//vnIOCZjoXWSLffL2uzbtxEmnSlfbvVh7Z/4= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.10 h1:HY7CXLA0GiQUo3WYxOP7WYkLcwvRX4cLPf5joUcrQGk= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.10/go.mod h1:kfRBSxRa+I+VyON7el3wLZdrO91oxUxEwdAaWgFqN90= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.6 h1:UVjxYe8VGpwXYcmBcciBHlQrNssdEvntXCPWmnRR15U= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.6/go.mod h1:4V6VDA0kZavRn71+sLpVna75oobnlG+gwtnNcBwZhu4= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.7 h1:Tt1CrlmtcPROwUI1HNDDq0rklVWgD4tmtzLqZQjkwuQ= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.7/go.mod h1:8dUb61YstV6fBlMTDZmPOLlPhNsOAX2yAIjpEl3dk2g= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= From 50baf74dad5fa8a356b6dea9d845046d63dd9366 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 09:07:13 -0500 Subject: [PATCH 057/219] chore(deps): bump docker/build-push-action from 5.4.0 to 6.0.0 (#3644) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.4.0 to 6.0.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/ca052bb54ab0790a636c9b5f226502c73d547a25...c382f710d39a5bb4e430307530a720f50c2d3318) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index a44bc4b962..0245d3c516 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 #v5.4.0 + uses: docker/build-push-action@c382f710d39a5bb4e430307530a720f50c2d3318 #v6.0.0 with: context: . platforms: ${{ inputs.platforms }} From 4f1edbe9332b93d8aaf1d8f34239da6f952b8a93 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 14:40:11 +0000 Subject: [PATCH 058/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.18 to 1.27.19 (#3646) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.18 to 1.27.19. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.18...config/v1.27.19) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 14 +++++++------- go.sum | 28 ++++++++++++++-------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index b75f0d1969..a34ec47a29 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.28.0 - github.com/aws/aws-sdk-go-v2/config v1.27.18 + github.com/aws/aws-sdk-go-v2/config v1.27.19 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.7 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.2 @@ -82,17 +82,17 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.18 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.19 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.6 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.10 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.10 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.11 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.12 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.20.11 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.5 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.28.12 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.20.12 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.6 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.28.13 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect diff --git a/go.sum b/go.sum index bd6d77e25e..d6b0dad63d 100644 --- a/go.sum +++ b/go.sum @@ -98,12 +98,12 @@ github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WN github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v1.28.0 h1:ne6ftNhY0lUvlazMUQF15FF6NH80wKmPRFG7g2q6TCw= github.com/aws/aws-sdk-go-v2 v1.28.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= -github.com/aws/aws-sdk-go-v2/config v1.27.18 h1:wFvAnwOKKe7QAyIxziwSKjmer9JBMH1vzIL6W+fYuKk= -github.com/aws/aws-sdk-go-v2/config v1.27.18/go.mod h1:0xz6cgdX55+kmppvPm2IaKzIXOheGJhAufacPJaXZ7c= -github.com/aws/aws-sdk-go-v2/credentials v1.17.18 h1:D/ALDWqK4JdY3OFgA2thcPO1c9aYTT5STS/CvnkqY1c= -github.com/aws/aws-sdk-go-v2/credentials v1.17.18/go.mod h1:JuitCWq+F5QGUrmMPsk945rop6bB57jdscu+Glozdnc= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5 h1:dDgptDO9dxeFkXy+tEgVkzSClHZje/6JkPW5aZyEvrQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5/go.mod h1:gjvE2KBUgUQhcv89jqxrIxH9GaKs1JbZzWejj/DaHGA= +github.com/aws/aws-sdk-go-v2/config v1.27.19 h1:+DBS8gJP6VsxYkZ6UEV0/VsRM2rYpbQCYsosW9RRmeQ= +github.com/aws/aws-sdk-go-v2/config v1.27.19/go.mod h1:KzZcioJWzy9oV+oS5CobYXlDtU9+eW7bPG1g7gizTW4= +github.com/aws/aws-sdk-go-v2/credentials v1.17.19 h1:R18G7nBBGLby51CFEqUBFF2IVl7LUdCtYj6iosUwh/0= +github.com/aws/aws-sdk-go-v2/credentials v1.17.19/go.mod h1:xr9kUMnaLTB866HItT6pg58JgiBP77fSQLBwIa//zk8= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.6 h1:vVOuhRyslJ6T/HteG71ZWCTas1q2w6f0NKsNbkXHs/A= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.6/go.mod h1:jimWaqLiT0sJGLh51dKCLLtExRYPtMU7MpxuCgtbkxg= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.10 h1:LZIUb8sQG2cb89QaVFtMSnER10gyKkqU1k3hP3g9das= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.10/go.mod h1:BRIqay//vnIOCZjoXWSLffL2uzbtxEmnSlfbvVh7Z/4= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.10 h1:HY7CXLA0GiQUo3WYxOP7WYkLcwvRX4cLPf5joUcrQGk= @@ -116,16 +116,16 @@ github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sg github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.11 h1:o4T+fKxA3gTMcluBNZZXE9DNaMkJuUL1O3mffCUjoJo= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.11/go.mod h1:84oZdJ+VjuJKs9v1UTC9NaodRZRseOXCTgku+vQJWR8= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.12 h1:kO2J7WMroF/OTHN9WTcUtMjPhJ7ZoNxx0dwv6UCXQgY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.12/go.mod h1:mrNxrjYvXaSjZe5fkKaWgDnOQ6BExLn/7Ru9OpRsMPY= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.20.11 h1:gEYM2GSpr4YNWc6hCd5nod4+d4kd9vWIAWrmGuLdlMw= -github.com/aws/aws-sdk-go-v2/service/sso v1.20.11/go.mod h1:gVvwPdPNYehHSP9Rs7q27U1EU+3Or2ZpXvzAYJNh63w= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.5 h1:iXjh3uaH3vsVcnyZX7MqCoCfcyxIrVE9iOQruRaWPrQ= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.5/go.mod h1:5ZXesEuy/QcO0WUnt+4sDkxhdXRHTu2yG0uCSH8B6os= -github.com/aws/aws-sdk-go-v2/service/sts v1.28.12 h1:M/1u4HBpwLuMtjlxuI2y6HoVLzF5e2mfxHCg7ZVMYmk= -github.com/aws/aws-sdk-go-v2/service/sts v1.28.12/go.mod h1:kcfd+eTdEi/40FIbLq4Hif3XMXnl5b/+t/KTfLt9xIk= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.12 h1:FsYii6U+2k8ynYBo+pywlCBY9HNAFRh+iICRHbn+Qyw= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.12/go.mod h1:j9Rps+Lcs2A0tYypWsNBeJOjgsIYUf1Styppo9Es0Wo= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.6 h1:lEE+xEcq3lh9bk362tgErP1+n689q5ERdmTwmF1XT3M= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.6/go.mod h1:2tR0x1DCL5IgnVZ1NQNFDNg5/XL/kiQgWI5l7I/N5Js= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.13 h1:TSzmuUeruVJ4XWYp3bYzKCXue70ECpJWmbP3UfEvhYY= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.13/go.mod h1:FppRtFjBA9mSWTj2cIAWCP66+bbBPMuPpBfWRXC5Yi0= github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= From f2b155d0850464e680003fa89e63097eab3b8d4d Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Fri, 21 Jun 2024 10:44:18 -0500 Subject: [PATCH 059/219] chore: don't fail code-cov on failure (#3661) don't fail on failure Signed-off-by: Zach Aller --- .github/workflows/go.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 731ff70223..4e89aadfdf 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -93,7 +93,7 @@ jobs: uses: codecov/codecov-action@v4.5.0 with: file: coverage.out - fail_ci_if_error: true + fail_ci_if_error: false env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} From 72f3dabb0116e9878f9cec598c7e2202619ce604 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Jun 2024 10:50:13 -0500 Subject: [PATCH 060/219] chore(deps): bump docker/build-push-action from 6.0.0 to 6.0.2 (#3659) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.0.0 to 6.0.2. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/c382f710d39a5bb4e430307530a720f50c2d3318...f6010ea70151369b06f0194be1051fbbdff851b2) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 0245d3c516..0ec37e2bcf 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@c382f710d39a5bb4e430307530a720f50c2d3318 #v6.0.0 + uses: docker/build-push-action@f6010ea70151369b06f0194be1051fbbdff851b2 #v6.0.2 with: context: . platforms: ${{ inputs.platforms }} From c43f4fb340cd85d4d35bfddd1fc620eca4109c34 Mon Sep 17 00:00:00 2001 From: yyzxw <34639446+yyzxw@users.noreply.github.com> Date: Sat, 22 Jun 2024 01:30:01 +0800 Subject: [PATCH 061/219] fix: docs site version selector broken (#3590) Signed-off-by: xiaowu.zhu Signed-off-by: root --- docs/assets/versions.js | 76 ++++++++++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 13 deletions(-) diff --git a/docs/assets/versions.js b/docs/assets/versions.js index 1336443d1a..fe0aeb1d3c 100644 --- a/docs/assets/versions.js +++ b/docs/assets/versions.js @@ -1,15 +1,40 @@ -setTimeout(function() { - const callbackName = 'callback_' + new Date().getTime(); - window[callbackName] = function (response) { - const div = document.createElement('div'); - div.innerHTML = response.html; - document.querySelector(".md-header__inner > .md-header__title").appendChild(div); - const container = div.querySelector('.rst-versions'); - var caret = document.createElement('div'); - caret.innerHTML = "" - caret.classList.add('dropdown-caret') - div.querySelector('.rst-current-version').appendChild(caret); +const targetNode = document.querySelector('.md-header__inner'); +const observerOptions = { + childList: true, + subtree: true +}; + +const observerCallback = function(mutationsList, observer) { + for (let mutation of mutationsList) { + if (mutation.type === 'childList') { + const titleElement = document.querySelector('.md-header__inner > .md-header__title'); + if (titleElement) { + initializeVersionDropdown(); + observer.disconnect(); + } + } } +}; + +const observer = new MutationObserver(observerCallback); +observer.observe(targetNode, observerOptions); + +function initializeVersionDropdown() { + const callbackName = 'callback_' + new Date().getTime(); + window[callbackName] = function(response) { + const div = document.createElement('div'); + div.innerHTML = response.html; + document.querySelector(".md-header__inner > .md-header__title").appendChild(div); + const container = div.querySelector('.rst-versions'); + var caret = document.createElement('div'); + caret.innerHTML = ""; + caret.classList.add('dropdown-caret'); + div.querySelector('.rst-current-version').appendChild(caret); + + div.querySelector('.rst-current-version').addEventListener('click', function() { + container.classList.toggle('shift-up'); + }); + }; var CSSLink = document.createElement('link'); CSSLink.rel='stylesheet'; @@ -20,6 +45,31 @@ setTimeout(function() { script.src = 'https://argo-rollouts.readthedocs.io/_/api/v2/footer_html/?'+ 'callback=' + callbackName + '&project=argo-rollouts&page=&theme=mkdocs&format=jsonp&docroot=docs&source_suffix=.md&version=' + (window['READTHEDOCS_DATA'] || { version: 'latest' }).version; document.getElementsByTagName('head')[0].appendChild(script); -}, 0); - +} +// VERSION WARNINGS +window.addEventListener("DOMContentLoaded", function() { + var currentVersion = window.location.href.match(/\/en\/(release-(?:v\d+|\w+)|latest|stable)\//); + var margin = 30; + var headerHeight = document.getElementsByClassName("md-header")[0].offsetHeight; + if (currentVersion && currentVersion.length > 1) { + currentVersion = currentVersion[1]; + if (currentVersion === "latest") { + document.querySelector("div[data-md-component=announce]").innerHTML = "
You are viewing the docs for an unreleased version of Argo Rollouts, click here to go to the latest stable version.
"; + var bannerHeight = document.getElementById('announce-msg').offsetHeight + margin; + document.querySelector("header.md-header").style.top = bannerHeight + "px"; + document.querySelector('style').textContent += + "@media screen and (min-width: 76.25em){ .md-sidebar { height: 0; top:" + (bannerHeight + headerHeight) + "px !important; }}"; + document.querySelector('style').textContent += + "@media screen and (min-width: 60em){ .md-sidebar--secondary { height: 0; top:" + (bannerHeight + headerHeight) + "px !important; }}"; + } else if (currentVersion !== "stable") { + document.querySelector("div[data-md-component=announce]").innerHTML = "
You are viewing the docs for a previous version of Argo Rollouts, click here to go to the latest stable version.
"; + var bannerHeight = document.getElementById('announce-msg').offsetHeight + margin; + document.querySelector("header.md-header").style.top = bannerHeight + "px"; + document.querySelector('style').textContent += + "@media screen and (min-width: 76.25em){ .md-sidebar { height: 0; top:" + (bannerHeight + headerHeight) + "px !important; }}"; + document.querySelector('style').textContent += + "@media screen and (min-width: 60em){ .md-sidebar--secondary { height: 0; top:" + (bannerHeight + headerHeight) + "px !important; }}"; + } + } +}); \ No newline at end of file From b5d0818c0fbd891932c108f40867bf92df7bc7db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jun 2024 20:40:56 -0500 Subject: [PATCH 062/219] chore(deps): bump docker/build-push-action from 6.0.2 to 6.1.0 (#3662) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.0.2 to 6.1.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/f6010ea70151369b06f0194be1051fbbdff851b2...31159d49c0d4756269a0940a750801a1ea5d7003) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 0ec37e2bcf..16b32a33d8 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@f6010ea70151369b06f0194be1051fbbdff851b2 #v6.0.2 + uses: docker/build-push-action@31159d49c0d4756269a0940a750801a1ea5d7003 #v6.1.0 with: context: . platforms: ${{ inputs.platforms }} From 0c716e2e608a5d58abe66fb86fa12c8ca132a3ca Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Jun 2024 02:13:57 +0000 Subject: [PATCH 063/219] docs: Update Changelog (#3666) * update changelog * Update CHANGELOG.md * Update CHANGELOG.md --------- Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com> Co-authored-by: Zach Aller --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a87407e1ef..263680f07d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ + +## [v1.7.1](https://github.com/argoproj/argo-rollouts/compare/v1.7.0...v1.7.1) (2024-06-22) + +### Fix + +* docs site version selector broken ([#3590](https://github.com/argoproj/argo-rollouts/issues/3590)) +* don't default datadog aggregator ([#3643](https://github.com/argoproj/argo-rollouts/issues/3643)) +* Add volume for plugin and tmp folder ([#3546](https://github.com/argoproj/argo-rollouts/issues/3546)) + + ## [v1.7.0](https://github.com/argoproj/argo-rollouts/compare/v1.7.0-rc1...v1.7.0) (2024-06-12) From f1d4dd201033c2236e02e2be1977e0686e0bc658 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jun 2024 11:21:32 -0500 Subject: [PATCH 064/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.19 to 1.27.22 (#3680) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.19 to 1.27.22. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.19...config/v1.27.22) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 20 ++++++++++---------- go.sum | 40 ++++++++++++++++++++-------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index a34ec47a29..87986e10c7 100644 --- a/go.mod +++ b/go.mod @@ -8,8 +8,8 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.28.0 - github.com/aws/aws-sdk-go-v2/config v1.27.19 + github.com/aws/aws-sdk-go-v2 v1.30.0 + github.com/aws/aws-sdk-go-v2/config v1.27.22 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.7 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.2 @@ -82,17 +82,17 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.19 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.6 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.10 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.10 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.22 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.8 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.12 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.12 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.12 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.14 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.20.12 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.6 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.28.13 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.22.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.30.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect diff --git a/go.sum b/go.sum index d6b0dad63d..c8eca211c7 100644 --- a/go.sum +++ b/go.sum @@ -96,18 +96,18 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.28.0 h1:ne6ftNhY0lUvlazMUQF15FF6NH80wKmPRFG7g2q6TCw= -github.com/aws/aws-sdk-go-v2 v1.28.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= -github.com/aws/aws-sdk-go-v2/config v1.27.19 h1:+DBS8gJP6VsxYkZ6UEV0/VsRM2rYpbQCYsosW9RRmeQ= -github.com/aws/aws-sdk-go-v2/config v1.27.19/go.mod h1:KzZcioJWzy9oV+oS5CobYXlDtU9+eW7bPG1g7gizTW4= -github.com/aws/aws-sdk-go-v2/credentials v1.17.19 h1:R18G7nBBGLby51CFEqUBFF2IVl7LUdCtYj6iosUwh/0= -github.com/aws/aws-sdk-go-v2/credentials v1.17.19/go.mod h1:xr9kUMnaLTB866HItT6pg58JgiBP77fSQLBwIa//zk8= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.6 h1:vVOuhRyslJ6T/HteG71ZWCTas1q2w6f0NKsNbkXHs/A= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.6/go.mod h1:jimWaqLiT0sJGLh51dKCLLtExRYPtMU7MpxuCgtbkxg= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.10 h1:LZIUb8sQG2cb89QaVFtMSnER10gyKkqU1k3hP3g9das= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.10/go.mod h1:BRIqay//vnIOCZjoXWSLffL2uzbtxEmnSlfbvVh7Z/4= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.10 h1:HY7CXLA0GiQUo3WYxOP7WYkLcwvRX4cLPf5joUcrQGk= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.10/go.mod h1:kfRBSxRa+I+VyON7el3wLZdrO91oxUxEwdAaWgFqN90= +github.com/aws/aws-sdk-go-v2 v1.30.0 h1:6qAwtzlfcTtcL8NHtbDQAqgM5s6NDipQTkPxyH/6kAA= +github.com/aws/aws-sdk-go-v2 v1.30.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= +github.com/aws/aws-sdk-go-v2/config v1.27.22 h1:TRkQVtpDINt+Na/ToU7iptyW6U0awAwJ24q4XN+59k8= +github.com/aws/aws-sdk-go-v2/config v1.27.22/go.mod h1:EYY3mVgFRUWkh6QNKH64MdyKs1YSUgatc0Zp3MDxi7c= +github.com/aws/aws-sdk-go-v2/credentials v1.17.22 h1:wu9kXQbbt64ul09v3ye4HYleAr4WiGV/uv69EXKDEr0= +github.com/aws/aws-sdk-go-v2/credentials v1.17.22/go.mod h1:pcvMtPcxJn3r2k6mZD9I0EcumLqPLA7V/0iCgOIlY+o= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.8 h1:FR+oWPFb/8qMVYMWN98bUZAGqPvLHiyqg1wqQGfUAXY= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.8/go.mod h1:EgSKcHiuuakEIxJcKGzVNWh5srVAQ3jKaSrBGRYvM48= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.12 h1:SJ04WXGTwnHlWIODtC5kJzKbeuHt+OUNOgKg7nfnUGw= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.12/go.mod h1:FkpvXhA92gb3GE9LD6Og0pHHycTxW7xGpnEh5E7Opwo= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.12 h1:hb5KgeYfObi5MHkSSZMEudnIvX30iB+E21evI4r6BnQ= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.12/go.mod h1:CroKe/eWJdyfy9Vx4rljP5wTUjNJfb+fPz1uMYUhEGM= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.7 h1:Tt1CrlmtcPROwUI1HNDDq0rklVWgD4tmtzLqZQjkwuQ= @@ -116,16 +116,16 @@ github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sg github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.12 h1:kO2J7WMroF/OTHN9WTcUtMjPhJ7ZoNxx0dwv6UCXQgY= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.12/go.mod h1:mrNxrjYvXaSjZe5fkKaWgDnOQ6BExLn/7Ru9OpRsMPY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.14 h1:zSDPny/pVnkqABXYRicYuPf9z2bTqfH13HT3v6UheIk= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.14/go.mod h1:3TTcI5JSzda1nw/pkVC9dhgLre0SNBFj2lYS4GctXKI= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.20.12 h1:FsYii6U+2k8ynYBo+pywlCBY9HNAFRh+iICRHbn+Qyw= -github.com/aws/aws-sdk-go-v2/service/sso v1.20.12/go.mod h1:j9Rps+Lcs2A0tYypWsNBeJOjgsIYUf1Styppo9Es0Wo= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.6 h1:lEE+xEcq3lh9bk362tgErP1+n689q5ERdmTwmF1XT3M= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.6/go.mod h1:2tR0x1DCL5IgnVZ1NQNFDNg5/XL/kiQgWI5l7I/N5Js= -github.com/aws/aws-sdk-go-v2/service/sts v1.28.13 h1:TSzmuUeruVJ4XWYp3bYzKCXue70ECpJWmbP3UfEvhYY= -github.com/aws/aws-sdk-go-v2/service/sts v1.28.13/go.mod h1:FppRtFjBA9mSWTj2cIAWCP66+bbBPMuPpBfWRXC5Yi0= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.0 h1:lPIAPCRoJkmotLTU/9B6icUFlYDpEuWjKeL79XROv1M= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.0/go.mod h1:lcQG/MmxydijbeTOp04hIuJwXGWPZGI3bwdFDGRTv14= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.0 h1:/4r71ghx+hX9spr884cqXHPEmPzqH/J3K7fkE1yfcmw= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.0/go.mod h1:z0P8K+cBIsFXUr5rzo/psUeJ20XjPN0+Nn8067Nd+E4= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.0 h1:9ja34PaKybhCJjVKvxtDsUjbATUJGN+eF6QnO58u5cI= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.0/go.mod h1:N2mQiucsO0VwK9CYuS4/c2n6Smeh1v47Rz3dWCPFLdE= github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= From 5996471496e69b7ed389079e0a886c55ce4d33c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jun 2024 11:23:48 -0500 Subject: [PATCH 065/219] chore(deps): bump docker/build-push-action from 6.1.0 to 6.2.0 (#3676) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.1.0 to 6.2.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/31159d49c0d4756269a0940a750801a1ea5d7003...15560696de535e4014efeff63c48f16952e52dd1) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 16b32a33d8..cd46e06705 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@31159d49c0d4756269a0940a750801a1ea5d7003 #v6.1.0 + uses: docker/build-push-action@15560696de535e4014efeff63c48f16952e52dd1 #v6.2.0 with: context: . platforms: ${{ inputs.platforms }} From f21956c7f12ed697be5277a27bb8e4c14ece7132 Mon Sep 17 00:00:00 2001 From: Enrique Tejeda Date: Thu, 27 Jun 2024 11:27:59 -0500 Subject: [PATCH 066/219] fix: add update verb to ClusterRole permissions for scaleDown feature. Fixes #3672 (#3675) fix: add update verb to ClusterRole permissions for scaleDown Signed-off-by: EnriqueTejeda --- manifests/install.yaml | 1 + manifests/namespace-install.yaml | 1 + manifests/role/argo-rollouts-clusterrole.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/manifests/install.yaml b/manifests/install.yaml index 3dff99191a..1b8eec6d69 100755 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -16417,6 +16417,7 @@ rules: - get - list - watch + - update - apiGroups: - "" resources: diff --git a/manifests/namespace-install.yaml b/manifests/namespace-install.yaml index 3f0dffa29b..16ea68f99c 100644 --- a/manifests/namespace-install.yaml +++ b/manifests/namespace-install.yaml @@ -75,6 +75,7 @@ rules: - get - list - watch + - update - apiGroups: - "" resources: diff --git a/manifests/role/argo-rollouts-clusterrole.yaml b/manifests/role/argo-rollouts-clusterrole.yaml index aab253e5ea..b43ed1adef 100644 --- a/manifests/role/argo-rollouts-clusterrole.yaml +++ b/manifests/role/argo-rollouts-clusterrole.yaml @@ -67,6 +67,7 @@ rules: - get - list - watch + - update # services patch needed to update selector of canary/stable/active/preview services # services create needed to create and delete services for experiments - apiGroups: From 243ea91767112a66ac5bc7b0cdefdd7b2173fc33 Mon Sep 17 00:00:00 2001 From: Psukhe Date: Thu, 27 Jun 2024 09:37:18 -0700 Subject: [PATCH 067/219] fix(analysis): Take RollbackWindow into account when Reconciling Analysis Runs. Fixes #3669 (#3670) * Ensure that BackgroundAnalysisRun does not run when rolling back within RollbackWindow Signed-off-by: Alex Dunn * Fix linting Signed-off-by: Alex Dunn --------- Signed-off-by: Alex Dunn --- rollout/analysis.go | 5 +++-- rollout/analysis_test.go | 41 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/rollout/analysis.go b/rollout/analysis.go index 7bb0d47f1f..f23f680ce0 100644 --- a/rollout/analysis.go +++ b/rollout/analysis.go @@ -74,8 +74,9 @@ func (c *rolloutContext) reconcileAnalysisRuns() error { isAborted := c.pauseContext.IsAborted() rollbackToScaleDownDelay := replicasetutil.HasScaleDownDeadline(c.newRS) initialDeploy := c.rollout.Status.StableRS == "" - if isAborted || c.rollout.Status.PromoteFull || rollbackToScaleDownDelay || initialDeploy { - c.log.Infof("Skipping analysis: isAborted: %v, promoteFull: %v, rollbackToScaleDownDelay: %v, initialDeploy: %v", isAborted, c.rollout.Status.PromoteFull, rollbackToScaleDownDelay, initialDeploy) + isRollbackWithinWindow := c.isRollbackWithinWindow() + if isAborted || c.rollout.Status.PromoteFull || rollbackToScaleDownDelay || initialDeploy || isRollbackWithinWindow { + c.log.Infof("Skipping analysis: isAborted: %v, promoteFull: %v, rollbackToScaleDownDelay: %v, initialDeploy: %v, isRollbackWithinWindow: %v", isAborted, c.rollout.Status.PromoteFull, rollbackToScaleDownDelay, initialDeploy, isRollbackWithinWindow) allArs := append(c.currentArs.ToArray(), c.otherArs...) c.SetCurrentAnalysisRuns(c.currentArs) return c.cancelAnalysisRuns(allArs) diff --git a/rollout/analysis_test.go b/rollout/analysis_test.go index 46a741bd63..e12a898c1a 100644 --- a/rollout/analysis_test.go +++ b/rollout/analysis_test.go @@ -1918,6 +1918,47 @@ func TestDoNotCreateBackgroundAnalysisRunOnNewCanaryRolloutStableRSEmpty(t *test f.run(getKey(r1, t)) } +func TestDoNotCreateBackgroundAnalysisRunWhenWithinRollbackWindow(t *testing.T) { + f := newFixture(t) + defer f.Close() + + at := analysisTemplate("bar") + + r1 := newCanaryRollout("foo", 1, nil, nil, pointer.Int32Ptr(0), intstr.FromInt(0), intstr.FromInt(1)) + r1.Spec.Strategy.Canary.Analysis = &v1alpha1.RolloutAnalysisBackground{ + RolloutAnalysis: v1alpha1.RolloutAnalysis{ + Templates: []v1alpha1.AnalysisTemplateRef{ + { + TemplateName: at.Name, + }, + }, + }, + } + r1.Spec.RollbackWindow = &v1alpha1.RollbackWindowSpec{Revisions: 1} + + r2 := bumpVersion(r1) + rs1 := newReplicaSetWithStatus(r1, 1, 1) + rs2 := newReplicaSetWithStatus(r2, 0, 0) + + rs2.CreationTimestamp = timeutil.MetaTime(time.Now().Add(-1 * time.Hour)) + rs1.CreationTimestamp = timeutil.MetaNow() + + f.kubeobjects = append(f.kubeobjects, rs1, rs2) + f.replicaSetLister = append(f.replicaSetLister, rs1, rs2) + + rs1PodHash := rs1.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + + r2 = updateCanaryRolloutStatus(r2, rs1PodHash, 1, 0, 1, false) + + f.rolloutLister = append(f.rolloutLister, r2) + f.analysisTemplateLister = append(f.analysisTemplateLister, at) + f.objects = append(f.objects, r2, at) + + f.expectUpdateReplicaSetAction(rs2) + f.expectPatchRolloutAction(r2) + f.run(getKey(r2, t)) +} + func TestCreatePrePromotionAnalysisRun(t *testing.T) { f := newFixture(t) defer f.Close() From 04f8da1d93495ee14aeb95db0ff4d6ee8d5ebd80 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jun 2024 11:37:49 -0500 Subject: [PATCH 068/219] chore(deps): bump softprops/action-gh-release from 2.0.5 to 2.0.6 (#3656) Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.5 to 2.0.6. - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/69320dbe05506a9a39fc8ae11030b214ec2d1f87...a74c6b72af54cfa997e81df42d94703d6313a2d0) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a38ad1dc05..ef35402a72 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -107,7 +107,7 @@ jobs: make manifests IMAGE_TAG=${{ github.ref_name }} - name: Draft release - uses: softprops/action-gh-release@69320dbe05506a9a39fc8ae11030b214ec2d1f87 # v0.1.15 + uses: softprops/action-gh-release@a74c6b72af54cfa997e81df42d94703d6313a2d0 # v0.1.15 with: tag_name: ${{ github.event.inputs.tag }} draft: true @@ -212,7 +212,7 @@ jobs: /tmp/sbom.tar.gz - name: Upload SBOM and signature assets - uses: softprops/action-gh-release@69320dbe05506a9a39fc8ae11030b214ec2d1f87 # v0.1.15 + uses: softprops/action-gh-release@a74c6b72af54cfa997e81df42d94703d6313a2d0 # v0.1.15 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: From eb1d8b81d977d9632578575e098c57403cc6c8d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 10:40:22 -0500 Subject: [PATCH 069/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.38.7 to 1.40.1 (#3687) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.38.7 to 1.40.1. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/kendra/v1.38.7...service/s3/v1.40.1) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 87986e10c7..8c240e6b92 100644 --- a/go.mod +++ b/go.mod @@ -8,11 +8,11 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.30.0 + github.com/aws/aws-sdk-go-v2 v1.30.1 github.com/aws/aws-sdk-go-v2/config v1.27.22 - github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.7 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.1 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 - github.com/aws/smithy-go v1.20.2 + github.com/aws/smithy-go v1.20.3 github.com/blang/semver v3.5.1+incompatible github.com/bombsimon/logrusr/v4 v4.1.0 github.com/evanphx/json-patch/v5 v5.9.0 @@ -84,8 +84,8 @@ require ( github.com/aws/aws-sdk-go v1.44.116 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.22 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.8 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.12 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.12 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.14 // indirect diff --git a/go.sum b/go.sum index c8eca211c7..2a15c0c52c 100644 --- a/go.sum +++ b/go.sum @@ -96,22 +96,22 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.30.0 h1:6qAwtzlfcTtcL8NHtbDQAqgM5s6NDipQTkPxyH/6kAA= -github.com/aws/aws-sdk-go-v2 v1.30.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= +github.com/aws/aws-sdk-go-v2 v1.30.1 h1:4y/5Dvfrhd1MxRDD77SrfsDaj8kUkkljU7XE83NPV+o= +github.com/aws/aws-sdk-go-v2 v1.30.1/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= github.com/aws/aws-sdk-go-v2/config v1.27.22 h1:TRkQVtpDINt+Na/ToU7iptyW6U0awAwJ24q4XN+59k8= github.com/aws/aws-sdk-go-v2/config v1.27.22/go.mod h1:EYY3mVgFRUWkh6QNKH64MdyKs1YSUgatc0Zp3MDxi7c= github.com/aws/aws-sdk-go-v2/credentials v1.17.22 h1:wu9kXQbbt64ul09v3ye4HYleAr4WiGV/uv69EXKDEr0= github.com/aws/aws-sdk-go-v2/credentials v1.17.22/go.mod h1:pcvMtPcxJn3r2k6mZD9I0EcumLqPLA7V/0iCgOIlY+o= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.8 h1:FR+oWPFb/8qMVYMWN98bUZAGqPvLHiyqg1wqQGfUAXY= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.8/go.mod h1:EgSKcHiuuakEIxJcKGzVNWh5srVAQ3jKaSrBGRYvM48= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.12 h1:SJ04WXGTwnHlWIODtC5kJzKbeuHt+OUNOgKg7nfnUGw= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.12/go.mod h1:FkpvXhA92gb3GE9LD6Og0pHHycTxW7xGpnEh5E7Opwo= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.12 h1:hb5KgeYfObi5MHkSSZMEudnIvX30iB+E21evI4r6BnQ= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.12/go.mod h1:CroKe/eWJdyfy9Vx4rljP5wTUjNJfb+fPz1uMYUhEGM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13 h1:5SAoZ4jYpGH4721ZNoS1znQrhOfZinOhc4XuTXx/nVc= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13/go.mod h1:+rdA6ZLpaSeM7tSg/B0IEDinCIBJGmW8rKDFkYpP04g= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13 h1:WIijqeaAO7TYFLbhsZmi2rgLEAtWOC1LhxCAVTJlSKw= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13/go.mod h1:i+kbfa76PQbWw/ULoWnp51EYVWH4ENln76fLQE3lXT8= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.7 h1:Tt1CrlmtcPROwUI1HNDDq0rklVWgD4tmtzLqZQjkwuQ= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.7/go.mod h1:8dUb61YstV6fBlMTDZmPOLlPhNsOAX2yAIjpEl3dk2g= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.1 h1:8OMF4iAIxBNN5UOob6yNsYM+HomJeNwVN7Sqn2eL2cg= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.1/go.mod h1:5BOwwahrrkipxamulWdV15zlwDHyxRXUBtWZX8cjZnA= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= @@ -126,8 +126,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.0 h1:/4r71ghx+hX9spr884cqXHPE github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.0/go.mod h1:z0P8K+cBIsFXUr5rzo/psUeJ20XjPN0+Nn8067Nd+E4= github.com/aws/aws-sdk-go-v2/service/sts v1.30.0 h1:9ja34PaKybhCJjVKvxtDsUjbATUJGN+eF6QnO58u5cI= github.com/aws/aws-sdk-go-v2/service/sts v1.30.0/go.mod h1:N2mQiucsO0VwK9CYuS4/c2n6Smeh1v47Rz3dWCPFLdE= -github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= -github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= +github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= +github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= From 23436a28c5bd3080f066c85a0b338d4b911b2df4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 10:40:42 -0500 Subject: [PATCH 070/219] chore(deps): bump github.com/aws/smithy-go from 1.20.2 to 1.20.3 (#3685) Bumps [github.com/aws/smithy-go](https://github.com/aws/smithy-go) from 1.20.2 to 1.20.3. - [Release notes](https://github.com/aws/smithy-go/releases) - [Changelog](https://github.com/aws/smithy-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/aws/smithy-go/compare/v1.20.2...v1.20.3) --- updated-dependencies: - dependency-name: github.com/aws/smithy-go dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> From b99767494a2b3b2d3fa3f1b497cd9786bc5cb718 Mon Sep 17 00:00:00 2001 From: Enrique Tejeda Date: Tue, 2 Jul 2024 10:44:46 -0500 Subject: [PATCH 071/219] chore: add example for updating all container images in set command (#3667) Signed-off-by: EnriqueTejeda --- .../kubectl-argo-rollouts/kubectl-argo-rollouts_set_image.md | 3 +++ pkg/kubectl-argo-rollouts/cmd/set/set_image.go | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_set_image.md b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_set_image.md index 1ad60ac547..a25acaa730 100644 --- a/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_set_image.md +++ b/docs/generated/kubectl-argo-rollouts/kubectl-argo-rollouts_set_image.md @@ -15,6 +15,9 @@ kubectl argo rollouts set image ROLLOUT_NAME CONTAINER=IMAGE [flags] ```shell # Set rollout image (containers contains 'initContainer', 'container', 'ephemeralContainer') kubectl argo rollouts set image my-rollout containerName=imageName + +# Set rollout image for all containers +kubectl argo rollouts set image my-rollout *=imageName ``` ## Options diff --git a/pkg/kubectl-argo-rollouts/cmd/set/set_image.go b/pkg/kubectl-argo-rollouts/cmd/set/set_image.go index d2f199a4a4..942db298bc 100644 --- a/pkg/kubectl-argo-rollouts/cmd/set/set_image.go +++ b/pkg/kubectl-argo-rollouts/cmd/set/set_image.go @@ -20,7 +20,10 @@ import ( const ( setImageExample = ` # Set rollout image (containers contains 'initContainer', 'container', 'ephemeralContainer') - %[1]s set image my-rollout containerName=imageName` + %[1]s set image my-rollout containerName=imageName + + # Set rollout image for all containers + %[1]s set image my-rollout *=imageName` ) const ( From aae86f760414efd72bdfb7cd4d6fdad9f98448bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jul 2024 11:21:46 -0500 Subject: [PATCH 072/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.22 to 1.27.23 (#3695) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.22 to 1.27.23. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.22...config/v1.27.23) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 16 ++++++++-------- go.sum | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index 8c240e6b92..da241cbc09 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.30.1 - github.com/aws/aws-sdk-go-v2/config v1.27.22 + github.com/aws/aws-sdk-go-v2/config v1.27.23 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.1 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.3 @@ -82,17 +82,17 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.22 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.8 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.23 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.14 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.15 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.22.0 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.0 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.30.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.22.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.30.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect diff --git a/go.sum b/go.sum index 2a15c0c52c..5f37890bde 100644 --- a/go.sum +++ b/go.sum @@ -98,12 +98,12 @@ github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WN github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v1.30.1 h1:4y/5Dvfrhd1MxRDD77SrfsDaj8kUkkljU7XE83NPV+o= github.com/aws/aws-sdk-go-v2 v1.30.1/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= -github.com/aws/aws-sdk-go-v2/config v1.27.22 h1:TRkQVtpDINt+Na/ToU7iptyW6U0awAwJ24q4XN+59k8= -github.com/aws/aws-sdk-go-v2/config v1.27.22/go.mod h1:EYY3mVgFRUWkh6QNKH64MdyKs1YSUgatc0Zp3MDxi7c= -github.com/aws/aws-sdk-go-v2/credentials v1.17.22 h1:wu9kXQbbt64ul09v3ye4HYleAr4WiGV/uv69EXKDEr0= -github.com/aws/aws-sdk-go-v2/credentials v1.17.22/go.mod h1:pcvMtPcxJn3r2k6mZD9I0EcumLqPLA7V/0iCgOIlY+o= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.8 h1:FR+oWPFb/8qMVYMWN98bUZAGqPvLHiyqg1wqQGfUAXY= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.8/go.mod h1:EgSKcHiuuakEIxJcKGzVNWh5srVAQ3jKaSrBGRYvM48= +github.com/aws/aws-sdk-go-v2/config v1.27.23 h1:Cr/gJEa9NAS7CDAjbnB7tHYb3aLZI2gVggfmSAasDac= +github.com/aws/aws-sdk-go-v2/config v1.27.23/go.mod h1:WMMYHqLCFu5LH05mFOF5tsq1PGEMfKbu083VKqLCd0o= +github.com/aws/aws-sdk-go-v2/credentials v1.17.23 h1:G1CfmLVoO2TdQ8z9dW+JBc/r8+MqyPQhXCafNZcXVZo= +github.com/aws/aws-sdk-go-v2/credentials v1.17.23/go.mod h1:V/DvSURn6kKgcuKEk4qwSwb/fZ2d++FFARtWSbXnLqY= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9 h1:Aznqksmd6Rfv2HQN9cpqIV/lQRMaIpJkLLaJ1ZI76no= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9/go.mod h1:WQr3MY7AxGNxaqAtsDWn+fBxmd4XvLkzeqQ8P1VM0/w= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13 h1:5SAoZ4jYpGH4721ZNoS1znQrhOfZinOhc4XuTXx/nVc= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13/go.mod h1:+rdA6ZLpaSeM7tSg/B0IEDinCIBJGmW8rKDFkYpP04g= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13 h1:WIijqeaAO7TYFLbhsZmi2rgLEAtWOC1LhxCAVTJlSKw= @@ -114,18 +114,18 @@ github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.1 h1:8OMF4iAIxBNN5UOob6yNs github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.1/go.mod h1:5BOwwahrrkipxamulWdV15zlwDHyxRXUBtWZX8cjZnA= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.14 h1:zSDPny/pVnkqABXYRicYuPf9z2bTqfH13HT3v6UheIk= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.14/go.mod h1:3TTcI5JSzda1nw/pkVC9dhgLre0SNBFj2lYS4GctXKI= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 h1:dT3MqvGhSoaIhRseqw2I0yH81l7wiR2vjs57O51EAm8= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3/go.mod h1:GlAeCkHwugxdHaueRr4nhPuY+WW+gR8UjlcqzPr1SPI= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.15 h1:I9zMeF107l0rJrpnHpjEiiTSCKYAIw8mALiXcPsGBiA= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.15/go.mod h1:9xWJ3Q/S6Ojusz1UIkfycgD1mGirJfLLKqq3LPT7WN8= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.0 h1:lPIAPCRoJkmotLTU/9B6icUFlYDpEuWjKeL79XROv1M= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.0/go.mod h1:lcQG/MmxydijbeTOp04hIuJwXGWPZGI3bwdFDGRTv14= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.0 h1:/4r71ghx+hX9spr884cqXHPEmPzqH/J3K7fkE1yfcmw= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.0/go.mod h1:z0P8K+cBIsFXUr5rzo/psUeJ20XjPN0+Nn8067Nd+E4= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.0 h1:9ja34PaKybhCJjVKvxtDsUjbATUJGN+eF6QnO58u5cI= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.0/go.mod h1:N2mQiucsO0VwK9CYuS4/c2n6Smeh1v47Rz3dWCPFLdE= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.1 h1:p1GahKIjyMDZtiKoIn0/jAj/TkMzfzndDv5+zi2Mhgc= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.1/go.mod h1:/vWdhoIoYA5hYoPZ6fm7Sv4d8701PiG5VKe8/pPJL60= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.1 h1:lCEv9f8f+zJ8kcFeAjRZsekLd/x5SAm96Cva+VbUdo8= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.1/go.mod h1:xyFHA4zGxgYkdD73VeezHt3vSKEG9EmFnGwoKlP00u4= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.1 h1:+woJ607dllHJQtsnJLi52ycuqHMwlW+Wqm2Ppsfp4nQ= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.1/go.mod h1:jiNR3JqT15Dm+QWq2SRgh0x0bCNSRP2L25+CqPNpJlQ= github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= From 590206b9bca395a3a71244fd0384c6e1d74585b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jul 2024 11:22:03 -0500 Subject: [PATCH 073/219] chore(deps): bump google.golang.org/grpc from 1.64.0 to 1.65.0 (#3694) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.64.0 to 1.65.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.64.0...v1.65.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 22 +++++++++++----------- go.sum | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/go.mod b/go.mod index da241cbc09..c970f0110c 100644 --- a/go.mod +++ b/go.mod @@ -40,8 +40,8 @@ require ( github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 golang.org/x/oauth2 v0.21.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 - google.golang.org/grpc v1.64.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 + google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.29.3 @@ -96,7 +96,7 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect github.com/cloudflare/circl v1.3.3 // indirect github.com/coreos/go-semver v0.3.1 // indirect @@ -117,7 +117,7 @@ require ( github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/golang/glog v1.2.0 // indirect + github.com/golang/glog v1.2.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/btree v1.1.2 // indirect github.com/google/cel-go v0.17.7 // indirect @@ -201,21 +201,21 @@ require ( go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.19.0 // indirect - golang.org/x/crypto v0.21.0 // indirect + golang.org/x/crypto v0.23.0 // indirect golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.22.0 // indirect - golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/term v0.18.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/net v0.25.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/term v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.16.1 // indirect gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 // indirect gomodules.xyz/notify v0.1.1 // indirect google.golang.org/api v0.162.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index 5f37890bde..8fbb1d8576 100644 --- a/go.sum +++ b/go.sum @@ -154,8 +154,8 @@ github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqy github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -166,8 +166,8 @@ github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtM github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50 h1:DBmgJDC9dTfkVyGgipamEh2BpGYxScCH1TOF1LL1cXc= -github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50/go.mod h1:5e1+Vvlzido69INQaVO6d87Qn543Xr6nooe9Kz7oBFM= +github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b h1:ga8SEFjZ60pxLcmhnThWgvH2wg8376yUJmPhEH4H3kw= +github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -284,8 +284,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= -github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -783,8 +783,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -869,8 +869,8 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -893,8 +893,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -961,8 +961,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -971,8 +971,8 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -985,8 +985,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1112,10 +1112,10 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1130,8 +1130,8 @@ google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= -google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 68f7b41f721afba4e15a204ddf693158c64333ae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 10:43:41 -0500 Subject: [PATCH 074/219] chore(deps): bump docker/setup-buildx-action from 3.3.0 to 3.4.0 (#3705) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.3.0 to 3.4.0. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/d70bba72b1f3fd22344832f00baa16ece964efeb...4fd812986e6c8c2a69e18311145f9371337f27d4) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index cd46e06705..bd41ec4fed 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -79,7 +79,7 @@ jobs: cosign-release: 'v2.2.0' - uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 - - uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 + - uses: docker/setup-buildx-action@4fd812986e6c8c2a69e18311145f9371337f27d4 # v3.4.0 - name: Setup tags for container image as a CSV type run: | diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ef35402a72..77f4e62e96 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -98,7 +98,7 @@ jobs: uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 + uses: docker/setup-buildx-action@4fd812986e6c8c2a69e18311145f9371337f27d4 # v3.4.0 - name: Generate release artifacts run: | From 3e4ea7429dc1d5907ac153c4574c78b610f73f27 Mon Sep 17 00:00:00 2001 From: Matthew Clarke Date: Wed, 10 Jul 2024 09:25:00 -0400 Subject: [PATCH 075/219] feat(metricprovider): add prometheus range query support (#3704) * feat: add prometheus range query support Signed-off-by: Matthew Clarke * fix: code-gen Signed-off-by: Matthew Clarke * fix: handle matrix results from prometheus Signed-off-by: Matthew Clarke * refactor: remove duplicated code Signed-off-by: Matthew Clarke * feat: configurable step Signed-off-by: Matthew Clarke * fix: codegen Signed-off-by: Matthew Clarke * test: more tests Signed-off-by: Matthew Clarke * docs: range query docs Signed-off-by: Matthew Clarke * refactor: expr for prometheus range query start/end Signed-off-by: Matthew Clarke * fix: lint issue Signed-off-by: Matthew Clarke * docs: missing codegen Signed-off-by: Matthew Clarke * fix: PR Fixes Signed-off-by: Matthew Clarke --------- Signed-off-by: Matthew Clarke --- docs/CONTRIBUTING.md | 2 +- docs/analysis/prometheus.md | 41 + .../features/kustomize/rollout_cr_schema.json | 42 + manifests/crds/analysis-run-crd.yaml | 9 + manifests/crds/analysis-template-crd.yaml | 9 + .../crds/cluster-analysis-template-crd.yaml | 9 + manifests/install.yaml | 27 + metricproviders/prometheus/mock_test.go | 59 +- metricproviders/prometheus/prometheus.go | 70 +- metricproviders/prometheus/prometheus_test.go | 188 ++- pkg/apiclient/rollout/rollout.swagger.json | 22 + pkg/apis/rollouts/v1alpha1/analysis_types.go | 13 + pkg/apis/rollouts/v1alpha1/generated.pb.go | 1453 ++++++++++------- pkg/apis/rollouts/v1alpha1/generated.proto | 16 + .../rollouts/v1alpha1/openapi_generated.go | 43 +- .../v1alpha1/zz_generated.deepcopy.go | 21 + ui/src/models/rollout/generated/api.ts | 31 + utils/evaluate/evaluate.go | 34 + utils/evaluate/evaluate_test.go | 19 + 19 files changed, 1478 insertions(+), 630 deletions(-) diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index f727834d8b..b2c74299d6 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -201,7 +201,7 @@ make start-e2e E2E_INSTANCE_ID='' ``` -6. Working on CRDs? While editing them directly works when you are finding the shape of things you want, the final CRDs are autogenerated. Make sure to regenerate them before submitting PRs. They are controlled by the relevant annotations in the types file: +6. Working on CRDs? While editing them directly works when you are finding the shape of things you want, the final CRDs are autogenerated. Make sure to regenerate them by running `make gen-crd` before submitting PRs. They are controlled by the relevant annotations in the types file: eg: Analysis Templates are controlled by annotations in `pkg/apis/rollouts/v1alpha1/analysis_types.go`. diff --git a/docs/analysis/prometheus.md b/docs/analysis/prometheus.md index cb93bf0e5d..0fb2fb6a65 100644 --- a/docs/analysis/prometheus.md +++ b/docs/analysis/prometheus.md @@ -39,6 +39,47 @@ you validate your [PromQL expression](https://prometheus.io/docs/prometheus/late See the [Analysis Overview page](../../features/analysis) for more details on the available options. +## Range queries + +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: AnalysisTemplate +metadata: + name: range-query-example +spec: + args: + - name: service-name + - name: lookback-duration + value: 5m + metrics: + - name: success-rate + # checks that all returned values are under 1000ms + successCondition: "all(result, # < 1000)" + failureLimit: 3 + provider: + prometheus: + rangeQuery: + # See https://expr-lang.org/docs/language-definition#date-functions + # for value date functions + # The start point to query from + start: 'now() - duration("{{args.lookback-duration}}")' + # The end point to query to + end: 'now()' + # Query resolution width + step: 1m + address: http://prometheus.example.com:9090 + query: http_latency_ms{service="{{args.service-name}}"} +``` + +### Range query and successCondition/failureCondition + +Since range queries will usually return multiple values from prometheus. It is important to assert on every value returned. See the following examples: + +* ❌ `result[0] < 1000` - this will only check the first value returned +* ✅ `all(result, # < 1000)` - checks every value returns from prometheus + +See [expr](https://github.com/expr-lang/expr) for more expression options. + ## Authorization ### Utilizing Amazon Managed Prometheus diff --git a/docs/features/kustomize/rollout_cr_schema.json b/docs/features/kustomize/rollout_cr_schema.json index b7ca35204f..f835099afe 100644 --- a/docs/features/kustomize/rollout_cr_schema.json +++ b/docs/features/kustomize/rollout_cr_schema.json @@ -4685,6 +4685,20 @@ "query": { "type": "string" }, + "rangeQuery": { + "properties": { + "end": { + "type": "string" + }, + "start": { + "type": "string" + }, + "step": { + "type": "string" + } + }, + "type": "object" + }, "timeout": { "format": "int64", "type": "integer" @@ -9522,6 +9536,20 @@ "query": { "type": "string" }, + "rangeQuery": { + "properties": { + "end": { + "type": "string" + }, + "start": { + "type": "string" + }, + "step": { + "type": "string" + } + }, + "type": "object" + }, "timeout": { "format": "int64", "type": "integer" @@ -14372,6 +14400,20 @@ "query": { "type": "string" }, + "rangeQuery": { + "properties": { + "end": { + "type": "string" + }, + "start": { + "type": "string" + }, + "step": { + "type": "string" + } + }, + "type": "object" + }, "timeout": { "format": "int64", "type": "integer" diff --git a/manifests/crds/analysis-run-crd.yaml b/manifests/crds/analysis-run-crd.yaml index 816702aa04..d5158a74f4 100644 --- a/manifests/crds/analysis-run-crd.yaml +++ b/manifests/crds/analysis-run-crd.yaml @@ -3066,6 +3066,15 @@ spec: type: boolean query: type: string + rangeQuery: + properties: + end: + type: string + start: + type: string + step: + type: string + type: object timeout: format: int64 type: integer diff --git a/manifests/crds/analysis-template-crd.yaml b/manifests/crds/analysis-template-crd.yaml index 3bcf3855ad..e09c631c95 100644 --- a/manifests/crds/analysis-template-crd.yaml +++ b/manifests/crds/analysis-template-crd.yaml @@ -3062,6 +3062,15 @@ spec: type: boolean query: type: string + rangeQuery: + properties: + end: + type: string + start: + type: string + step: + type: string + type: object timeout: format: int64 type: integer diff --git a/manifests/crds/cluster-analysis-template-crd.yaml b/manifests/crds/cluster-analysis-template-crd.yaml index 1f97c14bd8..0c2baf1fc6 100644 --- a/manifests/crds/cluster-analysis-template-crd.yaml +++ b/manifests/crds/cluster-analysis-template-crd.yaml @@ -3062,6 +3062,15 @@ spec: type: boolean query: type: string + rangeQuery: + properties: + end: + type: string + start: + type: string + step: + type: string + type: object timeout: format: int64 type: integer diff --git a/manifests/install.yaml b/manifests/install.yaml index 1b8eec6d69..7ee55d981c 100755 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -3067,6 +3067,15 @@ spec: type: boolean query: type: string + rangeQuery: + properties: + end: + type: string + start: + type: string + step: + type: string + type: object timeout: format: int64 type: integer @@ -6356,6 +6365,15 @@ spec: type: boolean query: type: string + rangeQuery: + properties: + end: + type: string + start: + type: string + step: + type: string + type: object timeout: format: int64 type: integer @@ -9523,6 +9541,15 @@ spec: type: boolean query: type: string + rangeQuery: + properties: + end: + type: string + start: + type: string + step: + type: string + type: object timeout: format: int64 type: integer diff --git a/metricproviders/prometheus/mock_test.go b/metricproviders/prometheus/mock_test.go index e16a42902d..9636828d1e 100644 --- a/metricproviders/prometheus/mock_test.go +++ b/metricproviders/prometheus/mock_test.go @@ -9,17 +9,20 @@ import ( ) type mockAPI struct { - value model.Value - err error - warnings v1.Warnings + value model.Value + err error + warnings v1.Warnings + startTimeSent time.Time + endTimeSent time.Time + stepSent time.Duration } -func (m mockAPI) WalReplay(ctx context.Context) (v1.WalReplayStatus, error) { +func (m *mockAPI) WalReplay(ctx context.Context) (v1.WalReplayStatus, error) { panic("Not used") } // Query performs a query for the given time. -func (m mockAPI) Query(ctx context.Context, query string, ts time.Time, opt ...v1.Option) (model.Value, v1.Warnings, error) { +func (m *mockAPI) Query(ctx context.Context, query string, ts time.Time, opt ...v1.Option) (model.Value, v1.Warnings, error) { if m.err != nil { return nil, m.warnings, m.err } @@ -28,78 +31,84 @@ func (m mockAPI) Query(ctx context.Context, query string, ts time.Time, opt ...v // Below methods are not used but required for the interface implementation -func (m mockAPI) Metadata(ctx context.Context, metric string, limit string) (map[string][]v1.Metadata, error) { +func (m *mockAPI) Metadata(ctx context.Context, metric string, limit string) (map[string][]v1.Metadata, error) { panic("Not used") } -func (m mockAPI) CleanTombstones(ctx context.Context) error { +func (m *mockAPI) CleanTombstones(ctx context.Context) error { panic("Not used") } -func (m mockAPI) DeleteSeries(ctx context.Context, matches []string, startTime time.Time, endTime time.Time) error { +func (m *mockAPI) DeleteSeries(ctx context.Context, matches []string, startTime time.Time, endTime time.Time) error { panic("Not used") } -func (m mockAPI) LabelNames(ctx context.Context, matches []string, startTime time.Time, endTime time.Time) ([]string, v1.Warnings, error) { +func (m *mockAPI) LabelNames(ctx context.Context, matches []string, startTime time.Time, endTime time.Time) ([]string, v1.Warnings, error) { panic("Not used") } -func (m mockAPI) LabelValues(ctx context.Context, label string, matches []string, startTime time.Time, endTime time.Time) (model.LabelValues, v1.Warnings, error) { +func (m *mockAPI) LabelValues(ctx context.Context, label string, matches []string, startTime time.Time, endTime time.Time) (model.LabelValues, v1.Warnings, error) { panic("Not used") } -func (m mockAPI) QueryRange(ctx context.Context, query string, r v1.Range, opt ...v1.Option) (model.Value, v1.Warnings, error) { - panic("Not used") +func (m *mockAPI) QueryRange(ctx context.Context, query string, r v1.Range, opt ...v1.Option) (model.Value, v1.Warnings, error) { + m.startTimeSent = r.Start + m.endTimeSent = r.End + m.stepSent = r.Step + if m.err != nil { + return nil, m.warnings, m.err + } + return m.value, m.warnings, nil } -func (m mockAPI) Series(ctx context.Context, matches []string, startTime time.Time, endTime time.Time) ([]model.LabelSet, v1.Warnings, error) { +func (m *mockAPI) Series(ctx context.Context, matches []string, startTime time.Time, endTime time.Time) ([]model.LabelSet, v1.Warnings, error) { panic("Not used") } -func (m mockAPI) Targets(ctx context.Context) (v1.TargetsResult, error) { +func (m *mockAPI) Targets(ctx context.Context) (v1.TargetsResult, error) { panic("Not used") } -func (m mockAPI) Alerts(ctx context.Context) (v1.AlertsResult, error) { +func (m *mockAPI) Alerts(ctx context.Context) (v1.AlertsResult, error) { panic("Not used") } -func (m mockAPI) AlertManagers(ctx context.Context) (v1.AlertManagersResult, error) { +func (m *mockAPI) AlertManagers(ctx context.Context) (v1.AlertManagersResult, error) { panic("Not used") } -func (m mockAPI) Config(ctx context.Context) (v1.ConfigResult, error) { +func (m *mockAPI) Config(ctx context.Context) (v1.ConfigResult, error) { panic("Not used") } -func (m mockAPI) Flags(ctx context.Context) (v1.FlagsResult, error) { +func (m *mockAPI) Flags(ctx context.Context) (v1.FlagsResult, error) { panic("Not used") } -func (m mockAPI) Snapshot(ctx context.Context, skipHead bool) (v1.SnapshotResult, error) { +func (m *mockAPI) Snapshot(ctx context.Context, skipHead bool) (v1.SnapshotResult, error) { panic("Not used") } -func (m mockAPI) Rules(ctx context.Context) (v1.RulesResult, error) { +func (m *mockAPI) Rules(ctx context.Context) (v1.RulesResult, error) { panic("Not used") } -func (m mockAPI) TargetsMetadata(ctx context.Context, matchTarget string, metric string, limit string) ([]v1.MetricMetadata, error) { +func (m *mockAPI) TargetsMetadata(ctx context.Context, matchTarget string, metric string, limit string) ([]v1.MetricMetadata, error) { panic("Not used") } -func (m mockAPI) Runtimeinfo(ctx context.Context) (v1.RuntimeinfoResult, error) { +func (m *mockAPI) Runtimeinfo(ctx context.Context) (v1.RuntimeinfoResult, error) { panic("Not used") } -func (m mockAPI) TSDB(ctx context.Context) (v1.TSDBResult, error) { +func (m *mockAPI) TSDB(ctx context.Context) (v1.TSDBResult, error) { panic("Not used") } -func (m mockAPI) Buildinfo(ctx context.Context) (v1.BuildinfoResult, error) { +func (m *mockAPI) Buildinfo(ctx context.Context) (v1.BuildinfoResult, error) { panic("Not used") } -func (m mockAPI) QueryExemplars(ctx context.Context, query string, startTime time.Time, endTime time.Time) ([]v1.ExemplarQueryResult, error) { +func (m *mockAPI) QueryExemplars(ctx context.Context, query string, startTime time.Time, endTime time.Time) ([]v1.ExemplarQueryResult, error) { panic("Not used") } diff --git a/metricproviders/prometheus/prometheus.go b/metricproviders/prometheus/prometheus.go index 7473693525..383e4e0a6b 100644 --- a/metricproviders/prometheus/prometheus.go +++ b/metricproviders/prometheus/prometheus.go @@ -56,6 +56,30 @@ func (p *Provider) GetMetadata(metric v1alpha1.Metric) map[string]string { return metricsMetadata } +func (p *Provider) executeQuery(ctx context.Context, metric v1alpha1.Metric) (model.Value, v1.Warnings, error) { + if metric.Provider.Prometheus.RangeQuery != nil { + start, err := evaluate.EvalTime(metric.Provider.Prometheus.RangeQuery.Start) + if err != nil { + return nil, nil, fmt.Errorf("failed to parse rangeQuery.start as time: %w", err) + } + end, err := evaluate.EvalTime(metric.Provider.Prometheus.RangeQuery.End) + if err != nil { + return nil, nil, fmt.Errorf("failed to parse rangeQuery.end as time: %w", err) + } + stepDuration, err := metric.Provider.Prometheus.RangeQuery.Step.Duration() + if err != nil { + return nil, nil, fmt.Errorf("failed to parse rangeQuery.step as duration: %w", err) + } + return p.api.QueryRange(ctx, metric.Provider.Prometheus.Query, v1.Range{ + Start: start, + End: end, + Step: stepDuration, + }) + } else { + return p.api.Query(ctx, metric.Provider.Prometheus.Query, time.Now()) + } +} + // Run queries prometheus for the metric func (p *Provider) Run(run *v1alpha1.AnalysisRun, metric v1alpha1.Metric) v1alpha1.Measurement { startTime := timeutil.MetaNow() @@ -66,7 +90,7 @@ func (p *Provider) Run(run *v1alpha1.AnalysisRun, metric v1alpha1.Metric) v1alph ctx, cancel := context.WithTimeout(context.Background(), p.timeout) defer cancel() - response, warnings, err := p.api.Query(ctx, metric.Provider.Prometheus.Query, time.Now()) + response, warnings, err := p.executeQuery(ctx, metric) if err != nil { return metricutil.MarkMeasurementError(newMeasurement, err) } @@ -112,6 +136,22 @@ func (p *Provider) GarbageCollect(run *v1alpha1.AnalysisRun, metric v1alpha1.Met return nil } +func sampleValuesToFloatSlice(sampleValues []model.SampleValue) []float64 { + results := make([]float64, 0, len(sampleValues)) + for _, s := range sampleValues { + results = append(results, float64(s)) + } + return results +} + +func sampleValuesToResultStr(sampleValues []model.SampleValue) string { + results := []string{} + for _, s := range sampleValues { + results = append(results, s.String()) + } + return fmt.Sprintf("[%s]", strings.Join(results, ",")) +} + func (p *Provider) processResponse(metric v1alpha1.Metric, response model.Value) (string, v1alpha1.AnalysisPhase, error) { switch value := response.(type) { case *model.Scalar: @@ -119,22 +159,28 @@ func (p *Provider) processResponse(metric v1alpha1.Metric, response model.Value) result := float64(value.Value) newStatus, err := evaluate.EvaluateResult(result, metric, p.logCtx) return valueStr, newStatus, err + case model.Matrix: + sampleValues := []model.SampleValue{} + for _, sample := range value { + if sample != nil { + for _, s := range sample.Values { + sampleValues = append(sampleValues, s.Value) + } + } + } + floatResults := sampleValuesToFloatSlice(sampleValues) + newStatus, err := evaluate.EvaluateResult(floatResults, metric, p.logCtx) + return sampleValuesToResultStr(sampleValues), newStatus, err case model.Vector: - results := make([]float64, 0, len(value)) - valueStr := "[" + sampleValues := []model.SampleValue{} for _, s := range value { if s != nil { - valueStr = valueStr + s.Value.String() + "," - results = append(results, float64(s.Value)) + sampleValues = append(sampleValues, s.Value) } } - // if we appended to the string, we should remove the last comma on the string - if len(valueStr) > 1 { - valueStr = valueStr[:len(valueStr)-1] - } - valueStr = valueStr + "]" - newStatus, err := evaluate.EvaluateResult(results, metric, p.logCtx) - return valueStr, newStatus, err + floatResults := sampleValuesToFloatSlice(sampleValues) + newStatus, err := evaluate.EvaluateResult(floatResults, metric, p.logCtx) + return sampleValuesToResultStr(sampleValues), newStatus, err //TODO(dthomson) add other response types default: return "", v1alpha1.AnalysisPhaseError, fmt.Errorf("Prometheus metric type not supported") diff --git a/metricproviders/prometheus/prometheus_test.go b/metricproviders/prometheus/prometheus_test.go index f54d6d6c61..c889f2c4cc 100644 --- a/metricproviders/prometheus/prometheus_test.go +++ b/metricproviders/prometheus/prometheus_test.go @@ -28,6 +28,35 @@ type OAuthResponse struct { Expiry string `json:"expires_in,omitempty"` } +func newMatrix(baseline float64) model.Matrix { + return model.Matrix{ + &model.SampleStream{ + Values: []model.SamplePair{ + { + Timestamp: 1234, + Value: model.SampleValue(baseline + 1.0), + }, + { + Timestamp: 1234, + Value: model.SampleValue(baseline + 2.0), + }, + }, + }, + &model.SampleStream{ + Values: []model.SamplePair{ + { + Timestamp: 1234, + Value: model.SampleValue(baseline + 3.0), + }, + { + Timestamp: 1234, + Value: model.SampleValue(baseline + 4.0), + }, + }, + }, + } +} + func newScalar(f float64) model.Value { return &model.Scalar{ Value: model.SampleValue(f), @@ -41,7 +70,7 @@ func newAnalysisRun() *v1alpha1.AnalysisRun { func TestType(t *testing.T) { e := log.Entry{} - mock := mockAPI{ + mock := &mockAPI{ value: newScalar(10), } timeout := int64(5) @@ -64,7 +93,7 @@ func TestType(t *testing.T) { func TestRunSuccessfully(t *testing.T) { e := log.Entry{} - mock := mockAPI{ + mock := &mockAPI{ value: newScalar(10), } metric := v1alpha1.Metric{ @@ -87,9 +116,142 @@ func TestRunSuccessfully(t *testing.T) { assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, measurement.Phase) } +func TestRunSuccessfullyWithRangeQuery(t *testing.T) { + e := log.Entry{} + mock := &mockAPI{ + value: newMatrix(10), + } + metric := v1alpha1.Metric{ + Name: "foo", + SuccessCondition: "all(result, # > 10)", + FailureCondition: "all(result, # < 10)", + Provider: v1alpha1.MetricProvider{ + Prometheus: &v1alpha1.PrometheusMetric{ + Query: "test", + RangeQuery: &v1alpha1.PrometheusRangeQueryArgs{ + Start: `date("2023-08-14 00:00:00", "2006-01-02 15:04:05", "UTC") - duration("1h")`, + End: `date("2023-08-14 00:00:00", "2006-01-02 15:04:05", "UTC")`, + Step: "1m", + }, + }, + }, + } + + p, err := NewPrometheusProvider(mock, e, metric) + + measurement := p.Run(newAnalysisRun(), metric) + assert.NotNil(t, measurement.StartedAt) + assert.NoError(t, err) + assert.Equal(t, "[11,12,13,14]", measurement.Value) + assert.NotNil(t, measurement.FinishedAt) + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, measurement.Phase) + assert.Equal(t, "2023-08-13 23:00:00 +0000 UTC", mock.startTimeSent.String()) + assert.Equal(t, "2023-08-14 00:00:00 +0000 UTC", mock.endTimeSent.String()) + assert.Equal(t, "1m0s", mock.stepSent.String()) +} + +func TestRunUnparsableStartTime(t *testing.T) { + e := log.Entry{} + mock := &mockAPI{ + value: newMatrix(10), + } + metric := v1alpha1.Metric{ + Name: "foo", + SuccessCondition: "all(result, # > 10)", + FailureCondition: "all(result, # < 10)", + Provider: v1alpha1.MetricProvider{ + Prometheus: &v1alpha1.PrometheusMetric{ + Query: "test", + RangeQuery: &v1alpha1.PrometheusRangeQueryArgs{ + Start: `now() - duration("??")`, + End: `date("2023-08-14 00:00:00", "2006-01-02 15:04:05", "UTC")`, + Step: "1m", + }, + }, + }, + } + expectedErr := fmt.Errorf(`failed to parse rangeQuery.start as time: time: invalid duration "??"`) + + p, err := NewPrometheusProvider(mock, e, metric) + + measurement := p.Run(newAnalysisRun(), metric) + assert.NotNil(t, measurement.StartedAt) + assert.NoError(t, err) + assert.Equal(t, expectedErr.Error(), measurement.Message) + assert.Equal(t, "", measurement.Value) + assert.NotNil(t, measurement.FinishedAt) + assert.Equal(t, v1alpha1.AnalysisPhaseError, measurement.Phase) +} + +func TestRunUnparsableEndTime(t *testing.T) { + e := log.Entry{} + mock := &mockAPI{ + value: newMatrix(10), + } + metric := v1alpha1.Metric{ + Name: "foo", + SuccessCondition: "all(result, # > 10)", + FailureCondition: "all(result, # < 10)", + Provider: v1alpha1.MetricProvider{ + Prometheus: &v1alpha1.PrometheusMetric{ + Query: "test", + RangeQuery: &v1alpha1.PrometheusRangeQueryArgs{ + Start: `date("2023-08-14 00:00:00", "2006-01-02 15:04:05", "UTC") - duration("1h")`, + End: `now() - duration("??")`, + Step: "1m", + }, + }, + }, + } + expectedErr := fmt.Errorf(`failed to parse rangeQuery.end as time: time: invalid duration "??"`) + + p, err := NewPrometheusProvider(mock, e, metric) + + measurement := p.Run(newAnalysisRun(), metric) + assert.NotNil(t, measurement.StartedAt) + assert.NoError(t, err) + assert.Equal(t, expectedErr.Error(), measurement.Message) + assert.Equal(t, "", measurement.Value) + assert.NotNil(t, measurement.FinishedAt) + assert.Equal(t, v1alpha1.AnalysisPhaseError, measurement.Phase) +} + +func TestRunUnparsableStep(t *testing.T) { + e := log.Entry{} + mock := &mockAPI{ + value: newMatrix(10), + } + metric := v1alpha1.Metric{ + Name: "foo", + SuccessCondition: "all(result, # > 10)", + FailureCondition: "all(result, # < 10)", + Provider: v1alpha1.MetricProvider{ + Prometheus: &v1alpha1.PrometheusMetric{ + Query: "test", + RangeQuery: &v1alpha1.PrometheusRangeQueryArgs{ + Start: `date("2023-08-14 00:00:00", "2006-01-02 15:04:05", "UTC") - duration("1h")`, + End: `date("2023-08-14 00:00:00", "2006-01-02 15:04:05", "UTC")`, + Step: "??", + }, + }, + }, + } + expectedErr := fmt.Errorf("failed to parse rangeQuery.step as duration: time: invalid duration \"??\"") + + p, err := NewPrometheusProvider(mock, e, metric) + + measurement := p.Run(newAnalysisRun(), metric) + assert.NotNil(t, measurement.StartedAt) + assert.NoError(t, err) + assert.Equal(t, expectedErr.Error(), measurement.Message) + assert.Equal(t, "", measurement.Value) + assert.NotNil(t, measurement.FinishedAt) + assert.Equal(t, v1alpha1.AnalysisPhaseError, measurement.Phase) +} + func TestRunSuccessfullyWithEnv(t *testing.T) { e := log.Entry{} - mock := mockAPI{ + mock := &mockAPI{ value: newScalar(10), } address := "http://127.0.0.1:9090" @@ -115,7 +277,7 @@ func TestRunSuccessfullyWithEnv(t *testing.T) { func TestRunSuccessfullyWithWarning(t *testing.T) { e := log.NewEntry(log.New()) - mock := mockAPI{ + mock := &mockAPI{ value: newScalar(10), warnings: v1.Warnings([]string{"warning", "warning2"}), } @@ -141,7 +303,7 @@ func TestRunSuccessfullyWithWarning(t *testing.T) { func TestRunSuccessfullyWithWarningWithEnv(t *testing.T) { e := log.NewEntry(log.New()) - mock := mockAPI{ + mock := &mockAPI{ value: newScalar(10), warnings: v1.Warnings([]string{"warning", "warning2"}), } @@ -168,7 +330,7 @@ func TestRunSuccessfullyWithWarningWithEnv(t *testing.T) { func TestRunWithQueryError(t *testing.T) { e := log.NewEntry(log.New()) expectedErr := fmt.Errorf("bad big bug :(") - mock := mockAPI{ + mock := &mockAPI{ err: expectedErr, } metric := v1alpha1.Metric{ @@ -194,7 +356,7 @@ func TestRunWithQueryError(t *testing.T) { func TestRunWithResolveArgsError(t *testing.T) { e := log.Entry{} expectedErr := fmt.Errorf("failed to resolve {{args.var}}") - mock := mockAPI{ + mock := &mockAPI{ err: expectedErr, } metric := v1alpha1.Metric{ @@ -217,7 +379,7 @@ func TestRunWithResolveArgsError(t *testing.T) { func TestGetStatusReturnsResolvedQuery(t *testing.T) { e := log.Entry{} - mock := mockAPI{} + mock := &mockAPI{} metric := v1alpha1.Metric{ Name: "foo", Provider: v1alpha1.MetricProvider{ @@ -235,7 +397,7 @@ func TestGetStatusReturnsResolvedQuery(t *testing.T) { func TestRunWithEvaluationError(t *testing.T) { e := log.WithField("", "") - mock := mockAPI{} + mock := &mockAPI{} metric := v1alpha1.Metric{ Name: "foo", SuccessCondition: "result == 10", @@ -258,7 +420,7 @@ func TestRunWithEvaluationError(t *testing.T) { func TestResume(t *testing.T) { e := log.WithField("", "") - mock := mockAPI{} + mock := &mockAPI{} metric := v1alpha1.Metric{ Name: "foo", SuccessCondition: "result == 10", @@ -282,7 +444,7 @@ func TestResume(t *testing.T) { func TestTerminate(t *testing.T) { e := log.NewEntry(log.New()) - mock := mockAPI{} + mock := &mockAPI{} metric := v1alpha1.Metric{} p, err := NewPrometheusProvider(mock, *e, metric) assert.NoError(t, err) @@ -297,7 +459,7 @@ func TestTerminate(t *testing.T) { func TestGarbageCollect(t *testing.T) { e := log.NewEntry(log.New()) - mock := mockAPI{} + mock := &mockAPI{} metric := v1alpha1.Metric{} p, err := NewPrometheusProvider(mock, *e, metric) assert.NoError(t, err) @@ -510,7 +672,7 @@ func TestNewPrometheusAddressNotConfigured(t *testing.T) { func TestNewPrometheusNegativeTimeout(t *testing.T) { e := log.Entry{} - mock := mockAPI{ + mock := &mockAPI{ value: newScalar(10), } timeout := int64(-20) diff --git a/pkg/apiclient/rollout/rollout.swagger.json b/pkg/apiclient/rollout/rollout.swagger.json index 3a74f48a24..336732288c 100755 --- a/pkg/apiclient/rollout/rollout.swagger.json +++ b/pkg/apiclient/rollout/rollout.swagger.json @@ -1815,10 +1815,32 @@ "$ref": "#/definitions/github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.WebMetricHeader" }, "title": "Headers are optional HTTP headers to use in the request\n+optional\n+patchMergeKey=key\n+patchStrategy=merge" + }, + "rangeQuery": { + "$ref": "#/definitions/github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PrometheusRangeQueryArgs", + "title": "Arguments for prometheus\n+optional" } }, "title": "PrometheusMetric defines the prometheus query to perform canary analysis" }, + "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PrometheusRangeQueryArgs": { + "type": "object", + "properties": { + "start": { + "type": "string", + "title": "The start time to query in expr format e.g. now(), now() - duration(\"1h\"), now() - duration(\"{{args.lookback_duration}}\")" + }, + "end": { + "type": "string", + "title": "The end time to query in expr format e.g. now(), now() - duration(\"1h\"), now() - duration(\"{{args.lookback_duration}}\")" + }, + "step": { + "type": "string", + "description": "The maximum time between two slices from the start to end (e.g. 30s, 5m, 1h)." + } + }, + "title": "Arguments to perform a prometheus range query" + }, "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.RequiredDuringSchedulingIgnoredDuringExecution": { "type": "object", "title": "RequiredDuringSchedulingIgnoredDuringExecution defines inter-pod scheduling rule to be RequiredDuringSchedulingIgnoredDuringExecution" diff --git a/pkg/apis/rollouts/v1alpha1/analysis_types.go b/pkg/apis/rollouts/v1alpha1/analysis_types.go index 3a287ec856..a61d54f71d 100644 --- a/pkg/apis/rollouts/v1alpha1/analysis_types.go +++ b/pkg/apis/rollouts/v1alpha1/analysis_types.go @@ -218,6 +218,16 @@ func (as AnalysisPhase) Completed() bool { return false } +// Arguments to perform a prometheus range query +type PrometheusRangeQueryArgs struct { + // The start time to query in expr format e.g. now(), now() - duration("1h"), now() - duration("{{args.lookback_duration}}") + Start string `json:"start,omitempty" protobuf:"bytes,1,opt,name=start"` + // The end time to query in expr format e.g. now(), now() - duration("1h"), now() - duration("{{args.lookback_duration}}") + End string `json:"end,omitempty" protobuf:"bytes,2,opt,name=end"` + // The maximum time between two slices from the start to end (e.g. 30s, 5m, 1h). + Step DurationString `json:"step,omitempty" protobuf:"bytes,3,opt,name=step,casttype=DurationString"` +} + // PrometheusMetric defines the prometheus query to perform canary analysis type PrometheusMetric struct { // Address is the HTTP address and port of the prometheus server @@ -237,6 +247,9 @@ type PrometheusMetric struct { // +patchMergeKey=key // +patchStrategy=merge Headers []WebMetricHeader `json:"headers,omitempty" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,6,opt,name=headers"` + // Arguments for prometheus + // +optional + RangeQuery *PrometheusRangeQueryArgs `json:"rangeQuery,omitempty" protobuf:"bytes,7,opt,name=rangeQuery"` } // Authentication method diff --git a/pkg/apis/rollouts/v1alpha1/generated.pb.go b/pkg/apis/rollouts/v1alpha1/generated.pb.go index cab169a9d0..59df12b40f 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.pb.go +++ b/pkg/apis/rollouts/v1alpha1/generated.pb.go @@ -2065,12 +2065,40 @@ func (m *PrometheusMetric) XXX_DiscardUnknown() { var xxx_messageInfo_PrometheusMetric proto.InternalMessageInfo +func (m *PrometheusRangeQueryArgs) Reset() { *m = PrometheusRangeQueryArgs{} } +func (*PrometheusRangeQueryArgs) ProtoMessage() {} +func (*PrometheusRangeQueryArgs) Descriptor() ([]byte, []int) { + return fileDescriptor_e0e705f843545fab, []int{72} +} +func (m *PrometheusRangeQueryArgs) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PrometheusRangeQueryArgs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *PrometheusRangeQueryArgs) XXX_Merge(src proto.Message) { + xxx_messageInfo_PrometheusRangeQueryArgs.Merge(m, src) +} +func (m *PrometheusRangeQueryArgs) XXX_Size() int { + return m.Size() +} +func (m *PrometheusRangeQueryArgs) XXX_DiscardUnknown() { + xxx_messageInfo_PrometheusRangeQueryArgs.DiscardUnknown(m) +} + +var xxx_messageInfo_PrometheusRangeQueryArgs proto.InternalMessageInfo + func (m *RequiredDuringSchedulingIgnoredDuringExecution) Reset() { *m = RequiredDuringSchedulingIgnoredDuringExecution{} } func (*RequiredDuringSchedulingIgnoredDuringExecution) ProtoMessage() {} func (*RequiredDuringSchedulingIgnoredDuringExecution) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{72} + return fileDescriptor_e0e705f843545fab, []int{73} } func (m *RequiredDuringSchedulingIgnoredDuringExecution) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2098,7 +2126,7 @@ var xxx_messageInfo_RequiredDuringSchedulingIgnoredDuringExecution proto.Interna func (m *RollbackWindowSpec) Reset() { *m = RollbackWindowSpec{} } func (*RollbackWindowSpec) ProtoMessage() {} func (*RollbackWindowSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{73} + return fileDescriptor_e0e705f843545fab, []int{74} } func (m *RollbackWindowSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2126,7 +2154,7 @@ var xxx_messageInfo_RollbackWindowSpec proto.InternalMessageInfo func (m *Rollout) Reset() { *m = Rollout{} } func (*Rollout) ProtoMessage() {} func (*Rollout) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{74} + return fileDescriptor_e0e705f843545fab, []int{75} } func (m *Rollout) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2154,7 +2182,7 @@ var xxx_messageInfo_Rollout proto.InternalMessageInfo func (m *RolloutAnalysis) Reset() { *m = RolloutAnalysis{} } func (*RolloutAnalysis) ProtoMessage() {} func (*RolloutAnalysis) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{75} + return fileDescriptor_e0e705f843545fab, []int{76} } func (m *RolloutAnalysis) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2182,7 +2210,7 @@ var xxx_messageInfo_RolloutAnalysis proto.InternalMessageInfo func (m *RolloutAnalysisBackground) Reset() { *m = RolloutAnalysisBackground{} } func (*RolloutAnalysisBackground) ProtoMessage() {} func (*RolloutAnalysisBackground) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{76} + return fileDescriptor_e0e705f843545fab, []int{77} } func (m *RolloutAnalysisBackground) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2210,7 +2238,7 @@ var xxx_messageInfo_RolloutAnalysisBackground proto.InternalMessageInfo func (m *RolloutAnalysisRunStatus) Reset() { *m = RolloutAnalysisRunStatus{} } func (*RolloutAnalysisRunStatus) ProtoMessage() {} func (*RolloutAnalysisRunStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{77} + return fileDescriptor_e0e705f843545fab, []int{78} } func (m *RolloutAnalysisRunStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2238,7 +2266,7 @@ var xxx_messageInfo_RolloutAnalysisRunStatus proto.InternalMessageInfo func (m *RolloutCondition) Reset() { *m = RolloutCondition{} } func (*RolloutCondition) ProtoMessage() {} func (*RolloutCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{78} + return fileDescriptor_e0e705f843545fab, []int{79} } func (m *RolloutCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2266,7 +2294,7 @@ var xxx_messageInfo_RolloutCondition proto.InternalMessageInfo func (m *RolloutExperimentStep) Reset() { *m = RolloutExperimentStep{} } func (*RolloutExperimentStep) ProtoMessage() {} func (*RolloutExperimentStep) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{79} + return fileDescriptor_e0e705f843545fab, []int{80} } func (m *RolloutExperimentStep) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2296,7 +2324,7 @@ func (m *RolloutExperimentStepAnalysisTemplateRef) Reset() { } func (*RolloutExperimentStepAnalysisTemplateRef) ProtoMessage() {} func (*RolloutExperimentStepAnalysisTemplateRef) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{80} + return fileDescriptor_e0e705f843545fab, []int{81} } func (m *RolloutExperimentStepAnalysisTemplateRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2324,7 +2352,7 @@ var xxx_messageInfo_RolloutExperimentStepAnalysisTemplateRef proto.InternalMessa func (m *RolloutExperimentTemplate) Reset() { *m = RolloutExperimentTemplate{} } func (*RolloutExperimentTemplate) ProtoMessage() {} func (*RolloutExperimentTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{81} + return fileDescriptor_e0e705f843545fab, []int{82} } func (m *RolloutExperimentTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2352,7 +2380,7 @@ var xxx_messageInfo_RolloutExperimentTemplate proto.InternalMessageInfo func (m *RolloutList) Reset() { *m = RolloutList{} } func (*RolloutList) ProtoMessage() {} func (*RolloutList) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{82} + return fileDescriptor_e0e705f843545fab, []int{83} } func (m *RolloutList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2380,7 +2408,7 @@ var xxx_messageInfo_RolloutList proto.InternalMessageInfo func (m *RolloutPause) Reset() { *m = RolloutPause{} } func (*RolloutPause) ProtoMessage() {} func (*RolloutPause) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{83} + return fileDescriptor_e0e705f843545fab, []int{84} } func (m *RolloutPause) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2408,7 +2436,7 @@ var xxx_messageInfo_RolloutPause proto.InternalMessageInfo func (m *RolloutSpec) Reset() { *m = RolloutSpec{} } func (*RolloutSpec) ProtoMessage() {} func (*RolloutSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{84} + return fileDescriptor_e0e705f843545fab, []int{85} } func (m *RolloutSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2436,7 +2464,7 @@ var xxx_messageInfo_RolloutSpec proto.InternalMessageInfo func (m *RolloutStatus) Reset() { *m = RolloutStatus{} } func (*RolloutStatus) ProtoMessage() {} func (*RolloutStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{85} + return fileDescriptor_e0e705f843545fab, []int{86} } func (m *RolloutStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2464,7 +2492,7 @@ var xxx_messageInfo_RolloutStatus proto.InternalMessageInfo func (m *RolloutStrategy) Reset() { *m = RolloutStrategy{} } func (*RolloutStrategy) ProtoMessage() {} func (*RolloutStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{86} + return fileDescriptor_e0e705f843545fab, []int{87} } func (m *RolloutStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2492,7 +2520,7 @@ var xxx_messageInfo_RolloutStrategy proto.InternalMessageInfo func (m *RolloutTrafficRouting) Reset() { *m = RolloutTrafficRouting{} } func (*RolloutTrafficRouting) ProtoMessage() {} func (*RolloutTrafficRouting) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{87} + return fileDescriptor_e0e705f843545fab, []int{88} } func (m *RolloutTrafficRouting) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2520,7 +2548,7 @@ var xxx_messageInfo_RolloutTrafficRouting proto.InternalMessageInfo func (m *RouteMatch) Reset() { *m = RouteMatch{} } func (*RouteMatch) ProtoMessage() {} func (*RouteMatch) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{88} + return fileDescriptor_e0e705f843545fab, []int{89} } func (m *RouteMatch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2548,7 +2576,7 @@ var xxx_messageInfo_RouteMatch proto.InternalMessageInfo func (m *RunSummary) Reset() { *m = RunSummary{} } func (*RunSummary) ProtoMessage() {} func (*RunSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{89} + return fileDescriptor_e0e705f843545fab, []int{90} } func (m *RunSummary) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2576,7 +2604,7 @@ var xxx_messageInfo_RunSummary proto.InternalMessageInfo func (m *SMITrafficRouting) Reset() { *m = SMITrafficRouting{} } func (*SMITrafficRouting) ProtoMessage() {} func (*SMITrafficRouting) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{90} + return fileDescriptor_e0e705f843545fab, []int{91} } func (m *SMITrafficRouting) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2604,7 +2632,7 @@ var xxx_messageInfo_SMITrafficRouting proto.InternalMessageInfo func (m *ScopeDetail) Reset() { *m = ScopeDetail{} } func (*ScopeDetail) ProtoMessage() {} func (*ScopeDetail) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{91} + return fileDescriptor_e0e705f843545fab, []int{92} } func (m *ScopeDetail) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2632,7 +2660,7 @@ var xxx_messageInfo_ScopeDetail proto.InternalMessageInfo func (m *SecretKeyRef) Reset() { *m = SecretKeyRef{} } func (*SecretKeyRef) ProtoMessage() {} func (*SecretKeyRef) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{92} + return fileDescriptor_e0e705f843545fab, []int{93} } func (m *SecretKeyRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2660,7 +2688,7 @@ var xxx_messageInfo_SecretKeyRef proto.InternalMessageInfo func (m *SetCanaryScale) Reset() { *m = SetCanaryScale{} } func (*SetCanaryScale) ProtoMessage() {} func (*SetCanaryScale) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{93} + return fileDescriptor_e0e705f843545fab, []int{94} } func (m *SetCanaryScale) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2688,7 +2716,7 @@ var xxx_messageInfo_SetCanaryScale proto.InternalMessageInfo func (m *SetHeaderRoute) Reset() { *m = SetHeaderRoute{} } func (*SetHeaderRoute) ProtoMessage() {} func (*SetHeaderRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{94} + return fileDescriptor_e0e705f843545fab, []int{95} } func (m *SetHeaderRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2716,7 +2744,7 @@ var xxx_messageInfo_SetHeaderRoute proto.InternalMessageInfo func (m *SetMirrorRoute) Reset() { *m = SetMirrorRoute{} } func (*SetMirrorRoute) ProtoMessage() {} func (*SetMirrorRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{95} + return fileDescriptor_e0e705f843545fab, []int{96} } func (m *SetMirrorRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2744,7 +2772,7 @@ var xxx_messageInfo_SetMirrorRoute proto.InternalMessageInfo func (m *Sigv4Config) Reset() { *m = Sigv4Config{} } func (*Sigv4Config) ProtoMessage() {} func (*Sigv4Config) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{96} + return fileDescriptor_e0e705f843545fab, []int{97} } func (m *Sigv4Config) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2772,7 +2800,7 @@ var xxx_messageInfo_Sigv4Config proto.InternalMessageInfo func (m *SkyWalkingMetric) Reset() { *m = SkyWalkingMetric{} } func (*SkyWalkingMetric) ProtoMessage() {} func (*SkyWalkingMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{97} + return fileDescriptor_e0e705f843545fab, []int{98} } func (m *SkyWalkingMetric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2800,7 +2828,7 @@ var xxx_messageInfo_SkyWalkingMetric proto.InternalMessageInfo func (m *StickinessConfig) Reset() { *m = StickinessConfig{} } func (*StickinessConfig) ProtoMessage() {} func (*StickinessConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{98} + return fileDescriptor_e0e705f843545fab, []int{99} } func (m *StickinessConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2828,7 +2856,7 @@ var xxx_messageInfo_StickinessConfig proto.InternalMessageInfo func (m *StringMatch) Reset() { *m = StringMatch{} } func (*StringMatch) ProtoMessage() {} func (*StringMatch) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{99} + return fileDescriptor_e0e705f843545fab, []int{100} } func (m *StringMatch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2856,7 +2884,7 @@ var xxx_messageInfo_StringMatch proto.InternalMessageInfo func (m *TCPRoute) Reset() { *m = TCPRoute{} } func (*TCPRoute) ProtoMessage() {} func (*TCPRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{100} + return fileDescriptor_e0e705f843545fab, []int{101} } func (m *TCPRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2884,7 +2912,7 @@ var xxx_messageInfo_TCPRoute proto.InternalMessageInfo func (m *TLSRoute) Reset() { *m = TLSRoute{} } func (*TLSRoute) ProtoMessage() {} func (*TLSRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{101} + return fileDescriptor_e0e705f843545fab, []int{102} } func (m *TLSRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2912,7 +2940,7 @@ var xxx_messageInfo_TLSRoute proto.InternalMessageInfo func (m *TTLStrategy) Reset() { *m = TTLStrategy{} } func (*TTLStrategy) ProtoMessage() {} func (*TTLStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{102} + return fileDescriptor_e0e705f843545fab, []int{103} } func (m *TTLStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2940,7 +2968,7 @@ var xxx_messageInfo_TTLStrategy proto.InternalMessageInfo func (m *TemplateService) Reset() { *m = TemplateService{} } func (*TemplateService) ProtoMessage() {} func (*TemplateService) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{103} + return fileDescriptor_e0e705f843545fab, []int{104} } func (m *TemplateService) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2968,7 +2996,7 @@ var xxx_messageInfo_TemplateService proto.InternalMessageInfo func (m *TemplateSpec) Reset() { *m = TemplateSpec{} } func (*TemplateSpec) ProtoMessage() {} func (*TemplateSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{104} + return fileDescriptor_e0e705f843545fab, []int{105} } func (m *TemplateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2996,7 +3024,7 @@ var xxx_messageInfo_TemplateSpec proto.InternalMessageInfo func (m *TemplateStatus) Reset() { *m = TemplateStatus{} } func (*TemplateStatus) ProtoMessage() {} func (*TemplateStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{105} + return fileDescriptor_e0e705f843545fab, []int{106} } func (m *TemplateStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3024,7 +3052,7 @@ var xxx_messageInfo_TemplateStatus proto.InternalMessageInfo func (m *TraefikTrafficRouting) Reset() { *m = TraefikTrafficRouting{} } func (*TraefikTrafficRouting) ProtoMessage() {} func (*TraefikTrafficRouting) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{106} + return fileDescriptor_e0e705f843545fab, []int{107} } func (m *TraefikTrafficRouting) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3052,7 +3080,7 @@ var xxx_messageInfo_TraefikTrafficRouting proto.InternalMessageInfo func (m *TrafficWeights) Reset() { *m = TrafficWeights{} } func (*TrafficWeights) ProtoMessage() {} func (*TrafficWeights) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{107} + return fileDescriptor_e0e705f843545fab, []int{108} } func (m *TrafficWeights) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3080,7 +3108,7 @@ var xxx_messageInfo_TrafficWeights proto.InternalMessageInfo func (m *ValueFrom) Reset() { *m = ValueFrom{} } func (*ValueFrom) ProtoMessage() {} func (*ValueFrom) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{108} + return fileDescriptor_e0e705f843545fab, []int{109} } func (m *ValueFrom) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3108,7 +3136,7 @@ var xxx_messageInfo_ValueFrom proto.InternalMessageInfo func (m *WavefrontMetric) Reset() { *m = WavefrontMetric{} } func (*WavefrontMetric) ProtoMessage() {} func (*WavefrontMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{109} + return fileDescriptor_e0e705f843545fab, []int{110} } func (m *WavefrontMetric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3136,7 +3164,7 @@ var xxx_messageInfo_WavefrontMetric proto.InternalMessageInfo func (m *WebMetric) Reset() { *m = WebMetric{} } func (*WebMetric) ProtoMessage() {} func (*WebMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{110} + return fileDescriptor_e0e705f843545fab, []int{111} } func (m *WebMetric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3164,7 +3192,7 @@ var xxx_messageInfo_WebMetric proto.InternalMessageInfo func (m *WebMetricHeader) Reset() { *m = WebMetricHeader{} } func (*WebMetricHeader) ProtoMessage() {} func (*WebMetricHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{111} + return fileDescriptor_e0e705f843545fab, []int{112} } func (m *WebMetricHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3192,7 +3220,7 @@ var xxx_messageInfo_WebMetricHeader proto.InternalMessageInfo func (m *WeightDestination) Reset() { *m = WeightDestination{} } func (*WeightDestination) ProtoMessage() {} func (*WeightDestination) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{112} + return fileDescriptor_e0e705f843545fab, []int{113} } func (m *WeightDestination) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3299,6 +3327,7 @@ func init() { proto.RegisterMapType((map[string]string)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PodTemplateMetadata.LabelsEntry") proto.RegisterType((*PreferredDuringSchedulingIgnoredDuringExecution)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PreferredDuringSchedulingIgnoredDuringExecution") proto.RegisterType((*PrometheusMetric)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PrometheusMetric") + proto.RegisterType((*PrometheusRangeQueryArgs)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PrometheusRangeQueryArgs") proto.RegisterType((*RequiredDuringSchedulingIgnoredDuringExecution)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.RequiredDuringSchedulingIgnoredDuringExecution") proto.RegisterType((*RollbackWindowSpec)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.RollbackWindowSpec") proto.RegisterType((*Rollout)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.Rollout") @@ -3349,543 +3378,547 @@ func init() { } var fileDescriptor_e0e705f843545fab = []byte{ - // 8574 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x8c, 0x24, 0xd7, - 0x71, 0x98, 0x7a, 0x67, 0x67, 0x77, 0xa6, 0x66, 0xbf, 0xee, 0xdd, 0x1d, 0xb9, 0x5c, 0x92, 0x37, - 0x54, 0xd3, 0x61, 0x48, 0x8b, 0xda, 0x95, 0xf8, 0x91, 0x50, 0xa2, 0xc2, 0x64, 0x66, 0xf7, 0x8e, - 0xb7, 0xc7, 0xdd, 0xbb, 0x65, 0xcd, 0x1e, 0xcf, 0x96, 0x44, 0x5b, 0xbd, 0x33, 0x6f, 0x67, 0xfb, - 0x76, 0xa6, 0x7b, 0xd4, 0xdd, 0xb3, 0x77, 0x4b, 0x11, 0x16, 0x25, 0x81, 0xb2, 0xac, 0x48, 0xb0, - 0x12, 0x5b, 0x08, 0x82, 0x04, 0x81, 0x62, 0x18, 0x70, 0x12, 0xfb, 0x47, 0x60, 0x38, 0x48, 0x7e, - 0x18, 0x88, 0x11, 0xc5, 0x86, 0x02, 0xc4, 0x81, 0xfc, 0x23, 0x91, 0x13, 0xc0, 0xeb, 0x68, 0x9d, - 0x3f, 0x31, 0x12, 0x08, 0x09, 0x14, 0x18, 0xe1, 0x8f, 0x20, 0x78, 0x9f, 0xfd, 0xba, 0xa7, 0x67, - 0xbf, 0xa6, 0xf7, 0x48, 0x27, 0xfe, 0x37, 0xf3, 0xaa, 0x5e, 0x55, 0xf5, 0xfb, 0xac, 0x57, 0xaf, - 0xaa, 0x1e, 0xac, 0xb5, 0xdd, 0x68, 0xa7, 0xbf, 0xb5, 0xd8, 0xf4, 0xbb, 0x4b, 0x4e, 0xd0, 0xf6, - 0x7b, 0x81, 0x7f, 0x97, 0xff, 0xf8, 0x68, 0xe0, 0x77, 0x3a, 0x7e, 0x3f, 0x0a, 0x97, 0x7a, 0xbb, - 0xed, 0x25, 0xa7, 0xe7, 0x86, 0x4b, 0xba, 0x64, 0xef, 0xe3, 0x4e, 0xa7, 0xb7, 0xe3, 0x7c, 0x7c, - 0xa9, 0x4d, 0x3d, 0x1a, 0x38, 0x11, 0x6d, 0x2d, 0xf6, 0x02, 0x3f, 0xf2, 0xc9, 0xa7, 0x62, 0x6a, - 0x8b, 0x8a, 0x1a, 0xff, 0xf1, 0xb3, 0xaa, 0xee, 0x62, 0x6f, 0xb7, 0xbd, 0xc8, 0xa8, 0x2d, 0xea, - 0x12, 0x45, 0x6d, 0xe1, 0xa3, 0x86, 0x2c, 0x6d, 0xbf, 0xed, 0x2f, 0x71, 0xa2, 0x5b, 0xfd, 0x6d, - 0xfe, 0x8f, 0xff, 0xe1, 0xbf, 0x04, 0xb3, 0x85, 0x27, 0x77, 0x5f, 0x0a, 0x17, 0x5d, 0x9f, 0xc9, - 0xb6, 0xb4, 0xe5, 0x44, 0xcd, 0x9d, 0xa5, 0xbd, 0x01, 0x89, 0x16, 0x6c, 0x03, 0xa9, 0xe9, 0x07, - 0x34, 0x0b, 0xe7, 0x85, 0x18, 0xa7, 0xeb, 0x34, 0x77, 0x5c, 0x8f, 0x06, 0xfb, 0xf1, 0x57, 0x77, - 0x69, 0xe4, 0x64, 0xd5, 0x5a, 0x1a, 0x56, 0x2b, 0xe8, 0x7b, 0x91, 0xdb, 0xa5, 0x03, 0x15, 0xfe, - 0xca, 0x71, 0x15, 0xc2, 0xe6, 0x0e, 0xed, 0x3a, 0x03, 0xf5, 0x9e, 0x1f, 0x56, 0xaf, 0x1f, 0xb9, - 0x9d, 0x25, 0xd7, 0x8b, 0xc2, 0x28, 0x48, 0x57, 0xb2, 0x7f, 0x54, 0x80, 0x72, 0x6d, 0xad, 0xde, - 0x88, 0x9c, 0xa8, 0x1f, 0x92, 0xaf, 0x5a, 0x30, 0xd5, 0xf1, 0x9d, 0x56, 0xdd, 0xe9, 0x38, 0x5e, - 0x93, 0x06, 0xf3, 0xd6, 0x13, 0xd6, 0xd3, 0x95, 0xe7, 0xd6, 0x16, 0x47, 0xe9, 0xaf, 0xc5, 0xda, - 0xbd, 0x10, 0x69, 0xe8, 0xf7, 0x83, 0x26, 0x45, 0xba, 0x5d, 0xbf, 0xf4, 0xbd, 0x83, 0xea, 0x87, - 0x0e, 0x0f, 0xaa, 0x53, 0x6b, 0x06, 0x27, 0x4c, 0xf0, 0x25, 0xdf, 0xb6, 0xe0, 0x42, 0xd3, 0xf1, - 0x9c, 0x60, 0x7f, 0xd3, 0x09, 0xda, 0x34, 0x7a, 0x35, 0xf0, 0xfb, 0xbd, 0xf9, 0xb1, 0x73, 0x90, - 0xe6, 0x11, 0x29, 0xcd, 0x85, 0xe5, 0x34, 0x3b, 0x1c, 0x94, 0x80, 0xcb, 0x15, 0x46, 0xce, 0x56, - 0x87, 0x9a, 0x72, 0x15, 0xce, 0x53, 0xae, 0x46, 0x9a, 0x1d, 0x0e, 0x4a, 0x40, 0x9e, 0x81, 0x49, - 0xd7, 0x6b, 0x07, 0x34, 0x0c, 0xe7, 0xc7, 0x9f, 0xb0, 0x9e, 0x2e, 0xd7, 0x67, 0x65, 0xf5, 0xc9, - 0x55, 0x51, 0x8c, 0x0a, 0x6e, 0xff, 0x66, 0x01, 0x2e, 0xd4, 0xd6, 0xea, 0x9b, 0x81, 0xb3, 0xbd, - 0xed, 0x36, 0xd1, 0xef, 0x47, 0xae, 0xd7, 0x36, 0x09, 0x58, 0x47, 0x13, 0x20, 0x2f, 0x42, 0x25, - 0xa4, 0xc1, 0x9e, 0xdb, 0xa4, 0x1b, 0x7e, 0x10, 0xf1, 0x4e, 0x29, 0xd6, 0x2f, 0x4a, 0xf4, 0x4a, - 0x23, 0x06, 0xa1, 0x89, 0xc7, 0xaa, 0x05, 0xbe, 0x1f, 0x49, 0x38, 0x6f, 0xb3, 0x72, 0x5c, 0x0d, - 0x63, 0x10, 0x9a, 0x78, 0x64, 0x05, 0xe6, 0x1c, 0xcf, 0xf3, 0x23, 0x27, 0x72, 0x7d, 0x6f, 0x23, - 0xa0, 0xdb, 0xee, 0x7d, 0xf9, 0x89, 0xf3, 0xb2, 0xee, 0x5c, 0x2d, 0x05, 0xc7, 0x81, 0x1a, 0xe4, - 0x5b, 0x16, 0xcc, 0x85, 0x91, 0xdb, 0xdc, 0x75, 0x3d, 0x1a, 0x86, 0xcb, 0xbe, 0xb7, 0xed, 0xb6, - 0xe7, 0x8b, 0xbc, 0xdb, 0x6e, 0x8e, 0xd6, 0x6d, 0x8d, 0x14, 0xd5, 0xfa, 0x25, 0x26, 0x52, 0xba, - 0x14, 0x07, 0xb8, 0x93, 0x8f, 0x40, 0x59, 0xb6, 0x28, 0x0d, 0xe7, 0x27, 0x9e, 0x28, 0x3c, 0x5d, - 0xae, 0x4f, 0x1f, 0x1e, 0x54, 0xcb, 0xab, 0xaa, 0x10, 0x63, 0xb8, 0xbd, 0x02, 0xf3, 0xb5, 0xee, - 0x96, 0x13, 0x86, 0x4e, 0xcb, 0x0f, 0x52, 0x5d, 0xf7, 0x34, 0x94, 0xba, 0x4e, 0xaf, 0xe7, 0x7a, - 0x6d, 0xd6, 0x77, 0x8c, 0xce, 0xd4, 0xe1, 0x41, 0xb5, 0xb4, 0x2e, 0xcb, 0x50, 0x43, 0xed, 0xff, - 0x38, 0x06, 0x95, 0x9a, 0xe7, 0x74, 0xf6, 0x43, 0x37, 0xc4, 0xbe, 0x47, 0x3e, 0x07, 0x25, 0xb6, - 0x6a, 0xb5, 0x9c, 0xc8, 0x91, 0x33, 0xfd, 0x63, 0x8b, 0x62, 0x11, 0x59, 0x34, 0x17, 0x91, 0xf8, - 0xf3, 0x19, 0xf6, 0xe2, 0xde, 0xc7, 0x17, 0x6f, 0x6d, 0xdd, 0xa5, 0xcd, 0x68, 0x9d, 0x46, 0x4e, - 0x9d, 0xc8, 0x5e, 0x80, 0xb8, 0x0c, 0x35, 0x55, 0xe2, 0xc3, 0x78, 0xd8, 0xa3, 0x4d, 0x39, 0x73, - 0xd7, 0x47, 0x9c, 0x21, 0xb1, 0xe8, 0x8d, 0x1e, 0x6d, 0xd6, 0xa7, 0x24, 0xeb, 0x71, 0xf6, 0x0f, - 0x39, 0x23, 0x72, 0x0f, 0x26, 0x42, 0xbe, 0x96, 0xc9, 0x49, 0x79, 0x2b, 0x3f, 0x96, 0x9c, 0x6c, - 0x7d, 0x46, 0x32, 0x9d, 0x10, 0xff, 0x51, 0xb2, 0xb3, 0xff, 0x93, 0x05, 0x17, 0x0d, 0xec, 0x5a, - 0xd0, 0xee, 0x77, 0xa9, 0x17, 0x91, 0x27, 0x60, 0xdc, 0x73, 0xba, 0x54, 0xce, 0x2a, 0x2d, 0xf2, - 0x4d, 0xa7, 0x4b, 0x91, 0x43, 0xc8, 0x93, 0x50, 0xdc, 0x73, 0x3a, 0x7d, 0xca, 0x1b, 0xa9, 0x5c, - 0x9f, 0x96, 0x28, 0xc5, 0x37, 0x58, 0x21, 0x0a, 0x18, 0x79, 0x1b, 0xca, 0xfc, 0xc7, 0xb5, 0xc0, - 0xef, 0xe6, 0xf4, 0x69, 0x52, 0xc2, 0x37, 0x14, 0x59, 0x31, 0xfc, 0xf4, 0x5f, 0x8c, 0x19, 0xda, - 0x7f, 0x6c, 0xc1, 0xac, 0xf1, 0x71, 0x6b, 0x6e, 0x18, 0x91, 0xcf, 0x0e, 0x0c, 0x9e, 0xc5, 0x93, - 0x0d, 0x1e, 0x56, 0x9b, 0x0f, 0x9d, 0x39, 0xf9, 0xa5, 0x25, 0x55, 0x62, 0x0c, 0x1c, 0x0f, 0x8a, - 0x6e, 0x44, 0xbb, 0xe1, 0xfc, 0xd8, 0x13, 0x85, 0xa7, 0x2b, 0xcf, 0xad, 0xe6, 0xd6, 0x8d, 0x71, - 0xfb, 0xae, 0x32, 0xfa, 0x28, 0xd8, 0xd8, 0xbf, 0x55, 0x48, 0x74, 0xdf, 0xba, 0x92, 0xe3, 0x5d, - 0x0b, 0x26, 0x3a, 0xce, 0x16, 0xed, 0x88, 0xb9, 0x55, 0x79, 0xee, 0xcd, 0xdc, 0x24, 0x51, 0x3c, - 0x16, 0xd7, 0x38, 0xfd, 0xab, 0x5e, 0x14, 0xec, 0xc7, 0xc3, 0x4b, 0x14, 0xa2, 0x64, 0x4e, 0xfe, - 0xae, 0x05, 0x95, 0x78, 0x55, 0x53, 0xcd, 0xb2, 0x95, 0xbf, 0x30, 0xf1, 0x62, 0x2a, 0x25, 0xd2, - 0x4b, 0xb4, 0x01, 0x41, 0x53, 0x96, 0x85, 0x4f, 0x40, 0xc5, 0xf8, 0x04, 0x32, 0x07, 0x85, 0x5d, - 0xba, 0x2f, 0x06, 0x3c, 0xb2, 0x9f, 0xe4, 0x52, 0x62, 0x84, 0xcb, 0x21, 0xfd, 0xc9, 0xb1, 0x97, - 0xac, 0x85, 0x57, 0x60, 0x2e, 0xcd, 0xf0, 0x34, 0xf5, 0xed, 0x7f, 0x5a, 0x4c, 0x0c, 0x4c, 0xb6, - 0x10, 0x10, 0x1f, 0x26, 0xbb, 0x34, 0x0a, 0xdc, 0xa6, 0xea, 0xb2, 0x95, 0xd1, 0x5a, 0x69, 0x9d, - 0x13, 0x8b, 0x37, 0x44, 0xf1, 0x3f, 0x44, 0xc5, 0x85, 0xec, 0xc0, 0xb8, 0x13, 0xb4, 0x55, 0x9f, - 0x5c, 0xcb, 0x67, 0x5a, 0xc6, 0x4b, 0x45, 0x2d, 0x68, 0x87, 0xc8, 0x39, 0x90, 0x25, 0x28, 0x47, - 0x34, 0xe8, 0xba, 0x9e, 0x13, 0x89, 0x1d, 0xb4, 0x54, 0xbf, 0x20, 0xd1, 0xca, 0x9b, 0x0a, 0x80, - 0x31, 0x0e, 0xe9, 0xc0, 0x44, 0x2b, 0xd8, 0xc7, 0xbe, 0x37, 0x3f, 0x9e, 0x47, 0x53, 0xac, 0x70, - 0x5a, 0xf1, 0x20, 0x15, 0xff, 0x51, 0xf2, 0x20, 0xbf, 0x6a, 0xc1, 0xa5, 0x2e, 0x75, 0xc2, 0x7e, - 0x40, 0xd9, 0x27, 0x20, 0x8d, 0xa8, 0xc7, 0x3a, 0x76, 0xbe, 0xc8, 0x99, 0xe3, 0xa8, 0xfd, 0x30, - 0x48, 0xb9, 0xfe, 0x98, 0x14, 0xe5, 0x52, 0x16, 0x14, 0x33, 0xa5, 0x21, 0x6f, 0x43, 0x25, 0x8a, - 0x3a, 0x8d, 0x88, 0xe9, 0xc1, 0xed, 0xfd, 0xf9, 0x09, 0xbe, 0x78, 0x8d, 0xb8, 0xc2, 0x6c, 0x6e, - 0xae, 0x29, 0x82, 0xf5, 0x59, 0x36, 0x5b, 0x8c, 0x02, 0x34, 0xd9, 0xd9, 0xff, 0xa2, 0x08, 0x17, - 0x06, 0xb6, 0x15, 0xf2, 0x02, 0x14, 0x7b, 0x3b, 0x4e, 0xa8, 0xf6, 0x89, 0x2b, 0x6a, 0x91, 0xda, - 0x60, 0x85, 0xef, 0x1d, 0x54, 0xa7, 0x55, 0x15, 0x5e, 0x80, 0x02, 0x99, 0x69, 0x6d, 0x5d, 0x1a, - 0x86, 0x4e, 0x5b, 0x6d, 0x1e, 0xc6, 0x20, 0xe5, 0xc5, 0xa8, 0xe0, 0xe4, 0xe7, 0x2d, 0x98, 0x16, - 0x03, 0x16, 0x69, 0xd8, 0xef, 0x44, 0x6c, 0x83, 0x64, 0x9d, 0x72, 0x23, 0x8f, 0xc9, 0x21, 0x48, - 0xd6, 0x2f, 0x4b, 0xee, 0xd3, 0x66, 0x69, 0x88, 0x49, 0xbe, 0xe4, 0x0e, 0x94, 0xc3, 0xc8, 0x09, - 0x22, 0xda, 0xaa, 0x45, 0x5c, 0x95, 0xab, 0x3c, 0xf7, 0x93, 0x27, 0xdb, 0x39, 0x36, 0xdd, 0x2e, - 0x15, 0xbb, 0x54, 0x43, 0x11, 0xc0, 0x98, 0x16, 0x79, 0x1b, 0x20, 0xe8, 0x7b, 0x8d, 0x7e, 0xb7, - 0xeb, 0x04, 0xfb, 0x52, 0xbb, 0xbb, 0x3e, 0xda, 0xe7, 0xa1, 0xa6, 0x17, 0x2b, 0x3a, 0x71, 0x19, - 0x1a, 0xfc, 0xc8, 0x97, 0x2c, 0x98, 0x16, 0xf3, 0x40, 0x49, 0x30, 0x91, 0xb3, 0x04, 0x17, 0x58, - 0xd3, 0xae, 0x98, 0x2c, 0x30, 0xc9, 0x91, 0xbc, 0x09, 0x95, 0xa6, 0xdf, 0xed, 0x75, 0xa8, 0x68, - 0xdc, 0xc9, 0x53, 0x37, 0x2e, 0x1f, 0xba, 0xcb, 0x31, 0x09, 0x34, 0xe9, 0xd9, 0xff, 0x3e, 0xa9, - 0xe3, 0xa8, 0x21, 0x4d, 0x3e, 0x03, 0x8f, 0x84, 0xfd, 0x66, 0x93, 0x86, 0xe1, 0x76, 0xbf, 0x83, - 0x7d, 0xef, 0xba, 0x1b, 0x46, 0x7e, 0xb0, 0xbf, 0xe6, 0x76, 0xdd, 0x88, 0x0f, 0xe8, 0x62, 0xfd, - 0xf1, 0xc3, 0x83, 0xea, 0x23, 0x8d, 0x61, 0x48, 0x38, 0xbc, 0x3e, 0x71, 0xe0, 0xd1, 0xbe, 0x37, - 0x9c, 0xbc, 0x38, 0x7e, 0x54, 0x0f, 0x0f, 0xaa, 0x8f, 0xde, 0x1e, 0x8e, 0x86, 0x47, 0xd1, 0xb0, - 0xff, 0xd4, 0x62, 0xdb, 0x90, 0xf8, 0xae, 0x4d, 0xda, 0xed, 0x75, 0xd8, 0xd2, 0x79, 0xfe, 0xca, - 0x71, 0x94, 0x50, 0x8e, 0x31, 0x9f, 0xbd, 0x5c, 0xc9, 0x3f, 0x4c, 0x43, 0xb6, 0xff, 0xab, 0x05, - 0x97, 0xd2, 0xc8, 0x0f, 0x40, 0xa1, 0x0b, 0x93, 0x0a, 0xdd, 0xcd, 0x7c, 0xbf, 0x76, 0x88, 0x56, - 0xf7, 0x0b, 0xc6, 0x80, 0x55, 0xa8, 0x48, 0xb7, 0xc9, 0x4b, 0x30, 0x15, 0xc9, 0xbf, 0x37, 0x63, - 0xe5, 0x5c, 0x1b, 0x26, 0x36, 0x0d, 0x18, 0x26, 0x30, 0x59, 0xcd, 0x66, 0xa7, 0x1f, 0x46, 0x34, - 0x68, 0x34, 0xfd, 0x9e, 0x58, 0x76, 0x4b, 0x71, 0xcd, 0x65, 0x03, 0x86, 0x09, 0x4c, 0xfb, 0x6f, - 0x16, 0x07, 0xdb, 0xfd, 0xff, 0x75, 0x7d, 0x25, 0x56, 0x3f, 0x0a, 0xef, 0xa7, 0xfa, 0x31, 0xfe, - 0x81, 0x52, 0x3f, 0xbe, 0x6c, 0x31, 0x2d, 0x4e, 0x0c, 0x80, 0x50, 0xaa, 0x46, 0xaf, 0xe7, 0x3b, - 0x1d, 0x90, 0x6e, 0x9b, 0x8a, 0xa1, 0xe4, 0x85, 0x31, 0x5b, 0xfb, 0x1f, 0x8d, 0xc3, 0x54, 0xcd, - 0x8b, 0xdc, 0xda, 0xf6, 0xb6, 0xeb, 0xb9, 0xd1, 0x3e, 0xf9, 0xc6, 0x18, 0x2c, 0xf5, 0x02, 0xba, - 0x4d, 0x83, 0x80, 0xb6, 0x56, 0xfa, 0x81, 0xeb, 0xb5, 0x1b, 0xcd, 0x1d, 0xda, 0xea, 0x77, 0x5c, - 0xaf, 0xbd, 0xda, 0xf6, 0x7c, 0x5d, 0x7c, 0xf5, 0x3e, 0x6d, 0xf6, 0x79, 0xbb, 0x8a, 0x55, 0xa2, - 0x3b, 0x9a, 0xec, 0x1b, 0xa7, 0x63, 0x5a, 0x7f, 0xfe, 0xf0, 0xa0, 0xba, 0x74, 0xca, 0x4a, 0x78, - 0xda, 0x4f, 0x23, 0x5f, 0x1b, 0x83, 0xc5, 0x80, 0x7e, 0xbe, 0xef, 0x9e, 0xbc, 0x35, 0xc4, 0x32, - 0xde, 0x19, 0x71, 0xbb, 0x3f, 0x15, 0xcf, 0xfa, 0x73, 0x87, 0x07, 0xd5, 0x53, 0xd6, 0xc1, 0x53, - 0x7e, 0x97, 0xbd, 0x01, 0x95, 0x5a, 0xcf, 0x0d, 0xdd, 0xfb, 0xe8, 0xf7, 0x23, 0x7a, 0x02, 0x83, - 0x46, 0x15, 0x8a, 0x41, 0xbf, 0x43, 0xc5, 0x02, 0x53, 0xae, 0x97, 0xd9, 0xb2, 0x8c, 0xac, 0x00, - 0x45, 0xb9, 0xfd, 0x65, 0xb6, 0x05, 0x71, 0x92, 0x29, 0x53, 0xd6, 0x5d, 0x28, 0x06, 0x8c, 0x89, - 0x1c, 0x59, 0xa3, 0x9e, 0xfa, 0x63, 0xa9, 0xa5, 0x10, 0xec, 0x27, 0x0a, 0x16, 0xf6, 0x77, 0xc7, - 0xe0, 0x72, 0xad, 0xd7, 0x5b, 0xa7, 0xe1, 0x4e, 0x4a, 0x8a, 0x5f, 0xb4, 0x60, 0x66, 0xcf, 0x0d, - 0xa2, 0xbe, 0xd3, 0x51, 0xd6, 0x4a, 0x21, 0x4f, 0x63, 0x54, 0x79, 0x38, 0xb7, 0x37, 0x12, 0xa4, - 0xeb, 0xe4, 0xf0, 0xa0, 0x3a, 0x93, 0x2c, 0xc3, 0x14, 0x7b, 0xf2, 0x77, 0x2c, 0x98, 0x93, 0x45, - 0x37, 0xfd, 0x16, 0x35, 0xad, 0xe1, 0xb7, 0xf3, 0x94, 0x49, 0x13, 0x17, 0x56, 0xcc, 0x74, 0x29, - 0x0e, 0x08, 0x61, 0xff, 0xf7, 0x31, 0x78, 0x78, 0x08, 0x0d, 0xf2, 0x6b, 0x16, 0x5c, 0x12, 0x26, - 0x74, 0x03, 0x84, 0x74, 0x5b, 0xb6, 0xe6, 0x4f, 0xe7, 0x2d, 0x39, 0xb2, 0x29, 0x4e, 0xbd, 0x26, - 0xad, 0xcf, 0xb3, 0x25, 0x79, 0x39, 0x83, 0x35, 0x66, 0x0a, 0xc4, 0x25, 0x15, 0x46, 0xf5, 0x94, - 0xa4, 0x63, 0x0f, 0x44, 0xd2, 0x46, 0x06, 0x6b, 0xcc, 0x14, 0xc8, 0xfe, 0xeb, 0xf0, 0xe8, 0x11, - 0xe4, 0x8e, 0x9f, 0x9c, 0xf6, 0x9b, 0x7a, 0xd4, 0x27, 0xc7, 0xdc, 0x09, 0xe6, 0xb5, 0x0d, 0x13, - 0x7c, 0xea, 0xa8, 0x89, 0x0d, 0x6c, 0x0f, 0xe6, 0x73, 0x2a, 0x44, 0x09, 0xb1, 0xbf, 0x6b, 0x41, - 0xe9, 0x14, 0xb6, 0xcf, 0x6a, 0xd2, 0xf6, 0x59, 0x1e, 0xb0, 0x7b, 0x46, 0x83, 0x76, 0xcf, 0x57, - 0x47, 0xeb, 0x8d, 0x93, 0xd8, 0x3b, 0x7f, 0x64, 0xc1, 0x85, 0x01, 0xfb, 0x28, 0xd9, 0x81, 0x4b, - 0x3d, 0xbf, 0xa5, 0xb6, 0xd3, 0xeb, 0x4e, 0xb8, 0xc3, 0x61, 0xf2, 0xf3, 0x5e, 0x60, 0x3d, 0xb9, - 0x91, 0x01, 0x7f, 0xef, 0xa0, 0x3a, 0xaf, 0x89, 0xa4, 0x10, 0x30, 0x93, 0x22, 0xe9, 0x41, 0x69, - 0xdb, 0xa5, 0x9d, 0x56, 0x3c, 0x04, 0x47, 0xd4, 0xd2, 0xae, 0x49, 0x6a, 0xe2, 0x6a, 0x40, 0xfd, - 0x43, 0xcd, 0xc5, 0xfe, 0xb1, 0x05, 0x33, 0xb5, 0x7e, 0xb4, 0xc3, 0x74, 0x94, 0x26, 0xb7, 0xc6, - 0x11, 0x0f, 0x8a, 0xa1, 0xdb, 0xde, 0x7b, 0x21, 0x9f, 0xc5, 0xb8, 0xc1, 0x48, 0xc9, 0x2b, 0x12, - 0xad, 0xac, 0xf3, 0x42, 0x14, 0x6c, 0x48, 0x00, 0x13, 0xbe, 0xd3, 0x8f, 0x76, 0x9e, 0x93, 0x9f, - 0x3c, 0xa2, 0x65, 0xe2, 0x16, 0xfb, 0x9c, 0xe7, 0x24, 0x47, 0xad, 0x32, 0x8a, 0x52, 0x94, 0x9c, - 0xec, 0x2f, 0xc2, 0x4c, 0xf2, 0xde, 0xed, 0x04, 0x63, 0xf6, 0x71, 0x28, 0x38, 0x81, 0x27, 0x47, - 0x6c, 0x45, 0x22, 0x14, 0x6a, 0x78, 0x13, 0x59, 0x39, 0x79, 0x16, 0x4a, 0xdb, 0xfd, 0x4e, 0x87, - 0x9f, 0x2b, 0xc4, 0x25, 0x97, 0x3e, 0x16, 0x5d, 0x93, 0xe5, 0xa8, 0x31, 0xec, 0xff, 0x3d, 0x0e, - 0xb3, 0xf5, 0x4e, 0x9f, 0xbe, 0x1a, 0x50, 0xaa, 0x6c, 0x41, 0x35, 0x98, 0xed, 0x05, 0x74, 0xcf, - 0xa5, 0xf7, 0x1a, 0xb4, 0x43, 0x9b, 0x91, 0x1f, 0x48, 0x69, 0x1e, 0x96, 0x84, 0x66, 0x37, 0x92, - 0x60, 0x4c, 0xe3, 0x93, 0x57, 0x60, 0xc6, 0x69, 0x46, 0xee, 0x1e, 0xd5, 0x14, 0x84, 0xb8, 0x0f, - 0x49, 0x0a, 0x33, 0xb5, 0x04, 0x14, 0x53, 0xd8, 0xe4, 0xb3, 0x30, 0x1f, 0x36, 0x9d, 0x0e, 0xbd, - 0xdd, 0x93, 0xac, 0x96, 0x77, 0x68, 0x73, 0x77, 0xc3, 0x77, 0xbd, 0x48, 0xda, 0x1d, 0x9f, 0x90, - 0x94, 0xe6, 0x1b, 0x43, 0xf0, 0x70, 0x28, 0x05, 0xf2, 0x2f, 0x2d, 0x78, 0xbc, 0x17, 0xd0, 0x8d, - 0xc0, 0xef, 0xfa, 0x6c, 0xa8, 0x0d, 0x98, 0xc3, 0xa4, 0x59, 0xe8, 0x8d, 0x11, 0x75, 0x29, 0x51, - 0x32, 0x78, 0x87, 0xf3, 0xe1, 0xc3, 0x83, 0xea, 0xe3, 0x1b, 0x47, 0x09, 0x80, 0x47, 0xcb, 0x47, - 0xfe, 0x95, 0x05, 0x57, 0x7a, 0x7e, 0x18, 0x1d, 0xf1, 0x09, 0xc5, 0x73, 0xfd, 0x04, 0xfb, 0xf0, - 0xa0, 0x7a, 0x65, 0xe3, 0x48, 0x09, 0xf0, 0x18, 0x09, 0xed, 0xc3, 0x0a, 0x5c, 0x30, 0xc6, 0x9e, - 0x34, 0xe6, 0xbc, 0x0c, 0xd3, 0x6a, 0x30, 0xc4, 0xba, 0x4f, 0x39, 0xb6, 0xed, 0xd5, 0x4c, 0x20, - 0x26, 0x71, 0xd9, 0xb8, 0xd3, 0x43, 0x51, 0xd4, 0x4e, 0x8d, 0xbb, 0x8d, 0x04, 0x14, 0x53, 0xd8, - 0x64, 0x15, 0x2e, 0xca, 0x12, 0xa4, 0xbd, 0x8e, 0xdb, 0x74, 0x96, 0xfd, 0xbe, 0x1c, 0x72, 0xc5, - 0xfa, 0xc3, 0x87, 0x07, 0xd5, 0x8b, 0x1b, 0x83, 0x60, 0xcc, 0xaa, 0x43, 0xd6, 0xe0, 0x92, 0xd3, - 0x8f, 0x7c, 0xfd, 0xfd, 0x57, 0x3d, 0xb6, 0x9d, 0xb6, 0xf8, 0xd0, 0x2a, 0x89, 0x7d, 0xb7, 0x96, - 0x01, 0xc7, 0xcc, 0x5a, 0x64, 0x23, 0x45, 0xad, 0x41, 0x9b, 0xbe, 0xd7, 0x12, 0xbd, 0x5c, 0x8c, - 0x8f, 0x81, 0xb5, 0x0c, 0x1c, 0xcc, 0xac, 0x49, 0x3a, 0x30, 0xd3, 0x75, 0xee, 0xdf, 0xf6, 0x9c, - 0x3d, 0xc7, 0xed, 0x30, 0x26, 0xd2, 0x5e, 0x38, 0xdc, 0xca, 0xd4, 0x8f, 0xdc, 0xce, 0xa2, 0xf0, - 0xe3, 0x58, 0x5c, 0xf5, 0xa2, 0x5b, 0x41, 0x23, 0x62, 0x9a, 0xba, 0xd0, 0x20, 0xd7, 0x13, 0xb4, - 0x30, 0x45, 0x9b, 0xdc, 0x82, 0xcb, 0x7c, 0x3a, 0xae, 0xf8, 0xf7, 0xbc, 0x15, 0xda, 0x71, 0xf6, - 0xd5, 0x07, 0x4c, 0xf2, 0x0f, 0x78, 0xe4, 0xf0, 0xa0, 0x7a, 0xb9, 0x91, 0x85, 0x80, 0xd9, 0xf5, - 0x88, 0x03, 0x8f, 0x26, 0x01, 0x48, 0xf7, 0xdc, 0xd0, 0xf5, 0x3d, 0x61, 0x96, 0x2b, 0xc5, 0x66, - 0xb9, 0xc6, 0x70, 0x34, 0x3c, 0x8a, 0x06, 0xf9, 0x7b, 0x16, 0x5c, 0xca, 0x9a, 0x86, 0xf3, 0xe5, - 0x3c, 0x6e, 0x93, 0x53, 0x53, 0x4b, 0x8c, 0x88, 0xcc, 0x45, 0x21, 0x53, 0x08, 0xf2, 0x8e, 0x05, - 0x53, 0x8e, 0x71, 0x82, 0x9e, 0x87, 0x3c, 0x76, 0x2d, 0xf3, 0x4c, 0x5e, 0x9f, 0x3b, 0x3c, 0xa8, - 0x26, 0x4e, 0xe9, 0x98, 0xe0, 0x48, 0xfe, 0x81, 0x05, 0x97, 0x33, 0xe7, 0xf8, 0x7c, 0xe5, 0x3c, - 0x5a, 0x88, 0x0f, 0x92, 0xec, 0x35, 0x27, 0x5b, 0x0c, 0xf2, 0x2d, 0x4b, 0x6f, 0x65, 0xea, 0x82, - 0x71, 0x7e, 0x8a, 0x8b, 0x36, 0xa2, 0xc1, 0xc3, 0x50, 0xa3, 0x14, 0xe1, 0xfa, 0x45, 0x63, 0x67, - 0x54, 0x85, 0x98, 0x66, 0x4f, 0xbe, 0x69, 0xa9, 0xad, 0x51, 0x4b, 0x34, 0x7d, 0x5e, 0x12, 0x91, - 0x78, 0xa7, 0xd5, 0x02, 0xa5, 0x98, 0x93, 0x9f, 0x81, 0x05, 0x67, 0xcb, 0x0f, 0xa2, 0xcc, 0xc9, - 0x37, 0x3f, 0xc3, 0xa7, 0xd1, 0x95, 0xc3, 0x83, 0xea, 0x42, 0x6d, 0x28, 0x16, 0x1e, 0x41, 0xc1, - 0xfe, 0x8d, 0x22, 0x4c, 0x89, 0x93, 0x90, 0xdc, 0xba, 0x7e, 0xdb, 0x82, 0xc7, 0x9a, 0xfd, 0x20, - 0xa0, 0x5e, 0xd4, 0x88, 0x68, 0x6f, 0x70, 0xe3, 0xb2, 0xce, 0x75, 0xe3, 0x7a, 0xe2, 0xf0, 0xa0, - 0xfa, 0xd8, 0xf2, 0x11, 0xfc, 0xf1, 0x48, 0xe9, 0xc8, 0xbf, 0xb3, 0xc0, 0x96, 0x08, 0x75, 0xa7, - 0xb9, 0xdb, 0x0e, 0xfc, 0xbe, 0xd7, 0x1a, 0xfc, 0x88, 0xb1, 0x73, 0xfd, 0x88, 0xa7, 0x0e, 0x0f, - 0xaa, 0xf6, 0xf2, 0xb1, 0x52, 0xe0, 0x09, 0x24, 0x25, 0xaf, 0xc2, 0x05, 0x89, 0x75, 0xf5, 0x7e, - 0x8f, 0x06, 0x2e, 0x3b, 0x73, 0x48, 0xc5, 0x31, 0xf6, 0x4d, 0x4b, 0x23, 0xe0, 0x60, 0x1d, 0x12, - 0xc2, 0xe4, 0x3d, 0xea, 0xb6, 0x77, 0x22, 0xa5, 0x3e, 0x8d, 0xe8, 0x90, 0x26, 0xad, 0x22, 0x77, - 0x04, 0xcd, 0x7a, 0xe5, 0xf0, 0xa0, 0x3a, 0x29, 0xff, 0xa0, 0xe2, 0x44, 0x6e, 0xc2, 0x8c, 0x38, - 0xa7, 0x6e, 0xb8, 0x5e, 0x7b, 0xc3, 0xf7, 0x84, 0x57, 0x55, 0xb9, 0xfe, 0x94, 0xda, 0xf0, 0x1b, - 0x09, 0xe8, 0x7b, 0x07, 0xd5, 0x29, 0xf5, 0x7b, 0x73, 0xbf, 0x47, 0x31, 0x55, 0xdb, 0xfe, 0xbd, - 0x09, 0x00, 0x35, 0x5c, 0x69, 0x8f, 0x7c, 0x04, 0xca, 0x21, 0x8d, 0x04, 0x57, 0x79, 0x93, 0x24, - 0xee, 0xff, 0x54, 0x21, 0xc6, 0x70, 0xb2, 0x0b, 0xc5, 0x9e, 0xd3, 0x0f, 0x69, 0x3e, 0xe7, 0x07, - 0xd9, 0xf9, 0x1b, 0x8c, 0xa2, 0x38, 0x98, 0xf2, 0x9f, 0x28, 0x78, 0x90, 0xaf, 0x58, 0x00, 0x34, - 0xd9, 0x61, 0x23, 0x1b, 0x88, 0x24, 0xcb, 0xb8, 0x4f, 0x59, 0x1b, 0xd4, 0x67, 0x0e, 0x0f, 0xaa, - 0x60, 0x74, 0xbd, 0xc1, 0x96, 0xdc, 0x83, 0x92, 0xa3, 0xd6, 0xfc, 0xf1, 0xf3, 0x58, 0xf3, 0xf9, - 0x79, 0x51, 0x0f, 0x5a, 0xcd, 0x8c, 0x7c, 0xcd, 0x82, 0x99, 0x90, 0x46, 0xb2, 0xab, 0xd8, 0xca, - 0x23, 0x15, 0xde, 0x11, 0x07, 0x5d, 0x23, 0x41, 0x53, 0xac, 0xa0, 0xc9, 0x32, 0x4c, 0xf1, 0x55, - 0xa2, 0x5c, 0xa7, 0x4e, 0x8b, 0x06, 0xdc, 0x1c, 0x21, 0x35, 0xa9, 0xd1, 0x45, 0x31, 0x68, 0x6a, - 0x51, 0x8c, 0x32, 0x4c, 0xf1, 0x55, 0xa2, 0xac, 0xbb, 0x41, 0xe0, 0x4b, 0x51, 0x4a, 0x39, 0x89, - 0x62, 0xd0, 0xd4, 0xa2, 0x18, 0x65, 0x98, 0xe2, 0x6b, 0x7f, 0x67, 0x1a, 0x66, 0xd4, 0x44, 0x8a, - 0x35, 0x7b, 0x61, 0xfd, 0x1a, 0xa2, 0xd9, 0x2f, 0x9b, 0x40, 0x4c, 0xe2, 0xb2, 0xca, 0x62, 0xaa, - 0x26, 0x15, 0x7b, 0x5d, 0xb9, 0x61, 0x02, 0x31, 0x89, 0x4b, 0xba, 0x50, 0x0c, 0x23, 0xda, 0x53, - 0x3e, 0x07, 0x23, 0x5e, 0x89, 0xc7, 0xeb, 0x83, 0x61, 0x49, 0x60, 0xe4, 0x51, 0x70, 0xe1, 0x06, - 0xdc, 0x28, 0x61, 0xd3, 0x95, 0x93, 0x23, 0x9f, 0xf9, 0x99, 0x34, 0x17, 0x8b, 0xde, 0x48, 0x96, - 0x61, 0x8a, 0x7d, 0x86, 0xb2, 0x5f, 0x3c, 0x47, 0x65, 0xff, 0xd3, 0x50, 0xea, 0x3a, 0xf7, 0x1b, - 0xfd, 0xa0, 0x7d, 0xf6, 0x43, 0x85, 0xf4, 0x21, 0x15, 0x54, 0x50, 0xd3, 0x23, 0x5f, 0xb2, 0x8c, - 0x25, 0x47, 0x38, 0x18, 0xdc, 0xc9, 0x77, 0xc9, 0xd1, 0x7b, 0xe5, 0xd0, 0xc5, 0x67, 0x40, 0xf5, - 0x2e, 0x3d, 0x70, 0xd5, 0x9b, 0xa9, 0x91, 0x62, 0x82, 0x68, 0x35, 0xb2, 0x7c, 0xae, 0x6a, 0xe4, - 0x72, 0x82, 0x19, 0xa6, 0x98, 0x73, 0x79, 0xc4, 0x9c, 0xd3, 0xf2, 0xc0, 0xb9, 0xca, 0xd3, 0x48, - 0x30, 0xc3, 0x14, 0xf3, 0xe1, 0xe7, 0xcd, 0xca, 0xf9, 0x9c, 0x37, 0xa7, 0x72, 0x38, 0x6f, 0x1e, - 0xad, 0x8a, 0x4f, 0x8f, 0xaa, 0x8a, 0x93, 0x1b, 0x40, 0x5a, 0xfb, 0x9e, 0xd3, 0x75, 0x9b, 0x72, - 0xb1, 0xe4, 0xdb, 0xe6, 0x0c, 0xb7, 0x47, 0x2c, 0xc8, 0x85, 0x8c, 0xac, 0x0c, 0x60, 0x60, 0x46, - 0x2d, 0x12, 0x41, 0xa9, 0xa7, 0x34, 0xae, 0xd9, 0x3c, 0x46, 0xbf, 0xd2, 0xc0, 0x84, 0xdf, 0x08, - 0x9b, 0x78, 0xaa, 0x04, 0x35, 0x27, 0xb2, 0x06, 0x97, 0xba, 0xae, 0xb7, 0xe1, 0xb7, 0xc2, 0x0d, - 0x1a, 0x48, 0x6b, 0x4b, 0x83, 0x46, 0xf3, 0x73, 0xbc, 0x6d, 0xf8, 0x09, 0x7a, 0x3d, 0x03, 0x8e, - 0x99, 0xb5, 0xec, 0xff, 0x65, 0xc1, 0xdc, 0x72, 0xc7, 0xef, 0xb7, 0xee, 0x38, 0x51, 0x73, 0x47, - 0xb8, 0x29, 0x90, 0x57, 0xa0, 0xe4, 0x7a, 0x11, 0x0d, 0xf6, 0x9c, 0x8e, 0xdc, 0x9f, 0x6c, 0x65, - 0x3e, 0x5d, 0x95, 0xe5, 0xef, 0x1d, 0x54, 0x67, 0x56, 0xfa, 0x01, 0xb7, 0x52, 0x8b, 0xd5, 0x0a, - 0x75, 0x1d, 0xf2, 0x1d, 0x0b, 0x2e, 0x08, 0x47, 0x87, 0x15, 0x27, 0x72, 0x5e, 0xef, 0xd3, 0xc0, - 0xa5, 0xca, 0xd5, 0x61, 0xc4, 0x85, 0x2a, 0x2d, 0xab, 0x62, 0xb0, 0x1f, 0x2b, 0xea, 0xeb, 0x69, - 0xce, 0x38, 0x28, 0x8c, 0xfd, 0x4b, 0x05, 0x78, 0x64, 0x28, 0x2d, 0xb2, 0x00, 0x63, 0x6e, 0x4b, - 0x7e, 0x3a, 0x48, 0xba, 0x63, 0xab, 0x2d, 0x1c, 0x73, 0x5b, 0x64, 0x91, 0xeb, 0x9c, 0x01, 0x0d, - 0x43, 0x75, 0xe1, 0x5c, 0xd6, 0xea, 0xa1, 0x2c, 0x45, 0x03, 0x83, 0x54, 0xa1, 0xc8, 0xfd, 0x87, - 0xe5, 0x79, 0x82, 0x6b, 0xb1, 0xdc, 0x55, 0x17, 0x45, 0x39, 0xf9, 0xb2, 0x05, 0x20, 0x04, 0x64, - 0xa7, 0x11, 0xb9, 0x4b, 0x62, 0xbe, 0xcd, 0xc4, 0x28, 0x0b, 0x29, 0xe3, 0xff, 0x68, 0x70, 0x25, - 0x9b, 0x30, 0xc1, 0x14, 0x5a, 0xbf, 0x75, 0xe6, 0x4d, 0x91, 0xdf, 0x44, 0x6d, 0x70, 0x1a, 0x28, - 0x69, 0xb1, 0xb6, 0x0a, 0x68, 0xd4, 0x0f, 0x3c, 0xd6, 0xb4, 0x7c, 0x1b, 0x2c, 0x09, 0x29, 0x50, - 0x97, 0xa2, 0x81, 0x61, 0xff, 0xf3, 0x31, 0xb8, 0x94, 0x25, 0x3a, 0xdb, 0x6d, 0x26, 0x84, 0xb4, - 0xf2, 0x68, 0xfc, 0x53, 0xf9, 0xb7, 0x8f, 0xf4, 0xd9, 0xd1, 0xd7, 0x14, 0xd2, 0x81, 0x52, 0xf2, - 0x25, 0x3f, 0xa5, 0x5b, 0x68, 0xec, 0x8c, 0x2d, 0xa4, 0x29, 0xa7, 0x5a, 0xe9, 0x09, 0x18, 0x0f, - 0x59, 0xcf, 0x17, 0x92, 0xd7, 0x1d, 0xbc, 0x8f, 0x38, 0x84, 0x61, 0xf4, 0x3d, 0x37, 0x92, 0x41, - 0x37, 0x1a, 0xe3, 0xb6, 0xe7, 0x46, 0xc8, 0x21, 0xf6, 0xb7, 0xc7, 0x60, 0x61, 0xf8, 0x47, 0x91, - 0x6f, 0x5b, 0x00, 0x2d, 0x76, 0x5c, 0x09, 0xb9, 0xe7, 0xba, 0xf0, 0x71, 0x72, 0xce, 0xab, 0x0d, - 0x57, 0x14, 0xa7, 0xd8, 0xf9, 0x4e, 0x17, 0x85, 0x68, 0x08, 0x42, 0x9e, 0x53, 0x43, 0x9f, 0x5f, - 0xd5, 0x88, 0xc9, 0xa4, 0xeb, 0xac, 0x6b, 0x08, 0x1a, 0x58, 0xec, 0x3c, 0xea, 0x39, 0x5d, 0x1a, - 0xf6, 0x1c, 0x1d, 0xc2, 0xc4, 0xcf, 0xa3, 0x37, 0x55, 0x21, 0xc6, 0x70, 0xbb, 0x03, 0x4f, 0x9e, - 0x40, 0xce, 0x9c, 0x22, 0x44, 0xec, 0xff, 0x61, 0xc1, 0xc3, 0xd2, 0xfd, 0xec, 0xff, 0x1b, 0x5f, - 0xc6, 0x3f, 0xb3, 0xe0, 0xd1, 0x21, 0xdf, 0xfc, 0x00, 0x5c, 0x1a, 0xdf, 0x4a, 0xba, 0x34, 0xde, - 0x1e, 0x75, 0x48, 0x67, 0x7e, 0xc7, 0x10, 0xcf, 0xc6, 0x7f, 0x53, 0x80, 0x69, 0xb6, 0x6c, 0xb5, - 0xfc, 0x76, 0x4e, 0x1b, 0xe7, 0x93, 0x50, 0xfc, 0x3c, 0xdb, 0x80, 0xd2, 0x83, 0x8c, 0xef, 0x4a, - 0x28, 0x60, 0xe4, 0x2b, 0x16, 0x4c, 0x7e, 0x5e, 0xee, 0xa9, 0xe2, 0x2c, 0x37, 0xe2, 0x62, 0x98, - 0xf8, 0x86, 0x45, 0xb9, 0x43, 0x8a, 0xc0, 0x13, 0xed, 0xc0, 0xa8, 0xb6, 0x52, 0xc5, 0x99, 0x3c, - 0x03, 0x93, 0xdb, 0x7e, 0xd0, 0xed, 0x77, 0x9c, 0x74, 0xb4, 0xe3, 0x35, 0x51, 0x8c, 0x0a, 0xce, - 0x26, 0xb9, 0xd3, 0x73, 0xdf, 0xa0, 0x41, 0x28, 0xe2, 0x10, 0x12, 0x93, 0xbc, 0xa6, 0x21, 0x68, - 0x60, 0xf1, 0x3a, 0xed, 0x76, 0x40, 0xdb, 0x4e, 0xe4, 0x07, 0x7c, 0xe7, 0x30, 0xeb, 0x68, 0x08, - 0x1a, 0x58, 0x0b, 0x9f, 0x84, 0x29, 0x53, 0xf8, 0x53, 0x05, 0xb1, 0x7c, 0x0a, 0xa4, 0x27, 0x63, - 0x6a, 0x49, 0xb2, 0x4e, 0xb2, 0x24, 0xd9, 0xff, 0x61, 0x0c, 0x0c, 0xeb, 0xd0, 0x03, 0x98, 0xea, - 0x5e, 0x62, 0xaa, 0x8f, 0x68, 0xd9, 0x30, 0x6c, 0x5d, 0xc3, 0x42, 0xfa, 0xf6, 0x52, 0x21, 0x7d, - 0x37, 0x73, 0xe3, 0x78, 0x74, 0x44, 0xdf, 0x0f, 0x2c, 0x78, 0x34, 0x46, 0x1e, 0x34, 0xdc, 0x1e, - 0xbf, 0x6e, 0xbf, 0x08, 0x15, 0x27, 0xae, 0x26, 0x27, 0x96, 0x11, 0x4f, 0xa5, 0x41, 0x68, 0xe2, - 0xc5, 0xb1, 0x20, 0x85, 0x33, 0xc6, 0x82, 0x8c, 0x1f, 0x1d, 0x0b, 0x62, 0xff, 0x78, 0x0c, 0x1e, - 0x1f, 0xfc, 0x32, 0xd3, 0x41, 0xfa, 0xf8, 0x6f, 0x4b, 0xbb, 0x50, 0x8f, 0x9d, 0xd9, 0x85, 0xba, - 0x70, 0x52, 0x17, 0x6a, 0xed, 0xb8, 0x3c, 0x7e, 0xee, 0x8e, 0xcb, 0x0d, 0xb8, 0xac, 0xbc, 0x24, - 0xaf, 0xf9, 0x81, 0x0c, 0x88, 0x50, 0x2b, 0x48, 0xa9, 0xfe, 0xb8, 0xac, 0x72, 0x19, 0xb3, 0x90, - 0x30, 0xbb, 0xae, 0xfd, 0x83, 0x02, 0x5c, 0x8c, 0x9b, 0x7d, 0xd9, 0xf7, 0x5a, 0x2e, 0x77, 0xb4, - 0x79, 0x19, 0xc6, 0xa3, 0xfd, 0x9e, 0x6a, 0xec, 0xbf, 0xac, 0xc4, 0xd9, 0xdc, 0xef, 0xb1, 0xde, - 0x7e, 0x38, 0xa3, 0x0a, 0x37, 0x9d, 0xf3, 0x4a, 0x64, 0x4d, 0xcf, 0x0e, 0xd1, 0x03, 0x2f, 0x24, - 0x47, 0xf3, 0x7b, 0x07, 0xd5, 0x8c, 0xd4, 0x06, 0x8b, 0x9a, 0x52, 0x72, 0xcc, 0x93, 0xbb, 0x30, - 0xd3, 0x71, 0xc2, 0xe8, 0x76, 0xaf, 0xe5, 0x44, 0x74, 0xd3, 0x95, 0x2e, 0x2c, 0xa7, 0x8b, 0x21, - 0xd1, 0x77, 0xfd, 0x6b, 0x09, 0x4a, 0x98, 0xa2, 0x4c, 0xf6, 0x80, 0xb0, 0x92, 0xcd, 0xc0, 0xf1, - 0x42, 0xf1, 0x55, 0x8c, 0xdf, 0xe9, 0x03, 0x82, 0xf4, 0xd1, 0x79, 0x6d, 0x80, 0x1a, 0x66, 0x70, - 0x20, 0x4f, 0xc1, 0x44, 0x40, 0x9d, 0x50, 0x6f, 0x07, 0x7a, 0xfe, 0x23, 0x2f, 0x45, 0x09, 0x35, - 0x27, 0xd4, 0xc4, 0x31, 0x13, 0xea, 0x8f, 0x2c, 0x98, 0x89, 0xbb, 0xe9, 0x01, 0xa8, 0x1e, 0xdd, - 0xa4, 0xea, 0x71, 0x3d, 0xaf, 0x25, 0x71, 0x88, 0xb6, 0xf1, 0xa7, 0x93, 0xe6, 0xf7, 0xf1, 0xa8, - 0x85, 0x2f, 0x98, 0x4e, 0xec, 0x56, 0x1e, 0xa1, 0x64, 0x09, 0x6d, 0xef, 0x48, 0xef, 0x75, 0xa6, - 0xeb, 0xb4, 0xa4, 0x1e, 0x23, 0x87, 0xbd, 0xd6, 0x75, 0x94, 0x7e, 0x93, 0xa5, 0xeb, 0xa8, 0x3a, - 0xe4, 0x36, 0x3c, 0xdc, 0x0b, 0x7c, 0x1e, 0x5c, 0xbf, 0x42, 0x9d, 0x56, 0xc7, 0xf5, 0xa8, 0x32, - 0xf3, 0x08, 0x57, 0x93, 0x47, 0x0f, 0x0f, 0xaa, 0x0f, 0x6f, 0x64, 0xa3, 0xe0, 0xb0, 0xba, 0xc9, - 0xf0, 0xcc, 0xf1, 0x13, 0x84, 0x67, 0xfe, 0x82, 0x36, 0xa6, 0xea, 0x48, 0x80, 0xcf, 0xe4, 0xd5, - 0x95, 0x59, 0x31, 0x01, 0x7a, 0x48, 0xd5, 0x24, 0x53, 0xd4, 0xec, 0x87, 0x5b, 0xec, 0x26, 0xce, - 0x68, 0xb1, 0x8b, 0x83, 0x3f, 0x26, 0xdf, 0xcf, 0xe0, 0x8f, 0xd2, 0x07, 0x2a, 0xf8, 0xe3, 0x3b, - 0x16, 0x5c, 0x74, 0x06, 0xc3, 0xae, 0xf3, 0x31, 0x1e, 0x67, 0xc4, 0x73, 0xd7, 0x1f, 0x95, 0x42, - 0x66, 0x45, 0xb7, 0x63, 0x96, 0x28, 0xf6, 0xbb, 0x45, 0x98, 0x4b, 0x2b, 0x49, 0xe7, 0x1f, 0x9f, - 0xfa, 0xb7, 0x2d, 0x98, 0x53, 0x13, 0x5c, 0xf0, 0xd4, 0x47, 0x8c, 0xb5, 0x9c, 0xd6, 0x15, 0xa1, - 0xee, 0xe9, 0xb4, 0x21, 0x9b, 0x29, 0x6e, 0x38, 0xc0, 0x9f, 0xbc, 0x09, 0x15, 0x7d, 0xab, 0x72, - 0xa6, 0x60, 0x55, 0x1e, 0x4f, 0x59, 0x8b, 0x49, 0xa0, 0x49, 0x8f, 0xbc, 0x6b, 0x01, 0x34, 0xd5, - 0x4e, 0x9c, 0x53, 0x28, 0x50, 0x86, 0xb6, 0x10, 0xeb, 0xf3, 0xba, 0x28, 0x44, 0x83, 0x31, 0xf9, - 0x25, 0x7e, 0x9f, 0xa2, 0x47, 0x82, 0x48, 0x47, 0x32, 0xb2, 0xdb, 0xfb, 0x11, 0xba, 0x73, 0xac, - 0xed, 0x19, 0xa0, 0x10, 0x13, 0x42, 0xd8, 0x2f, 0x83, 0x76, 0x54, 0x66, 0x2b, 0x2b, 0x77, 0x55, - 0xde, 0x70, 0xa2, 0x1d, 0x39, 0x04, 0xf5, 0xca, 0x7a, 0x4d, 0x01, 0x30, 0xc6, 0xb1, 0x3f, 0x07, - 0x33, 0xaf, 0x06, 0x4e, 0x6f, 0xc7, 0xe5, 0xf7, 0x16, 0xec, 0x7c, 0xfc, 0x0c, 0x4c, 0x3a, 0xad, - 0x56, 0x56, 0x86, 0x9b, 0x9a, 0x28, 0x46, 0x05, 0x3f, 0xd1, 0x51, 0xd8, 0xfe, 0x3d, 0x0b, 0x48, - 0x7c, 0xf7, 0xeb, 0x7a, 0xed, 0x75, 0x27, 0x6a, 0xee, 0xb0, 0x23, 0xdc, 0x0e, 0x2f, 0xcd, 0x3a, - 0xc2, 0x5d, 0xd7, 0x10, 0x34, 0xb0, 0xc8, 0xdb, 0x50, 0x11, 0xff, 0xde, 0xd0, 0x07, 0xc4, 0xd1, - 0xfd, 0xad, 0xf9, 0x9e, 0xc7, 0x65, 0x12, 0xa3, 0xf0, 0x7a, 0xcc, 0x01, 0x4d, 0x76, 0xac, 0xa9, - 0x56, 0xbd, 0xed, 0x4e, 0xff, 0x7e, 0x6b, 0x2b, 0x6e, 0xaa, 0x5e, 0xe0, 0x6f, 0xbb, 0x1d, 0x9a, - 0x6e, 0xaa, 0x0d, 0x51, 0x8c, 0x0a, 0x7e, 0xb2, 0xa6, 0xfa, 0xd7, 0x16, 0x5c, 0x5a, 0x0d, 0x23, - 0xd7, 0x5f, 0xa1, 0x61, 0xc4, 0x76, 0x3e, 0xb6, 0x3e, 0xf6, 0x3b, 0x27, 0x89, 0x39, 0x58, 0x81, - 0x39, 0x79, 0x0f, 0xdd, 0xdf, 0x0a, 0x69, 0x64, 0x1c, 0x35, 0xf4, 0x3c, 0x5e, 0x4e, 0xc1, 0x71, - 0xa0, 0x06, 0xa3, 0x22, 0x2f, 0xa4, 0x63, 0x2a, 0x85, 0x24, 0x95, 0x46, 0x0a, 0x8e, 0x03, 0x35, - 0xec, 0xef, 0x17, 0xe0, 0x22, 0xff, 0x8c, 0x54, 0xbc, 0xd0, 0x37, 0x87, 0xc5, 0x0b, 0x8d, 0x38, - 0x95, 0x39, 0xaf, 0x33, 0x44, 0x0b, 0xfd, 0x2d, 0x0b, 0x66, 0x5b, 0xc9, 0x96, 0xce, 0xc7, 0x2e, - 0x97, 0xd5, 0x87, 0xc2, 0xed, 0x2e, 0x55, 0x88, 0x69, 0xfe, 0xe4, 0x97, 0x2d, 0x98, 0x4d, 0x8a, - 0xa9, 0x56, 0xf7, 0x73, 0x68, 0x24, 0xed, 0x27, 0x9f, 0x2c, 0x0f, 0x31, 0x2d, 0x82, 0xfd, 0xfb, - 0x63, 0xb2, 0x4b, 0xcf, 0x23, 0x18, 0x86, 0xdc, 0x83, 0x72, 0xd4, 0x09, 0x45, 0xa1, 0xfc, 0xda, - 0x11, 0x0f, 0xad, 0x9b, 0x6b, 0x0d, 0xe1, 0x02, 0x12, 0xeb, 0x95, 0xb2, 0x84, 0xe9, 0xc7, 0x8a, - 0x17, 0x67, 0xdc, 0xec, 0x49, 0xc6, 0xb9, 0x9c, 0x96, 0x37, 0x97, 0x37, 0xd2, 0x8c, 0x65, 0x09, - 0x63, 0xac, 0x78, 0xd9, 0xbf, 0x6e, 0x41, 0xf9, 0x86, 0xaf, 0xd6, 0x91, 0x9f, 0xc9, 0xc1, 0x16, - 0xa5, 0x55, 0x56, 0xad, 0xb4, 0xc4, 0xa7, 0xa0, 0x57, 0x12, 0x96, 0xa8, 0xc7, 0x0c, 0xda, 0x8b, - 0x3c, 0xd1, 0x1f, 0x23, 0x75, 0xc3, 0xdf, 0x1a, 0x6a, 0x3e, 0xfe, 0x95, 0x22, 0x4c, 0xbf, 0xe6, - 0xec, 0x53, 0x2f, 0x72, 0x4e, 0xbf, 0x49, 0xbc, 0x08, 0x15, 0xa7, 0xc7, 0xef, 0x32, 0x8d, 0x63, - 0x48, 0x6c, 0xdc, 0x89, 0x41, 0x68, 0xe2, 0xc5, 0x0b, 0x9a, 0x88, 0x4c, 0xc9, 0x5a, 0x8a, 0x96, - 0x53, 0x70, 0x1c, 0xa8, 0x41, 0x6e, 0x00, 0x91, 0xd1, 0xdc, 0xb5, 0x66, 0xd3, 0xef, 0x7b, 0x62, - 0x49, 0x13, 0x76, 0x1f, 0x7d, 0x1e, 0x5e, 0x1f, 0xc0, 0xc0, 0x8c, 0x5a, 0xe4, 0xb3, 0x30, 0xdf, - 0xe4, 0x94, 0xe5, 0xe9, 0xc8, 0xa4, 0x28, 0x4e, 0xc8, 0x3a, 0xd6, 0x63, 0x79, 0x08, 0x1e, 0x0e, - 0xa5, 0xc0, 0x24, 0x0d, 0x23, 0x3f, 0x70, 0xda, 0xd4, 0xa4, 0x3b, 0x91, 0x94, 0xb4, 0x31, 0x80, - 0x81, 0x19, 0xb5, 0xc8, 0x17, 0xa1, 0x1c, 0xed, 0x04, 0x34, 0xdc, 0xf1, 0x3b, 0x2d, 0xe9, 0x7b, - 0x32, 0xa2, 0x31, 0x50, 0xf6, 0xfe, 0xa6, 0xa2, 0x6a, 0x0c, 0x6f, 0x55, 0x84, 0x31, 0x4f, 0x12, - 0xc0, 0x44, 0xd8, 0xf4, 0x7b, 0x34, 0x94, 0xa7, 0x8a, 0x1b, 0xb9, 0x70, 0xe7, 0xc6, 0x2d, 0xc3, - 0x0c, 0xc9, 0x39, 0xa0, 0xe4, 0x64, 0xff, 0xee, 0x18, 0x4c, 0x99, 0x88, 0x27, 0x58, 0x9b, 0xbe, - 0x62, 0xc1, 0x54, 0xd3, 0xf7, 0xa2, 0xc0, 0xef, 0xc4, 0x59, 0x0a, 0x46, 0xd7, 0x28, 0x18, 0xa9, - 0x15, 0x1a, 0x39, 0x6e, 0xc7, 0xb0, 0xd6, 0x19, 0x6c, 0x30, 0xc1, 0x94, 0x7c, 0xc3, 0x82, 0xd9, - 0xd8, 0x55, 0x31, 0xb6, 0xf5, 0xe5, 0x2a, 0x88, 0x5e, 0xea, 0xaf, 0x26, 0x39, 0x61, 0x9a, 0xb5, - 0xbd, 0x05, 0x73, 0xe9, 0xde, 0x66, 0x4d, 0xd9, 0x73, 0xe4, 0x5c, 0x2f, 0xc4, 0x4d, 0xb9, 0xe1, - 0x84, 0x21, 0x72, 0x08, 0x79, 0x16, 0x4a, 0x5d, 0x27, 0x68, 0xbb, 0x9e, 0xd3, 0xe1, 0xad, 0x58, - 0x30, 0x16, 0x24, 0x59, 0x8e, 0x1a, 0xc3, 0xfe, 0x18, 0x4c, 0xad, 0x3b, 0x5e, 0x9b, 0xb6, 0xe4, - 0x3a, 0x7c, 0x7c, 0x38, 0xe6, 0x9f, 0x8c, 0x43, 0xc5, 0x38, 0x3e, 0x9e, 0xff, 0x39, 0x2b, 0x91, - 0x7d, 0xa7, 0x90, 0x63, 0xf6, 0x9d, 0x4f, 0x03, 0x6c, 0xbb, 0x9e, 0x1b, 0xee, 0x9c, 0x31, 0xaf, - 0x0f, 0xbf, 0x9b, 0xbf, 0xa6, 0x29, 0xa0, 0x41, 0x2d, 0xbe, 0x00, 0x2d, 0x1e, 0x91, 0x22, 0xef, - 0x5d, 0xcb, 0xd8, 0x6e, 0x26, 0xf2, 0x70, 0xf8, 0x30, 0x3a, 0x66, 0x51, 0x6d, 0x3f, 0xe2, 0x6e, - 0xea, 0xa8, 0x5d, 0x69, 0x13, 0x4a, 0x01, 0x0d, 0xfb, 0x5d, 0x7a, 0xa6, 0x0c, 0x3c, 0xdc, 0xf5, - 0x06, 0x65, 0x7d, 0xd4, 0x94, 0x16, 0x5e, 0x86, 0xe9, 0x84, 0x08, 0xa7, 0xba, 0x61, 0xf2, 0x21, - 0xd3, 0x46, 0x71, 0x96, 0xfb, 0x26, 0xd6, 0x17, 0x1d, 0x23, 0xf3, 0x8e, 0xee, 0x0b, 0xe1, 0x60, - 0x25, 0x60, 0xf6, 0x8f, 0x27, 0x40, 0xfa, 0x30, 0x9c, 0x60, 0xb9, 0x32, 0x6f, 0x2e, 0xc7, 0xce, - 0x70, 0x73, 0x79, 0x03, 0xa6, 0x5c, 0xcf, 0x8d, 0x5c, 0xa7, 0xc3, 0xed, 0x4f, 0x72, 0x3b, 0x55, - 0x1e, 0xe8, 0x53, 0xab, 0x06, 0x2c, 0x83, 0x4e, 0xa2, 0x2e, 0x79, 0x1d, 0x8a, 0x7c, 0xbf, 0x91, - 0x03, 0xf8, 0xf4, 0x8e, 0x16, 0xdc, 0xc7, 0x46, 0x84, 0xa5, 0x09, 0x4a, 0xfc, 0xf0, 0x21, 0x52, - 0x0f, 0xe9, 0xe3, 0xb7, 0x1c, 0xc7, 0xf1, 0xe1, 0x23, 0x05, 0xc7, 0x81, 0x1a, 0x8c, 0xca, 0xb6, - 0xe3, 0x76, 0xfa, 0x01, 0x8d, 0xa9, 0x4c, 0x24, 0xa9, 0x5c, 0x4b, 0xc1, 0x71, 0xa0, 0x06, 0xd9, - 0x86, 0x29, 0x59, 0x26, 0xdc, 0xe6, 0x26, 0xcf, 0xf8, 0x95, 0xdc, 0x3d, 0xf2, 0x9a, 0x41, 0x09, - 0x13, 0x74, 0x49, 0x1f, 0x2e, 0xb8, 0x5e, 0xd3, 0xf7, 0x9a, 0x9d, 0x7e, 0xe8, 0xee, 0xd1, 0x38, - 0x26, 0xec, 0x2c, 0xcc, 0x2e, 0x1f, 0x1e, 0x54, 0x2f, 0xac, 0xa6, 0xc9, 0xe1, 0x20, 0x07, 0xf2, - 0x25, 0x0b, 0x2e, 0x37, 0x7d, 0x2f, 0xe4, 0xa9, 0x2b, 0xf6, 0xe8, 0xd5, 0x20, 0xf0, 0x03, 0xc1, - 0xbb, 0x7c, 0x46, 0xde, 0xdc, 0xec, 0xb9, 0x9c, 0x45, 0x12, 0xb3, 0x39, 0x91, 0xb7, 0xa0, 0xd4, - 0x0b, 0xfc, 0x3d, 0xb7, 0x45, 0x03, 0xe9, 0x82, 0xb9, 0x96, 0x47, 0x3e, 0x9f, 0x0d, 0x49, 0x33, - 0x5e, 0x7a, 0x54, 0x09, 0x6a, 0x7e, 0xf6, 0xff, 0xa9, 0xc0, 0x4c, 0x12, 0x9d, 0xfc, 0x1c, 0x40, - 0x2f, 0xf0, 0xbb, 0x34, 0xda, 0xa1, 0x3a, 0xb6, 0xe7, 0xe6, 0xa8, 0x19, 0x5b, 0x14, 0x3d, 0xe5, - 0xb6, 0xc4, 0x96, 0x8b, 0xb8, 0x14, 0x0d, 0x8e, 0x24, 0x80, 0xc9, 0x5d, 0xb1, 0xed, 0x4a, 0x2d, - 0xe4, 0xb5, 0x5c, 0x74, 0x26, 0xc9, 0x99, 0x07, 0xa5, 0xc8, 0x22, 0x54, 0x8c, 0xc8, 0x16, 0x14, - 0xee, 0xd1, 0xad, 0x7c, 0xd2, 0x05, 0xdc, 0xa1, 0xf2, 0x34, 0x53, 0x9f, 0x3c, 0x3c, 0xa8, 0x16, - 0xee, 0xd0, 0x2d, 0x64, 0xc4, 0xd9, 0x77, 0xb5, 0x84, 0xef, 0x82, 0x5c, 0x2a, 0x5e, 0xcb, 0xd1, - 0x11, 0x42, 0x7c, 0x97, 0x2c, 0x42, 0xc5, 0x88, 0xbc, 0x05, 0xe5, 0x7b, 0xce, 0x1e, 0xdd, 0x0e, - 0x7c, 0x2f, 0x92, 0xbe, 0x72, 0x23, 0x86, 0x7b, 0xdc, 0x51, 0xe4, 0x24, 0x5f, 0xbe, 0xbd, 0xeb, - 0x42, 0x8c, 0xd9, 0x91, 0x3d, 0x28, 0x79, 0xf4, 0x1e, 0xd2, 0x8e, 0xdb, 0xcc, 0x27, 0xbc, 0xe2, - 0xa6, 0xa4, 0x26, 0x39, 0xf3, 0x7d, 0x4f, 0x95, 0xa1, 0xe6, 0xc5, 0xfa, 0xf2, 0xae, 0xbf, 0x25, - 0x17, 0xaa, 0x11, 0xfb, 0x52, 0x9f, 0x4c, 0x45, 0x5f, 0xde, 0xf0, 0xb7, 0x90, 0x11, 0x67, 0x73, - 0xa4, 0xa9, 0x1d, 0xb5, 0xe4, 0x32, 0x75, 0x33, 0x5f, 0x07, 0x35, 0x31, 0x47, 0xe2, 0x52, 0x34, - 0x38, 0xb2, 0xb6, 0x6d, 0x4b, 0x63, 0xa5, 0x5c, 0xa8, 0x46, 0x6c, 0xdb, 0xa4, 0xe9, 0x53, 0xb4, - 0xad, 0x2a, 0x43, 0xcd, 0x8b, 0xf1, 0x75, 0xa5, 0xe5, 0x2f, 0x9f, 0xa5, 0x2a, 0x69, 0x47, 0x14, - 0x7c, 0x55, 0x19, 0x6a, 0x5e, 0xac, 0xbd, 0xc3, 0xdd, 0xfd, 0x7b, 0x4e, 0x67, 0xd7, 0xf5, 0xda, - 0x32, 0x56, 0x75, 0xd4, 0x34, 0xdc, 0xbb, 0xfb, 0x77, 0x04, 0x3d, 0xb3, 0xbd, 0xe3, 0x52, 0x34, - 0x38, 0x92, 0xbf, 0x6f, 0xc1, 0x44, 0xaf, 0xd3, 0x6f, 0xbb, 0xde, 0xfc, 0x54, 0x1e, 0x4e, 0x4c, - 0xc9, 0x25, 0x77, 0x71, 0x83, 0x93, 0x16, 0x8a, 0xe2, 0x4f, 0x6a, 0xbf, 0x4b, 0x5e, 0xf8, 0xf5, - 0x3f, 0xae, 0xce, 0x53, 0xaf, 0xe9, 0xb7, 0x5c, 0xaf, 0xbd, 0x74, 0x37, 0xf4, 0xbd, 0x45, 0x74, - 0xee, 0x29, 0x1d, 0x5d, 0xca, 0xb4, 0xf0, 0x09, 0xa8, 0x18, 0x24, 0x8e, 0x53, 0xf4, 0xa6, 0x4c, - 0x45, 0xef, 0xd7, 0x27, 0x60, 0xca, 0x4c, 0xbe, 0x79, 0x02, 0xed, 0x4b, 0x9f, 0x38, 0xc6, 0x4e, - 0x73, 0xe2, 0x60, 0x47, 0x4c, 0xe3, 0x82, 0x4b, 0x99, 0xb7, 0x56, 0x73, 0x53, 0xb8, 0xe3, 0x23, - 0xa6, 0x51, 0x18, 0x62, 0x82, 0xe9, 0x29, 0x7c, 0x5e, 0x98, 0xda, 0x2a, 0x14, 0xbb, 0x62, 0x52, - 0x6d, 0x4d, 0xa8, 0x6a, 0xcf, 0x01, 0xc4, 0x59, 0x22, 0xe5, 0xc5, 0xa7, 0xd6, 0x87, 0x8d, 0xec, - 0x95, 0x06, 0x16, 0x79, 0x0a, 0x26, 0x98, 0xea, 0x43, 0x5b, 0x32, 0x94, 0x5e, 0x9f, 0xe3, 0xaf, - 0xf1, 0x52, 0x94, 0x50, 0xf2, 0x12, 0xd3, 0x52, 0x63, 0x85, 0x45, 0x46, 0xc8, 0x5f, 0x8a, 0xb5, - 0xd4, 0x18, 0x86, 0x09, 0x4c, 0x26, 0x3a, 0x65, 0xfa, 0x05, 0x5f, 0x1b, 0x0c, 0xd1, 0xb9, 0xd2, - 0x81, 0x02, 0xc6, 0xed, 0x4a, 0x29, 0x7d, 0x84, 0xcf, 0xe9, 0xa2, 0x61, 0x57, 0x4a, 0xc1, 0x71, - 0xa0, 0x06, 0xfb, 0x18, 0x79, 0x67, 0x5b, 0x11, 0x0e, 0xd3, 0x43, 0x6e, 0x5b, 0xbf, 0x6a, 0x9e, - 0xb5, 0x72, 0x9c, 0x43, 0x62, 0xd4, 0x9e, 0xfc, 0xb0, 0x35, 0xda, 0xb1, 0xe8, 0x73, 0x30, 0x93, - 0xdc, 0x85, 0x72, 0xbf, 0xf9, 0xf8, 0xda, 0x38, 0x5c, 0xbc, 0xd9, 0x76, 0xbd, 0x74, 0xa2, 0xb3, - 0xac, 0x57, 0x0d, 0xac, 0x53, 0xbf, 0x6a, 0xa0, 0x63, 0xf2, 0xe4, 0x9b, 0x01, 0xd9, 0x31, 0x79, - 0xea, 0x01, 0x87, 0x24, 0x2e, 0xf9, 0x23, 0x0b, 0x1e, 0x73, 0x5a, 0xe2, 0x5c, 0xe0, 0x74, 0x64, - 0xa9, 0x91, 0x8c, 0x5b, 0xce, 0xe8, 0x70, 0xc4, 0x5d, 0x7e, 0xf0, 0xe3, 0x17, 0x6b, 0x47, 0x70, - 0x15, 0x3d, 0xfe, 0x13, 0xf2, 0x0b, 0x1e, 0x3b, 0x0a, 0x15, 0x8f, 0x14, 0x9f, 0xfc, 0x35, 0x98, - 0x4d, 0x7c, 0xb0, 0xb4, 0x84, 0x97, 0xc5, 0x85, 0x45, 0x23, 0x09, 0xc2, 0x34, 0xee, 0xc2, 0x2d, - 0xf8, 0xf0, 0xb1, 0x72, 0x9e, 0x6a, 0xb0, 0x7d, 0xcf, 0x82, 0x29, 0x33, 0x27, 0x11, 0x79, 0x16, - 0x4a, 0x91, 0xbf, 0x4b, 0xbd, 0xdb, 0x81, 0x72, 0xd8, 0xd5, 0x03, 0x7d, 0x93, 0x97, 0xe3, 0x1a, - 0x6a, 0x0c, 0x86, 0xdd, 0xec, 0xb8, 0xd4, 0x8b, 0x56, 0x5b, 0xb2, 0x9b, 0x35, 0xf6, 0xb2, 0x28, - 0x5f, 0x41, 0x8d, 0x21, 0x7c, 0xec, 0xd8, 0xef, 0x06, 0x6d, 0x06, 0x54, 0xb9, 0xf7, 0x1b, 0x3e, - 0x76, 0x31, 0x0c, 0x13, 0x98, 0xc4, 0xd6, 0x26, 0xce, 0xf1, 0xf8, 0x5e, 0x23, 0x65, 0x92, 0xfc, - 0x2d, 0x0b, 0xca, 0xc2, 0x44, 0x8f, 0x74, 0x3b, 0xe5, 0x62, 0x9b, 0x32, 0x22, 0xd4, 0x36, 0x56, - 0xb3, 0x5c, 0x6c, 0x9f, 0x80, 0xf1, 0x5d, 0xd7, 0x53, 0x5f, 0xa2, 0xb7, 0xa5, 0xd7, 0x5c, 0xaf, - 0x85, 0x1c, 0xa2, 0x37, 0xae, 0xc2, 0xd0, 0x8d, 0x6b, 0x09, 0xca, 0xda, 0xf1, 0x44, 0x2e, 0xff, - 0xda, 0x7a, 0xab, 0x1d, 0x55, 0x30, 0xc6, 0xb1, 0x7f, 0xd5, 0x82, 0x19, 0x1e, 0xc3, 0x1d, 0x9f, - 0x87, 0x5f, 0xd4, 0xbe, 0x60, 0x42, 0xee, 0xc7, 0x93, 0xbe, 0x60, 0xef, 0x1d, 0x54, 0x2b, 0x22, - 0xea, 0x3b, 0xe9, 0x1a, 0xf6, 0x19, 0x69, 0x44, 0xe3, 0x1e, 0x6b, 0x63, 0xa7, 0xb6, 0xf1, 0xc4, - 0x62, 0x2a, 0x22, 0x18, 0xd3, 0xb3, 0xdf, 0x86, 0x29, 0x33, 0x18, 0x8b, 0xbc, 0x08, 0x95, 0x9e, - 0xeb, 0xb5, 0x93, 0x41, 0xbb, 0xfa, 0xa2, 0x61, 0x23, 0x06, 0xa1, 0x89, 0xc7, 0xab, 0xf9, 0x71, - 0xb5, 0xd4, 0xfd, 0xc4, 0x86, 0x6f, 0x56, 0x8b, 0xff, 0xf0, 0x87, 0x10, 0x32, 0x82, 0xfe, 0x72, - 0x7f, 0x08, 0x21, 0x83, 0xc7, 0xfb, 0xf7, 0x10, 0x42, 0x96, 0x30, 0x7f, 0xbe, 0x1e, 0x42, 0xf8, - 0x69, 0x38, 0x6d, 0x4e, 0x54, 0xb6, 0xd7, 0xdf, 0x33, 0x13, 0x2b, 0xe8, 0x16, 0x97, 0x99, 0x15, - 0x24, 0xd4, 0xfe, 0x9d, 0x02, 0xcc, 0xa5, 0x8f, 0xfc, 0x79, 0x7b, 0x53, 0x90, 0x6f, 0x58, 0x30, - 0xe3, 0x24, 0xf2, 0xcf, 0xe5, 0xf4, 0xaa, 0x52, 0x82, 0xa6, 0x91, 0xff, 0x2c, 0x51, 0x8e, 0x29, - 0xde, 0xe4, 0x2f, 0xc1, 0x64, 0xe4, 0x76, 0xa9, 0xdf, 0x17, 0x86, 0xc0, 0x82, 0x38, 0x90, 0x6f, - 0x8a, 0x22, 0x54, 0x30, 0xb6, 0x28, 0xbb, 0x5c, 0x83, 0x0a, 0xa8, 0xf4, 0x0c, 0x9e, 0x8b, 0x2d, - 0x97, 0xa2, 0x1c, 0x35, 0x06, 0xb9, 0x0f, 0x93, 0xc2, 0xef, 0x42, 0x39, 0xd8, 0xac, 0xe7, 0x64, - 0x9a, 0x10, 0xae, 0x1d, 0x71, 0x17, 0x88, 0xff, 0x21, 0x2a, 0x76, 0xf6, 0xc7, 0xe0, 0x94, 0x49, - 0x62, 0xed, 0xab, 0x40, 0xd0, 0xef, 0x74, 0xb6, 0x9c, 0xe6, 0xee, 0x1d, 0xd7, 0x6b, 0xf9, 0xf7, - 0xf8, 0x52, 0xb4, 0x04, 0xe5, 0x40, 0x86, 0xcc, 0x86, 0x72, 0xd4, 0xe8, 0xb5, 0x4c, 0xc5, 0xd2, - 0x86, 0x18, 0xe3, 0xd8, 0xbf, 0x3f, 0x06, 0x93, 0x32, 0xbe, 0xfb, 0x01, 0x44, 0x26, 0xec, 0x26, - 0xee, 0x83, 0x57, 0x73, 0x09, 0x4b, 0x1f, 0x1a, 0x96, 0x10, 0xa6, 0xc2, 0x12, 0x5e, 0xcb, 0x87, - 0xdd, 0xd1, 0x31, 0x09, 0xdf, 0x2d, 0xc2, 0x6c, 0x2a, 0x5e, 0x3e, 0x95, 0x4f, 0xda, 0x7a, 0x5f, - 0xf2, 0x49, 0x93, 0x30, 0x91, 0x53, 0x3c, 0x3f, 0x3f, 0xc6, 0xbf, 0x48, 0x2f, 0x9e, 0x97, 0x87, - 0x69, 0xf1, 0x83, 0xe3, 0x61, 0xfa, 0x5f, 0x2c, 0x78, 0x64, 0x68, 0xd6, 0x07, 0x9e, 0x34, 0x2c, - 0x48, 0x42, 0xe5, 0x7a, 0x91, 0x73, 0x6e, 0x1b, 0x7d, 0x77, 0x9c, 0xce, 0xf3, 0x94, 0x66, 0x4f, - 0x5e, 0x80, 0x29, 0xae, 0x9f, 0xb1, 0x95, 0x33, 0xa2, 0x3d, 0x79, 0xf5, 0xc5, 0x2f, 0x41, 0x1a, - 0x46, 0x39, 0x26, 0xb0, 0xec, 0xef, 0x58, 0x30, 0x3f, 0x2c, 0x85, 0xd4, 0x09, 0x0c, 0x33, 0x7f, - 0x35, 0x15, 0xd9, 0x51, 0x1d, 0x88, 0xec, 0x48, 0x99, 0x66, 0x54, 0x10, 0x87, 0x61, 0x15, 0x29, - 0x1c, 0x13, 0xb8, 0xf0, 0x07, 0x05, 0x98, 0x93, 0x22, 0xc6, 0x4a, 0xf1, 0x4b, 0x89, 0x78, 0x94, - 0x9f, 0x48, 0xc5, 0xa3, 0x5c, 0x4a, 0xe3, 0xff, 0x45, 0x30, 0xca, 0x07, 0x2b, 0x18, 0xe5, 0xeb, - 0x45, 0xb8, 0x9c, 0x99, 0x49, 0x8a, 0x7c, 0x2d, 0x63, 0xa7, 0xb8, 0x93, 0x73, 0xca, 0x2a, 0x1d, - 0xb7, 0x7a, 0xbe, 0x11, 0x1c, 0xbf, 0x6c, 0x46, 0x4e, 0x88, 0xd5, 0x7f, 0xfb, 0x1c, 0x92, 0x6f, - 0x9d, 0x36, 0x88, 0xe2, 0xc1, 0xbe, 0xb7, 0xf5, 0xe7, 0x60, 0xa9, 0xff, 0x7a, 0x01, 0x9e, 0x3e, - 0x69, 0xcb, 0x7e, 0x40, 0xa3, 0x0e, 0xc3, 0x44, 0xd4, 0xe1, 0x03, 0x52, 0x6d, 0xce, 0x25, 0x00, - 0xf1, 0x1f, 0x8e, 0xeb, 0x7d, 0x77, 0x70, 0xc2, 0x9e, 0xc8, 0x51, 0x63, 0x92, 0xa9, 0xbe, 0x2a, - 0x2b, 0x79, 0xbc, 0x37, 0x4c, 0x36, 0x44, 0xf1, 0x7b, 0x07, 0xd5, 0x0b, 0x71, 0x82, 0x17, 0x59, - 0x88, 0xaa, 0x12, 0x79, 0x1a, 0x4a, 0x81, 0x80, 0xaa, 0x38, 0x2b, 0xe9, 0xed, 0x22, 0xca, 0x50, - 0x43, 0xc9, 0x17, 0x8d, 0xb3, 0xc2, 0xf8, 0x79, 0xe5, 0x31, 0x3a, 0xca, 0x89, 0xe7, 0x4d, 0x28, - 0x85, 0x2a, 0x75, 0xb6, 0x98, 0x4e, 0xcf, 0x9f, 0x30, 0x7c, 0xcf, 0xd9, 0xa2, 0x1d, 0x95, 0x47, - 0x5b, 0x7c, 0x9f, 0xce, 0xb2, 0xad, 0x49, 0x12, 0x5b, 0x9f, 0xbd, 0xc5, 0x25, 0x03, 0x0c, 0x9e, - 0xbb, 0x49, 0x04, 0x93, 0xf2, 0xfd, 0x5c, 0x79, 0xfb, 0xb9, 0x9e, 0x53, 0x1c, 0x8c, 0xf4, 0x92, - 0xe6, 0x47, 0x5a, 0x65, 0x03, 0x52, 0xac, 0xec, 0x1f, 0x58, 0x50, 0x91, 0x63, 0xe4, 0x01, 0xc4, - 0x31, 0xde, 0x4d, 0xc6, 0x31, 0x5e, 0xcd, 0x65, 0x09, 0x1f, 0x12, 0xc4, 0x78, 0x17, 0xa6, 0xcc, - 0x9c, 0x8e, 0xe4, 0xd3, 0xc6, 0x16, 0x64, 0x8d, 0x92, 0x25, 0x4d, 0x6d, 0x52, 0xf1, 0xf6, 0x64, - 0xff, 0x46, 0x59, 0xb7, 0x22, 0x3f, 0x38, 0x9b, 0x23, 0xdf, 0x3a, 0x72, 0xe4, 0x9b, 0x03, 0x6f, - 0x2c, 0xff, 0x81, 0xf7, 0x3a, 0x94, 0xd4, 0xb2, 0x28, 0xb5, 0xa9, 0x27, 0x4d, 0xb7, 0x69, 0xa6, - 0x92, 0x31, 0x62, 0xc6, 0x74, 0xe1, 0x07, 0xe0, 0xd8, 0x32, 0xad, 0x96, 0x6b, 0x4d, 0x86, 0xbc, - 0x05, 0x95, 0x7b, 0x7e, 0xb0, 0xdb, 0xf1, 0x1d, 0xfe, 0x5e, 0x01, 0xe4, 0x71, 0x53, 0xaf, 0xad, - 0xcb, 0x22, 0x76, 0xe5, 0x4e, 0x4c, 0x1f, 0x4d, 0x66, 0xa4, 0x06, 0xb3, 0x5d, 0xd7, 0x43, 0xea, - 0xb4, 0x74, 0xb8, 0xe2, 0xb8, 0xc8, 0x15, 0xae, 0x74, 0xfb, 0xf5, 0x24, 0x18, 0xd3, 0xf8, 0xdc, - 0xf2, 0x14, 0x24, 0x4c, 0x1d, 0x32, 0x21, 0xf0, 0xc6, 0xe8, 0x83, 0x31, 0x69, 0x3e, 0x11, 0xc1, - 0x1b, 0xc9, 0x72, 0x4c, 0xf1, 0x26, 0x5f, 0x80, 0x52, 0xa8, 0x5e, 0xa6, 0x2c, 0xe6, 0x78, 0xea, - 0xd1, 0xaf, 0x53, 0xea, 0xae, 0xd4, 0xcf, 0x53, 0x6a, 0x86, 0x64, 0x0d, 0x2e, 0x29, 0xdb, 0x4d, - 0xe2, 0x91, 0xbd, 0x89, 0x38, 0xbf, 0x17, 0x66, 0xc0, 0x31, 0xb3, 0x16, 0xd3, 0x6d, 0x79, 0xae, - 0x54, 0x71, 0x33, 0x6a, 0x5c, 0x26, 0xf2, 0xf9, 0xd7, 0x42, 0x09, 0x3d, 0x2a, 0x1a, 0xb7, 0x34, - 0x42, 0x34, 0x6e, 0x03, 0x2e, 0xa7, 0x41, 0x3c, 0x71, 0x1b, 0xcf, 0x15, 0x67, 0x6c, 0xa1, 0x1b, - 0x59, 0x48, 0x98, 0x5d, 0x97, 0xdc, 0x81, 0x72, 0x40, 0xf9, 0x29, 0xaf, 0xa6, 0x9c, 0xca, 0x4e, - 0xed, 0x3e, 0x8b, 0x8a, 0x00, 0xc6, 0xb4, 0x58, 0xbf, 0x3b, 0xc9, 0xec, 0xdd, 0xaf, 0xe7, 0xf8, - 0x74, 0xb5, 0xec, 0xfb, 0x21, 0x09, 0x15, 0xed, 0x7f, 0x3b, 0x0b, 0xd3, 0x09, 0x03, 0x14, 0x79, - 0x12, 0x8a, 0x3c, 0x93, 0x1d, 0x5f, 0xad, 0x4a, 0xf1, 0x8a, 0x2a, 0x1a, 0x47, 0xc0, 0xc8, 0x2f, - 0x5a, 0x30, 0xdb, 0x4b, 0x5c, 0xa8, 0xa8, 0x85, 0x7c, 0x44, 0xab, 0x6d, 0xf2, 0x96, 0xc6, 0x78, - 0xf7, 0x22, 0xc9, 0x0c, 0xd3, 0xdc, 0xd9, 0x7a, 0x20, 0x7d, 0xd0, 0x3b, 0x34, 0xe0, 0xd8, 0x52, - 0xd1, 0xd3, 0x24, 0x96, 0x93, 0x60, 0x4c, 0xe3, 0xb3, 0x1e, 0xe6, 0x5f, 0x37, 0xca, 0xf3, 0xa4, - 0x35, 0x45, 0x00, 0x63, 0x5a, 0xe4, 0x15, 0x98, 0x91, 0x49, 0x9b, 0x37, 0xfc, 0xd6, 0x75, 0x27, - 0xdc, 0x91, 0x47, 0x3e, 0x7d, 0x44, 0x5d, 0x4e, 0x40, 0x31, 0x85, 0xcd, 0xbf, 0x2d, 0xce, 0x8c, - 0xcd, 0x09, 0x4c, 0x24, 0x9f, 0x05, 0x59, 0x4e, 0x82, 0x31, 0x8d, 0x4f, 0x9e, 0x35, 0xb6, 0x21, - 0xe1, 0xad, 0xa0, 0x57, 0x83, 0x8c, 0xad, 0xa8, 0x06, 0xb3, 0x7d, 0x7e, 0x42, 0x6e, 0x29, 0xa0, - 0x9c, 0x8f, 0x9a, 0xe1, 0xed, 0x24, 0x18, 0xd3, 0xf8, 0xe4, 0x65, 0x98, 0x0e, 0xd8, 0x62, 0xab, - 0x09, 0x08, 0x17, 0x06, 0x7d, 0x43, 0x8d, 0x26, 0x10, 0x93, 0xb8, 0xe4, 0x55, 0xb8, 0x10, 0xe7, - 0x38, 0x55, 0x04, 0x84, 0x4f, 0x83, 0x4e, 0xb8, 0x57, 0x4b, 0x23, 0xe0, 0x60, 0x1d, 0xf2, 0x37, - 0x60, 0xce, 0x68, 0x89, 0x55, 0xaf, 0x45, 0xef, 0xcb, 0x3c, 0x94, 0xfc, 0x99, 0xab, 0xe5, 0x14, - 0x0c, 0x07, 0xb0, 0xc9, 0x27, 0x61, 0xa6, 0xe9, 0x77, 0x3a, 0x7c, 0x8d, 0x13, 0x4f, 0x52, 0x88, - 0x84, 0x93, 0x22, 0x35, 0x67, 0x02, 0x82, 0x29, 0x4c, 0x72, 0x03, 0x88, 0xbf, 0xc5, 0xd4, 0x2b, - 0xda, 0x7a, 0x95, 0x7a, 0x54, 0x6a, 0x1c, 0xd3, 0xc9, 0x08, 0x98, 0x5b, 0x03, 0x18, 0x98, 0x51, - 0x8b, 0xe7, 0xeb, 0x33, 0x22, 0x86, 0x67, 0xf2, 0x78, 0x4b, 0x33, 0x6d, 0xcf, 0x39, 0x36, 0x5c, - 0x38, 0x80, 0x09, 0x11, 0x90, 0x94, 0x4f, 0xe6, 0x49, 0x33, 0x3b, 0x7d, 0xbc, 0x47, 0x88, 0x52, - 0x94, 0x9c, 0xc8, 0xcf, 0x41, 0x79, 0x4b, 0x3d, 0x55, 0xc2, 0xd3, 0x4d, 0x8e, 0xbc, 0x2f, 0xa6, - 0x5e, 0xdd, 0x89, 0xed, 0x15, 0x1a, 0x80, 0x31, 0x4b, 0xf2, 0x14, 0x54, 0xae, 0x6f, 0xd4, 0xf4, - 0x28, 0xbc, 0xc0, 0x7b, 0x7f, 0x9c, 0x55, 0x41, 0x13, 0xc0, 0x66, 0x98, 0x56, 0xdf, 0x48, 0xf2, - 0x9a, 0x3e, 0x43, 0x1b, 0x63, 0xd8, 0xdc, 0xef, 0x00, 0x1b, 0xf3, 0x17, 0x53, 0xd8, 0xb2, 0x1c, - 0x35, 0x06, 0x79, 0x13, 0x2a, 0x72, 0xbf, 0xe0, 0x6b, 0xd3, 0xa5, 0xb3, 0x45, 0xa3, 0x63, 0x4c, - 0x02, 0x4d, 0x7a, 0xfc, 0xc2, 0x98, 0xbf, 0xe0, 0x40, 0xaf, 0xf5, 0x3b, 0x9d, 0xf9, 0xcb, 0x7c, - 0xdd, 0x8c, 0x2f, 0x8c, 0x63, 0x10, 0x9a, 0x78, 0xe4, 0x79, 0xe5, 0x3f, 0xf6, 0x50, 0xe2, 0x06, - 0x5d, 0xfb, 0x8f, 0x69, 0xa5, 0x7b, 0x48, 0xc0, 0xca, 0xc3, 0xc7, 0x38, 0x6e, 0x6d, 0xc1, 0x82, - 0xd2, 0xf8, 0x06, 0x27, 0xc9, 0xfc, 0x7c, 0xc2, 0x76, 0xb4, 0x70, 0x67, 0x28, 0x26, 0x1e, 0x41, - 0x85, 0x6c, 0x41, 0xc1, 0xe9, 0x6c, 0xcd, 0x3f, 0x92, 0x87, 0xea, 0x5a, 0x5b, 0xab, 0xcb, 0x11, - 0xc5, 0x9d, 0x4c, 0x6b, 0x6b, 0x75, 0x64, 0xc4, 0x89, 0x0b, 0xe3, 0x4e, 0x67, 0x2b, 0x9c, 0x5f, - 0xe0, 0x73, 0x36, 0x37, 0x26, 0xb1, 0xf1, 0x60, 0xad, 0x1e, 0x22, 0x67, 0x61, 0x7f, 0x69, 0x4c, - 0xdf, 0x12, 0xe9, 0xe4, 0xdf, 0x6f, 0x9b, 0x13, 0x48, 0x1c, 0x77, 0x6e, 0xe5, 0x36, 0x81, 0xa4, - 0x7a, 0x31, 0x3d, 0x74, 0xfa, 0xf4, 0xf4, 0x92, 0x91, 0x4b, 0xd6, 0xb0, 0x64, 0x62, 0x73, 0x71, - 0x7a, 0x4e, 0x2e, 0x18, 0xf6, 0x97, 0x2b, 0xda, 0x0a, 0x9a, 0xf2, 0xbd, 0x0a, 0xa0, 0xe8, 0x86, - 0x91, 0xeb, 0xe7, 0x18, 0xa4, 0x9d, 0xca, 0x08, 0xce, 0x63, 0x40, 0x38, 0x00, 0x05, 0x2b, 0xc6, - 0xd3, 0x6b, 0xbb, 0xde, 0x7d, 0xf9, 0xf9, 0xaf, 0xe7, 0xee, 0x54, 0x25, 0x78, 0x72, 0x00, 0x0a, - 0x56, 0xe4, 0xae, 0x18, 0xd4, 0x85, 0x3c, 0xfa, 0xba, 0xb6, 0x56, 0x4f, 0xf1, 0x4b, 0x0e, 0xee, - 0xbb, 0x50, 0x08, 0xbb, 0xae, 0x54, 0x97, 0x46, 0xe4, 0xd5, 0x58, 0x5f, 0xcd, 0xe2, 0xd5, 0x58, - 0x5f, 0x45, 0xc6, 0x84, 0x7c, 0xd5, 0x02, 0x70, 0xba, 0x5b, 0x4e, 0x18, 0x3a, 0x2d, 0x6d, 0x9d, - 0x19, 0xf1, 0xa5, 0x8f, 0x9a, 0xa6, 0x97, 0x62, 0xcd, 0xdd, 0x88, 0x63, 0x28, 0x1a, 0x9c, 0xc9, - 0x5b, 0x30, 0xe9, 0x88, 0xa7, 0x14, 0xa5, 0x47, 0x7c, 0x3e, 0xef, 0x83, 0xa6, 0x24, 0xe0, 0x66, - 0x1a, 0x09, 0x42, 0xc5, 0x90, 0xf1, 0x8e, 0x02, 0x87, 0x6e, 0xbb, 0xbb, 0xd2, 0x38, 0xd4, 0x18, - 0xf9, 0xb1, 0x0f, 0x46, 0x2c, 0x8b, 0xb7, 0x04, 0xa1, 0x62, 0x48, 0x7e, 0xde, 0x82, 0xe9, 0xae, - 0xe3, 0x39, 0x3a, 0xce, 0x31, 0x9f, 0x68, 0x58, 0x33, 0x72, 0x32, 0xd6, 0x10, 0xd7, 0x4d, 0x46, - 0x98, 0xe4, 0x4b, 0xf6, 0x60, 0xc2, 0xe1, 0x8f, 0xbc, 0xca, 0xa3, 0x18, 0xe6, 0xf1, 0x60, 0x6c, - 0xaa, 0x0d, 0xf8, 0xe2, 0x22, 0x9f, 0x92, 0x95, 0xdc, 0xc8, 0xaf, 0x59, 0x30, 0x29, 0x9c, 0xb5, - 0x99, 0x42, 0xca, 0xbe, 0xfd, 0x73, 0xe7, 0xf0, 0xb2, 0x80, 0x74, 0x24, 0x97, 0xee, 0x47, 0x1f, - 0xd1, 0x9e, 0xa8, 0xa2, 0xf4, 0x48, 0x57, 0x72, 0x25, 0x1d, 0x53, 0x7d, 0xbb, 0xce, 0xfd, 0xc4, - 0x53, 0x2e, 0xa6, 0xea, 0xbb, 0x9e, 0x82, 0xe1, 0x00, 0xf6, 0xc2, 0x27, 0x61, 0xca, 0x94, 0xe3, - 0x54, 0xee, 0xe8, 0x3f, 0x2a, 0x00, 0xf0, 0xae, 0x12, 0xb9, 0x51, 0xba, 0x3c, 0x91, 0xf2, 0x8e, - 0xdf, 0xca, 0xe9, 0x49, 0x49, 0x23, 0xc5, 0x09, 0xc8, 0xac, 0xc9, 0x3b, 0x7e, 0x0b, 0x25, 0x13, - 0xd2, 0x86, 0xf1, 0x9e, 0x13, 0xed, 0xe4, 0x9f, 0x4f, 0xa5, 0x24, 0x82, 0x84, 0xa3, 0x1d, 0xe4, - 0x0c, 0xc8, 0x3b, 0x56, 0xec, 0xd9, 0x53, 0xc8, 0x23, 0x17, 0x6c, 0xdc, 0x66, 0x8b, 0xd2, 0x97, - 0x27, 0x95, 0x12, 0x35, 0xed, 0xe1, 0xb3, 0xf0, 0xae, 0x05, 0x53, 0x26, 0x6a, 0x46, 0x37, 0xfd, - 0xac, 0xd9, 0x4d, 0x79, 0xb6, 0x87, 0xd9, 0xe3, 0xff, 0xcd, 0x02, 0xc0, 0xbe, 0xd7, 0xe8, 0x77, - 0xbb, 0x4c, 0x6d, 0xd7, 0x5e, 0xf7, 0xd6, 0x89, 0xbd, 0xee, 0xc7, 0x4e, 0xe9, 0x75, 0x5f, 0x38, - 0x95, 0xd7, 0xfd, 0xf8, 0xe9, 0xbd, 0xee, 0x8b, 0xc3, 0xbd, 0xee, 0xed, 0x6f, 0x59, 0x70, 0x61, - 0x60, 0xbf, 0x62, 0x9a, 0x74, 0xe0, 0xfb, 0xd1, 0x10, 0x8f, 0x4d, 0x8c, 0x41, 0x68, 0xe2, 0x91, - 0x15, 0x98, 0x93, 0xcf, 0x86, 0x34, 0x7a, 0x1d, 0x37, 0x33, 0xd7, 0xcd, 0x66, 0x0a, 0x8e, 0x03, - 0x35, 0xec, 0xdf, 0xb1, 0xa0, 0x62, 0x44, 0xc8, 0xb3, 0xef, 0xe0, 0x6e, 0xbb, 0x52, 0x8c, 0xf8, - 0xc5, 0x14, 0x7e, 0xd5, 0x25, 0x60, 0xe2, 0x1a, 0xba, 0x6d, 0x24, 0x95, 0x8f, 0xaf, 0xa1, 0x59, - 0x29, 0x4a, 0xa8, 0x48, 0x17, 0x4e, 0x7b, 0xbc, 0xd1, 0x0b, 0x66, 0xba, 0x70, 0xda, 0x43, 0x0e, - 0xe1, 0xec, 0xd8, 0x91, 0x42, 0x7a, 0xe4, 0x1a, 0x0f, 0xb4, 0x38, 0x41, 0x84, 0x02, 0x46, 0x1e, - 0x87, 0x02, 0xf5, 0x5a, 0xd2, 0xfe, 0xa1, 0x9f, 0x50, 0xbd, 0xea, 0xb5, 0x90, 0x95, 0xdb, 0xb7, - 0x60, 0x4a, 0x78, 0x23, 0xbf, 0x46, 0xf7, 0x4f, 0xfc, 0x26, 0x2b, 0x1b, 0xed, 0xa9, 0x37, 0x59, - 0x59, 0x75, 0x56, 0x6e, 0xff, 0x13, 0x0b, 0x52, 0xaf, 0x08, 0x19, 0x37, 0x30, 0xd6, 0xd0, 0x1b, - 0x18, 0xd3, 0x6a, 0x3f, 0x76, 0xa4, 0xd5, 0xfe, 0x06, 0x90, 0x2e, 0x9b, 0x0a, 0xc9, 0x85, 0xb6, - 0x90, 0x7c, 0xda, 0x61, 0x7d, 0x00, 0x03, 0x33, 0x6a, 0xd9, 0xff, 0x58, 0x08, 0x6b, 0xbe, 0x2b, - 0x74, 0x7c, 0x03, 0xf4, 0xa1, 0xc8, 0x49, 0x49, 0xfb, 0xdb, 0x88, 0xb6, 0xeb, 0xc1, 0xbc, 0x56, - 0x71, 0x47, 0xca, 0x29, 0xcf, 0xb9, 0xd9, 0x7f, 0x20, 0x64, 0x35, 0x1e, 0x1e, 0x3a, 0x81, 0xac, - 0xdd, 0xa4, 0xac, 0xd7, 0xf3, 0x5a, 0x2b, 0xb3, 0x65, 0x24, 0x8b, 0x00, 0x3d, 0x1a, 0x34, 0xa9, - 0x17, 0xa9, 0x38, 0xa1, 0xa2, 0x8c, 0x58, 0xd5, 0xa5, 0x68, 0x60, 0xd8, 0xdf, 0x64, 0x13, 0x28, - 0x7e, 0xad, 0x98, 0x3c, 0x9d, 0x76, 0x75, 0x4d, 0x4f, 0x0e, 0xed, 0xe9, 0x6a, 0x44, 0x8f, 0x8c, - 0x1d, 0x13, 0x3d, 0xf2, 0x0c, 0x4c, 0x06, 0x7e, 0x87, 0xd6, 0x02, 0x2f, 0xed, 0xa3, 0x83, 0xac, - 0x18, 0x6f, 0xa2, 0x82, 0xdb, 0xbf, 0x62, 0xc1, 0x5c, 0x3a, 0xbc, 0x2d, 0x77, 0xff, 0x5b, 0x33, - 0x06, 0xbf, 0x70, 0xfa, 0x18, 0x7c, 0xfb, 0x1d, 0x26, 0x64, 0xe4, 0x36, 0x77, 0x5d, 0x4f, 0x84, - 0xad, 0xb3, 0x96, 0x7b, 0x06, 0x26, 0xa9, 0x7c, 0x75, 0x55, 0x98, 0x91, 0xb5, 0x90, 0xea, 0xb1, - 0x55, 0x05, 0x27, 0x35, 0x98, 0x55, 0x97, 0x67, 0xca, 0xf6, 0x2f, 0xd2, 0x6d, 0x68, 0x5b, 0xe3, - 0x4a, 0x12, 0x8c, 0x69, 0x7c, 0xfb, 0x8b, 0x50, 0x31, 0x36, 0x25, 0xbe, 0x7e, 0xdf, 0x77, 0x9a, - 0x51, 0x7a, 0xdd, 0xbb, 0xca, 0x0a, 0x51, 0xc0, 0xf8, 0x15, 0x85, 0x88, 0xbe, 0x49, 0xad, 0x7b, - 0x32, 0xe6, 0x46, 0x42, 0x19, 0xb1, 0x80, 0xb6, 0xe9, 0x7d, 0x95, 0xf3, 0x5f, 0x11, 0x43, 0x56, - 0x88, 0x02, 0x66, 0x3f, 0x0b, 0x25, 0x95, 0x14, 0x89, 0x67, 0x16, 0x51, 0xe6, 0x73, 0x33, 0xb3, - 0x88, 0x1f, 0x44, 0xc8, 0x21, 0xf6, 0x1b, 0x50, 0x52, 0xb9, 0x9b, 0x8e, 0xc7, 0x66, 0x4b, 0x51, - 0xe8, 0xb9, 0xd7, 0xfd, 0x30, 0x52, 0x09, 0xa7, 0xc4, 0x0d, 0xdf, 0xcd, 0x55, 0x5e, 0x86, 0x1a, - 0x6a, 0xff, 0x99, 0x05, 0x95, 0xcd, 0xcd, 0x35, 0x7d, 0xf0, 0x47, 0x78, 0x28, 0x14, 0x2d, 0x54, - 0xdb, 0x8e, 0xa8, 0xe9, 0x4a, 0x20, 0x16, 0xbe, 0x85, 0xc3, 0x83, 0xea, 0x43, 0x8d, 0x4c, 0x0c, - 0x1c, 0x52, 0x93, 0xac, 0xc2, 0x45, 0x13, 0x22, 0x13, 0x01, 0xc8, 0x35, 0x92, 0x3f, 0xd3, 0xdb, - 0x18, 0x04, 0x63, 0x56, 0x9d, 0x34, 0x29, 0xb9, 0xdd, 0x9b, 0x2f, 0xfe, 0x36, 0x06, 0xc1, 0x98, - 0x55, 0xc7, 0x7e, 0x1e, 0x66, 0x53, 0x77, 0xdc, 0x27, 0x48, 0xc0, 0xf2, 0xbb, 0x05, 0x98, 0x32, - 0xaf, 0x3a, 0x4f, 0xb0, 0x7e, 0x9d, 0x7c, 0x5b, 0xc8, 0xb8, 0x9e, 0x2c, 0x9c, 0xf2, 0x7a, 0xd2, - 0xbc, 0x0f, 0x1e, 0x3f, 0xdf, 0xfb, 0xe0, 0x62, 0x3e, 0xf7, 0xc1, 0x86, 0xdf, 0xc2, 0xc4, 0x83, - 0xf3, 0x5b, 0xf8, 0xed, 0x22, 0xcc, 0x24, 0x33, 0x7a, 0x9e, 0xa0, 0x27, 0x9f, 0x1d, 0xe8, 0xc9, - 0x53, 0xde, 0x87, 0x14, 0x46, 0xbd, 0x0f, 0x19, 0x1f, 0xf5, 0x3e, 0xa4, 0x78, 0x86, 0xfb, 0x90, - 0xc1, 0xdb, 0x8c, 0x89, 0x13, 0xdf, 0x66, 0x7c, 0x4a, 0xbb, 0x78, 0x4e, 0x26, 0x5c, 0x80, 0x62, - 0x17, 0x4f, 0x92, 0xec, 0x86, 0x65, 0xbf, 0x95, 0xe9, 0x9a, 0x5a, 0x3a, 0xc6, 0xee, 0x1b, 0x64, - 0x7a, 0x64, 0x9e, 0xfe, 0xca, 0xf5, 0xa1, 0x53, 0x78, 0x63, 0xbe, 0x08, 0x15, 0x39, 0x9e, 0xb8, - 0xf2, 0x0d, 0x49, 0xc5, 0xbd, 0x11, 0x83, 0xd0, 0xc4, 0xe3, 0x0f, 0xf6, 0xc7, 0x13, 0x84, 0xdf, - 0xcc, 0x55, 0x52, 0x0f, 0xf6, 0x27, 0xc1, 0x98, 0xc6, 0xb7, 0xbf, 0x00, 0x97, 0x33, 0x4d, 0x30, - 0xdc, 0xfc, 0xcd, 0xf5, 0x42, 0xda, 0x92, 0x08, 0x86, 0x18, 0xa9, 0x87, 0x3e, 0x16, 0xee, 0x0c, - 0xc5, 0xc4, 0x23, 0xa8, 0xd8, 0xbf, 0x59, 0x80, 0x99, 0xe4, 0x6b, 0xaf, 0xe4, 0x9e, 0x36, 0xd8, - 0xe6, 0x62, 0x2b, 0x16, 0x64, 0x8d, 0x2c, 0x91, 0x43, 0x2f, 0x7a, 0xee, 0xf1, 0xf1, 0xb5, 0xa5, - 0x53, 0x56, 0x9e, 0x1f, 0x63, 0x79, 0xc3, 0x22, 0xd9, 0xf1, 0x07, 0x5d, 0xe3, 0x80, 0x52, 0x79, - 0x8e, 0xcf, 0x9d, 0x7b, 0x1c, 0x18, 0xa9, 0x59, 0xa1, 0xc1, 0x96, 0xed, 0x2d, 0x7b, 0x34, 0x70, - 0xb7, 0x5d, 0xfd, 0x52, 0x3d, 0x5f, 0xb9, 0xdf, 0x90, 0x65, 0xa8, 0xa1, 0xf6, 0x3b, 0x63, 0x50, - 0xe6, 0xf9, 0xaf, 0xae, 0x05, 0x7e, 0x97, 0x3f, 0x89, 0x18, 0x1a, 0x67, 0x26, 0xd9, 0x6d, 0x37, - 0x46, 0x7d, 0x77, 0x34, 0xa6, 0x28, 0xdd, 0xdd, 0x8d, 0x12, 0x4c, 0x70, 0x24, 0x3d, 0x28, 0x6d, - 0xcb, 0x7c, 0xbd, 0xb2, 0xef, 0x46, 0xcc, 0x39, 0xa9, 0xb2, 0xff, 0x8a, 0x26, 0x50, 0xff, 0x50, - 0x73, 0xb1, 0x1d, 0x98, 0x4d, 0x25, 0x30, 0xc9, 0x3d, 0xcb, 0xef, 0xff, 0x1c, 0x87, 0xb2, 0x8e, - 0xb3, 0x22, 0x9f, 0x48, 0x18, 0xb0, 0xca, 0xf5, 0x0f, 0x1b, 0xef, 0x75, 0xed, 0xf8, 0xad, 0xf7, - 0x0e, 0xaa, 0xb3, 0x1a, 0x39, 0x65, 0x8c, 0x7a, 0x1c, 0x0a, 0xfd, 0xa0, 0x93, 0x3e, 0xa1, 0xde, - 0xc6, 0x35, 0x64, 0xe5, 0x66, 0x6c, 0x58, 0xe1, 0x81, 0xc6, 0x86, 0xb1, 0x5d, 0x72, 0xcb, 0x6f, - 0xed, 0xa7, 0xdf, 0xf7, 0xaa, 0xfb, 0xad, 0x7d, 0xe4, 0x10, 0xf2, 0x0a, 0xcc, 0xc8, 0x80, 0x37, - 0xa5, 0xc4, 0x14, 0xb9, 0x9e, 0xaa, 0x1d, 0x17, 0x36, 0x13, 0x50, 0x4c, 0x61, 0xb3, 0x5d, 0xf6, - 0x6e, 0xe8, 0x7b, 0x3c, 0x77, 0xf3, 0x44, 0xf2, 0x96, 0xf3, 0x46, 0xe3, 0xd6, 0x4d, 0x6e, 0x48, - 0xd3, 0x18, 0x89, 0x98, 0xba, 0xc9, 0x63, 0x63, 0xea, 0x56, 0x04, 0x6d, 0x26, 0x2d, 0xdf, 0x51, - 0xa6, 0xea, 0x4f, 0x2b, 0xba, 0xac, 0xec, 0xbd, 0x83, 0x23, 0x8c, 0xa4, 0xba, 0x66, 0x56, 0xf4, - 0x61, 0xf9, 0xfd, 0x8b, 0x3e, 0xb4, 0x6f, 0xc3, 0x6c, 0xaa, 0xff, 0x94, 0x81, 0xc3, 0xca, 0x36, - 0x70, 0x9c, 0xec, 0x85, 0xb0, 0x7f, 0x66, 0xc1, 0x85, 0x81, 0x15, 0xe9, 0xa4, 0x61, 0xa0, 0xe9, - 0xbd, 0x71, 0xec, 0xec, 0x7b, 0x63, 0xe1, 0x74, 0x7b, 0x63, 0x7d, 0xeb, 0x7b, 0x3f, 0xbc, 0xf2, - 0xa1, 0xef, 0xff, 0xf0, 0xca, 0x87, 0xfe, 0xf0, 0x87, 0x57, 0x3e, 0xf4, 0xce, 0xe1, 0x15, 0xeb, - 0x7b, 0x87, 0x57, 0xac, 0xef, 0x1f, 0x5e, 0xb1, 0xfe, 0xf0, 0xf0, 0x8a, 0xf5, 0x9f, 0x0f, 0xaf, - 0x58, 0xdf, 0xfa, 0x93, 0x2b, 0x1f, 0xfa, 0xf4, 0xa7, 0xe2, 0x9e, 0x5a, 0x52, 0x3d, 0xc5, 0x7f, - 0x7c, 0x54, 0xf5, 0xcb, 0x52, 0x6f, 0xb7, 0xbd, 0xc4, 0x7a, 0x6a, 0x49, 0x97, 0xa8, 0x9e, 0xfa, - 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x4c, 0x7d, 0x66, 0x21, 0xe0, 0xa6, 0x00, 0x00, + // 8634 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x64, 0xd7, + 0x75, 0x98, 0x1f, 0x87, 0x43, 0xce, 0x9c, 0xe1, 0x92, 0xdc, 0xbb, 0xbb, 0x12, 0x45, 0x49, 0x3b, + 0xeb, 0xa7, 0x54, 0x95, 0x62, 0x99, 0xb4, 0x57, 0x52, 0x2b, 0x5b, 0xae, 0xda, 0x19, 0x72, 0x57, + 0xcb, 0x15, 0xb9, 0x4b, 0x9d, 0xe1, 0x6a, 0x13, 0xdb, 0x4a, 0xfc, 0x38, 0x73, 0x39, 0x7c, 0xcb, + 0x99, 0xf7, 0xc6, 0xef, 0xbd, 0xe1, 0x2e, 0x65, 0x21, 0x96, 0x6d, 0x28, 0x71, 0x5c, 0x1b, 0x71, + 0x93, 0x18, 0x45, 0xd1, 0xa2, 0x70, 0x83, 0x00, 0x69, 0x9b, 0xfc, 0x28, 0x82, 0x14, 0xed, 0x8f, + 0x00, 0x2d, 0xea, 0x26, 0x70, 0x80, 0xa6, 0x70, 0x7e, 0xb4, 0x4e, 0x0b, 0x84, 0xa9, 0x99, 0xfe, + 0x69, 0xd0, 0xc2, 0x68, 0xe1, 0x22, 0xa8, 0x7e, 0x14, 0xc5, 0xfd, 0x7c, 0xf7, 0xbd, 0x79, 0xc3, + 0xaf, 0x79, 0x5c, 0x29, 0x4d, 0xfe, 0xcd, 0xdc, 0x73, 0xee, 0x39, 0xe7, 0xdd, 0xcf, 0x73, 0xcf, + 0x3d, 0xe7, 0x5c, 0x58, 0x6d, 0xbb, 0xd1, 0x76, 0x7f, 0x73, 0xa1, 0xe9, 0x77, 0x17, 0x9d, 0xa0, + 0xed, 0xf7, 0x02, 0xff, 0x1e, 0xff, 0xf1, 0xd1, 0xc0, 0xef, 0x74, 0xfc, 0x7e, 0x14, 0x2e, 0xf6, + 0x76, 0xda, 0x8b, 0x4e, 0xcf, 0x0d, 0x17, 0x75, 0xc9, 0xee, 0xc7, 0x9d, 0x4e, 0x6f, 0xdb, 0xf9, + 0xf8, 0x62, 0x9b, 0x7a, 0x34, 0x70, 0x22, 0xda, 0x5a, 0xe8, 0x05, 0x7e, 0xe4, 0x93, 0x4f, 0xc5, + 0xd4, 0x16, 0x14, 0x35, 0xfe, 0xe3, 0xa7, 0x55, 0xdd, 0x85, 0xde, 0x4e, 0x7b, 0x81, 0x51, 0x5b, + 0xd0, 0x25, 0x8a, 0xda, 0xfc, 0x47, 0x0d, 0x59, 0xda, 0x7e, 0xdb, 0x5f, 0xe4, 0x44, 0x37, 0xfb, + 0x5b, 0xfc, 0x1f, 0xff, 0xc3, 0x7f, 0x09, 0x66, 0xf3, 0x4f, 0xed, 0xbc, 0x14, 0x2e, 0xb8, 0x3e, + 0x93, 0x6d, 0x71, 0xd3, 0x89, 0x9a, 0xdb, 0x8b, 0xbb, 0x03, 0x12, 0xcd, 0xdb, 0x06, 0x52, 0xd3, + 0x0f, 0x68, 0x16, 0xce, 0x0b, 0x31, 0x4e, 0xd7, 0x69, 0x6e, 0xbb, 0x1e, 0x0d, 0xf6, 0xe2, 0xaf, + 0xee, 0xd2, 0xc8, 0xc9, 0xaa, 0xb5, 0x38, 0xac, 0x56, 0xd0, 0xf7, 0x22, 0xb7, 0x4b, 0x07, 0x2a, + 0xfc, 0xb5, 0xa3, 0x2a, 0x84, 0xcd, 0x6d, 0xda, 0x75, 0x06, 0xea, 0x3d, 0x3f, 0xac, 0x5e, 0x3f, + 0x72, 0x3b, 0x8b, 0xae, 0x17, 0x85, 0x51, 0x90, 0xae, 0x64, 0xff, 0xb0, 0x00, 0xe5, 0xda, 0x6a, + 0xbd, 0x11, 0x39, 0x51, 0x3f, 0x24, 0x3f, 0x6b, 0xc1, 0x54, 0xc7, 0x77, 0x5a, 0x75, 0xa7, 0xe3, + 0x78, 0x4d, 0x1a, 0xcc, 0x59, 0x57, 0xac, 0x67, 0x2a, 0x57, 0x57, 0x17, 0x46, 0xe9, 0xaf, 0x85, + 0xda, 0xfd, 0x10, 0x69, 0xe8, 0xf7, 0x83, 0x26, 0x45, 0xba, 0x55, 0xbf, 0xf8, 0xdd, 0xfd, 0xea, + 0x87, 0x0e, 0xf6, 0xab, 0x53, 0xab, 0x06, 0x27, 0x4c, 0xf0, 0x25, 0xdf, 0xb2, 0xe0, 0x7c, 0xd3, + 0xf1, 0x9c, 0x60, 0x6f, 0xc3, 0x09, 0xda, 0x34, 0x7a, 0x35, 0xf0, 0xfb, 0xbd, 0xb9, 0xb1, 0x33, + 0x90, 0xe6, 0x31, 0x29, 0xcd, 0xf9, 0xa5, 0x34, 0x3b, 0x1c, 0x94, 0x80, 0xcb, 0x15, 0x46, 0xce, + 0x66, 0x87, 0x9a, 0x72, 0x15, 0xce, 0x52, 0xae, 0x46, 0x9a, 0x1d, 0x0e, 0x4a, 0x40, 0x9e, 0x85, + 0x49, 0xd7, 0x6b, 0x07, 0x34, 0x0c, 0xe7, 0xc6, 0xaf, 0x58, 0xcf, 0x94, 0xeb, 0x33, 0xb2, 0xfa, + 0xe4, 0x8a, 0x28, 0x46, 0x05, 0xb7, 0x7f, 0xb3, 0x00, 0xe7, 0x6b, 0xab, 0xf5, 0x8d, 0xc0, 0xd9, + 0xda, 0x72, 0x9b, 0xe8, 0xf7, 0x23, 0xd7, 0x6b, 0x9b, 0x04, 0xac, 0xc3, 0x09, 0x90, 0x17, 0xa1, + 0x12, 0xd2, 0x60, 0xd7, 0x6d, 0xd2, 0x75, 0x3f, 0x88, 0x78, 0xa7, 0x14, 0xeb, 0x17, 0x24, 0x7a, + 0xa5, 0x11, 0x83, 0xd0, 0xc4, 0x63, 0xd5, 0x02, 0xdf, 0x8f, 0x24, 0x9c, 0xb7, 0x59, 0x39, 0xae, + 0x86, 0x31, 0x08, 0x4d, 0x3c, 0xb2, 0x0c, 0xb3, 0x8e, 0xe7, 0xf9, 0x91, 0x13, 0xb9, 0xbe, 0xb7, + 0x1e, 0xd0, 0x2d, 0xf7, 0x81, 0xfc, 0xc4, 0x39, 0x59, 0x77, 0xb6, 0x96, 0x82, 0xe3, 0x40, 0x0d, + 0xf2, 0x4d, 0x0b, 0x66, 0xc3, 0xc8, 0x6d, 0xee, 0xb8, 0x1e, 0x0d, 0xc3, 0x25, 0xdf, 0xdb, 0x72, + 0xdb, 0x73, 0x45, 0xde, 0x6d, 0xb7, 0x46, 0xeb, 0xb6, 0x46, 0x8a, 0x6a, 0xfd, 0x22, 0x13, 0x29, + 0x5d, 0x8a, 0x03, 0xdc, 0xc9, 0x47, 0xa0, 0x2c, 0x5b, 0x94, 0x86, 0x73, 0x13, 0x57, 0x0a, 0xcf, + 0x94, 0xeb, 0xe7, 0x0e, 0xf6, 0xab, 0xe5, 0x15, 0x55, 0x88, 0x31, 0xdc, 0x5e, 0x86, 0xb9, 0x5a, + 0x77, 0xd3, 0x09, 0x43, 0xa7, 0xe5, 0x07, 0xa9, 0xae, 0x7b, 0x06, 0x4a, 0x5d, 0xa7, 0xd7, 0x73, + 0xbd, 0x36, 0xeb, 0x3b, 0x46, 0x67, 0xea, 0x60, 0xbf, 0x5a, 0x5a, 0x93, 0x65, 0xa8, 0xa1, 0xf6, + 0x7f, 0x1a, 0x83, 0x4a, 0xcd, 0x73, 0x3a, 0x7b, 0xa1, 0x1b, 0x62, 0xdf, 0x23, 0x9f, 0x83, 0x12, + 0x5b, 0xb5, 0x5a, 0x4e, 0xe4, 0xc8, 0x99, 0xfe, 0xb1, 0x05, 0xb1, 0x88, 0x2c, 0x98, 0x8b, 0x48, + 0xfc, 0xf9, 0x0c, 0x7b, 0x61, 0xf7, 0xe3, 0x0b, 0xb7, 0x37, 0xef, 0xd1, 0x66, 0xb4, 0x46, 0x23, + 0xa7, 0x4e, 0x64, 0x2f, 0x40, 0x5c, 0x86, 0x9a, 0x2a, 0xf1, 0x61, 0x3c, 0xec, 0xd1, 0xa6, 0x9c, + 0xb9, 0x6b, 0x23, 0xce, 0x90, 0x58, 0xf4, 0x46, 0x8f, 0x36, 0xeb, 0x53, 0x92, 0xf5, 0x38, 0xfb, + 0x87, 0x9c, 0x11, 0xb9, 0x0f, 0x13, 0x21, 0x5f, 0xcb, 0xe4, 0xa4, 0xbc, 0x9d, 0x1f, 0x4b, 0x4e, + 0xb6, 0x3e, 0x2d, 0x99, 0x4e, 0x88, 0xff, 0x28, 0xd9, 0xd9, 0xff, 0xd9, 0x82, 0x0b, 0x06, 0x76, + 0x2d, 0x68, 0xf7, 0xbb, 0xd4, 0x8b, 0xc8, 0x15, 0x18, 0xf7, 0x9c, 0x2e, 0x95, 0xb3, 0x4a, 0x8b, + 0x7c, 0xcb, 0xe9, 0x52, 0xe4, 0x10, 0xf2, 0x14, 0x14, 0x77, 0x9d, 0x4e, 0x9f, 0xf2, 0x46, 0x2a, + 0xd7, 0xcf, 0x49, 0x94, 0xe2, 0x1b, 0xac, 0x10, 0x05, 0x8c, 0xbc, 0x0d, 0x65, 0xfe, 0xe3, 0x7a, + 0xe0, 0x77, 0x73, 0xfa, 0x34, 0x29, 0xe1, 0x1b, 0x8a, 0xac, 0x18, 0x7e, 0xfa, 0x2f, 0xc6, 0x0c, + 0xed, 0x3f, 0xb6, 0x60, 0xc6, 0xf8, 0xb8, 0x55, 0x37, 0x8c, 0xc8, 0x67, 0x07, 0x06, 0xcf, 0xc2, + 0xf1, 0x06, 0x0f, 0xab, 0xcd, 0x87, 0xce, 0xac, 0xfc, 0xd2, 0x92, 0x2a, 0x31, 0x06, 0x8e, 0x07, + 0x45, 0x37, 0xa2, 0xdd, 0x70, 0x6e, 0xec, 0x4a, 0xe1, 0x99, 0xca, 0xd5, 0x95, 0xdc, 0xba, 0x31, + 0x6e, 0xdf, 0x15, 0x46, 0x1f, 0x05, 0x1b, 0xfb, 0xb7, 0x0a, 0x89, 0xee, 0x5b, 0x53, 0x72, 0xbc, + 0x6b, 0xc1, 0x44, 0xc7, 0xd9, 0xa4, 0x1d, 0x31, 0xb7, 0x2a, 0x57, 0xdf, 0xcc, 0x4d, 0x12, 0xc5, + 0x63, 0x61, 0x95, 0xd3, 0xbf, 0xe6, 0x45, 0xc1, 0x5e, 0x3c, 0xbc, 0x44, 0x21, 0x4a, 0xe6, 0xe4, + 0xef, 0x59, 0x50, 0x89, 0x57, 0x35, 0xd5, 0x2c, 0x9b, 0xf9, 0x0b, 0x13, 0x2f, 0xa6, 0x52, 0x22, + 0xbd, 0x44, 0x1b, 0x10, 0x34, 0x65, 0x99, 0xff, 0x04, 0x54, 0x8c, 0x4f, 0x20, 0xb3, 0x50, 0xd8, + 0xa1, 0x7b, 0x62, 0xc0, 0x23, 0xfb, 0x49, 0x2e, 0x26, 0x46, 0xb8, 0x1c, 0xd2, 0x9f, 0x1c, 0x7b, + 0xc9, 0x9a, 0x7f, 0x05, 0x66, 0xd3, 0x0c, 0x4f, 0x52, 0xdf, 0xfe, 0x67, 0xc5, 0xc4, 0xc0, 0x64, + 0x0b, 0x01, 0xf1, 0x61, 0xb2, 0x4b, 0xa3, 0xc0, 0x6d, 0xaa, 0x2e, 0x5b, 0x1e, 0xad, 0x95, 0xd6, + 0x38, 0xb1, 0x78, 0x43, 0x14, 0xff, 0x43, 0x54, 0x5c, 0xc8, 0x36, 0x8c, 0x3b, 0x41, 0x5b, 0xf5, + 0xc9, 0xf5, 0x7c, 0xa6, 0x65, 0xbc, 0x54, 0xd4, 0x82, 0x76, 0x88, 0x9c, 0x03, 0x59, 0x84, 0x72, + 0x44, 0x83, 0xae, 0xeb, 0x39, 0x91, 0xd8, 0x41, 0x4b, 0xf5, 0xf3, 0x12, 0xad, 0xbc, 0xa1, 0x00, + 0x18, 0xe3, 0x90, 0x0e, 0x4c, 0xb4, 0x82, 0x3d, 0xec, 0x7b, 0x73, 0xe3, 0x79, 0x34, 0xc5, 0x32, + 0xa7, 0x15, 0x0f, 0x52, 0xf1, 0x1f, 0x25, 0x0f, 0xf2, 0xab, 0x16, 0x5c, 0xec, 0x52, 0x27, 0xec, + 0x07, 0x94, 0x7d, 0x02, 0xd2, 0x88, 0x7a, 0xac, 0x63, 0xe7, 0x8a, 0x9c, 0x39, 0x8e, 0xda, 0x0f, + 0x83, 0x94, 0xeb, 0x4f, 0x48, 0x51, 0x2e, 0x66, 0x41, 0x31, 0x53, 0x1a, 0xf2, 0x36, 0x54, 0xa2, + 0xa8, 0xd3, 0x88, 0x98, 0x1e, 0xdc, 0xde, 0x9b, 0x9b, 0xe0, 0x8b, 0xd7, 0x88, 0x2b, 0xcc, 0xc6, + 0xc6, 0xaa, 0x22, 0x58, 0x9f, 0x61, 0xb3, 0xc5, 0x28, 0x40, 0x93, 0x9d, 0xfd, 0x2f, 0x8b, 0x70, + 0x7e, 0x60, 0x5b, 0x21, 0x2f, 0x40, 0xb1, 0xb7, 0xed, 0x84, 0x6a, 0x9f, 0xb8, 0xac, 0x16, 0xa9, + 0x75, 0x56, 0xf8, 0xde, 0x7e, 0xf5, 0x9c, 0xaa, 0xc2, 0x0b, 0x50, 0x20, 0x33, 0xad, 0xad, 0x4b, + 0xc3, 0xd0, 0x69, 0xab, 0xcd, 0xc3, 0x18, 0xa4, 0xbc, 0x18, 0x15, 0x9c, 0xfc, 0x9c, 0x05, 0xe7, + 0xc4, 0x80, 0x45, 0x1a, 0xf6, 0x3b, 0x11, 0xdb, 0x20, 0x59, 0xa7, 0xdc, 0xcc, 0x63, 0x72, 0x08, + 0x92, 0xf5, 0x4b, 0x92, 0xfb, 0x39, 0xb3, 0x34, 0xc4, 0x24, 0x5f, 0x72, 0x17, 0xca, 0x61, 0xe4, + 0x04, 0x11, 0x6d, 0xd5, 0x22, 0xae, 0xca, 0x55, 0xae, 0xfe, 0xf8, 0xf1, 0x76, 0x8e, 0x0d, 0xb7, + 0x4b, 0xc5, 0x2e, 0xd5, 0x50, 0x04, 0x30, 0xa6, 0x45, 0xde, 0x06, 0x08, 0xfa, 0x5e, 0xa3, 0xdf, + 0xed, 0x3a, 0xc1, 0x9e, 0xd4, 0xee, 0x6e, 0x8c, 0xf6, 0x79, 0xa8, 0xe9, 0xc5, 0x8a, 0x4e, 0x5c, + 0x86, 0x06, 0x3f, 0xf2, 0x25, 0x0b, 0xce, 0x89, 0x79, 0xa0, 0x24, 0x98, 0xc8, 0x59, 0x82, 0xf3, + 0xac, 0x69, 0x97, 0x4d, 0x16, 0x98, 0xe4, 0x48, 0xde, 0x84, 0x4a, 0xd3, 0xef, 0xf6, 0x3a, 0x54, + 0x34, 0xee, 0xe4, 0x89, 0x1b, 0x97, 0x0f, 0xdd, 0xa5, 0x98, 0x04, 0x9a, 0xf4, 0xec, 0xff, 0x90, + 0xd4, 0x71, 0xd4, 0x90, 0x26, 0x9f, 0x81, 0xc7, 0xc2, 0x7e, 0xb3, 0x49, 0xc3, 0x70, 0xab, 0xdf, + 0xc1, 0xbe, 0x77, 0xc3, 0x0d, 0x23, 0x3f, 0xd8, 0x5b, 0x75, 0xbb, 0x6e, 0xc4, 0x07, 0x74, 0xb1, + 0xfe, 0xe4, 0xc1, 0x7e, 0xf5, 0xb1, 0xc6, 0x30, 0x24, 0x1c, 0x5e, 0x9f, 0x38, 0xf0, 0x78, 0xdf, + 0x1b, 0x4e, 0x5e, 0x1c, 0x3f, 0xaa, 0x07, 0xfb, 0xd5, 0xc7, 0xef, 0x0c, 0x47, 0xc3, 0xc3, 0x68, + 0xd8, 0x7f, 0x6a, 0xb1, 0x6d, 0x48, 0x7c, 0xd7, 0x06, 0xed, 0xf6, 0x3a, 0x6c, 0xe9, 0x3c, 0x7b, + 0xe5, 0x38, 0x4a, 0x28, 0xc7, 0x98, 0xcf, 0x5e, 0xae, 0xe4, 0x1f, 0xa6, 0x21, 0xdb, 0xff, 0xcd, + 0x82, 0x8b, 0x69, 0xe4, 0x87, 0xa0, 0xd0, 0x85, 0x49, 0x85, 0xee, 0x56, 0xbe, 0x5f, 0x3b, 0x44, + 0xab, 0xfb, 0x79, 0x63, 0xc0, 0x2a, 0x54, 0xa4, 0x5b, 0xe4, 0x25, 0x98, 0x8a, 0xe4, 0xdf, 0x5b, + 0xb1, 0x72, 0xae, 0x0d, 0x13, 0x1b, 0x06, 0x0c, 0x13, 0x98, 0xac, 0x66, 0xb3, 0xd3, 0x0f, 0x23, + 0x1a, 0x34, 0x9a, 0x7e, 0x4f, 0x2c, 0xbb, 0xa5, 0xb8, 0xe6, 0x92, 0x01, 0xc3, 0x04, 0xa6, 0xfd, + 0xb7, 0x8b, 0x83, 0xed, 0xfe, 0xff, 0xbb, 0xbe, 0x12, 0xab, 0x1f, 0x85, 0xf7, 0x53, 0xfd, 0x18, + 0xff, 0x40, 0xa9, 0x1f, 0x5f, 0xb6, 0x98, 0x16, 0x27, 0x06, 0x40, 0x28, 0x55, 0xa3, 0xd7, 0xf3, + 0x9d, 0x0e, 0x48, 0xb7, 0x4c, 0xc5, 0x50, 0xf2, 0xc2, 0x98, 0xad, 0xfd, 0x8f, 0xc7, 0x61, 0xaa, + 0xe6, 0x45, 0x6e, 0x6d, 0x6b, 0xcb, 0xf5, 0xdc, 0x68, 0x8f, 0x7c, 0x7d, 0x0c, 0x16, 0x7b, 0x01, + 0xdd, 0xa2, 0x41, 0x40, 0x5b, 0xcb, 0xfd, 0xc0, 0xf5, 0xda, 0x8d, 0xe6, 0x36, 0x6d, 0xf5, 0x3b, + 0xae, 0xd7, 0x5e, 0x69, 0x7b, 0xbe, 0x2e, 0xbe, 0xf6, 0x80, 0x36, 0xfb, 0xbc, 0x5d, 0xc5, 0x2a, + 0xd1, 0x1d, 0x4d, 0xf6, 0xf5, 0x93, 0x31, 0xad, 0x3f, 0x7f, 0xb0, 0x5f, 0x5d, 0x3c, 0x61, 0x25, + 0x3c, 0xe9, 0xa7, 0x91, 0xaf, 0x8e, 0xc1, 0x42, 0x40, 0x3f, 0xdf, 0x77, 0x8f, 0xdf, 0x1a, 0x62, + 0x19, 0xef, 0x8c, 0xb8, 0xdd, 0x9f, 0x88, 0x67, 0xfd, 0xea, 0xc1, 0x7e, 0xf5, 0x84, 0x75, 0xf0, + 0x84, 0xdf, 0x65, 0xaf, 0x43, 0xa5, 0xd6, 0x73, 0x43, 0xf7, 0x01, 0xfa, 0xfd, 0x88, 0x1e, 0xc3, + 0xa0, 0x51, 0x85, 0x62, 0xd0, 0xef, 0x50, 0xb1, 0xc0, 0x94, 0xeb, 0x65, 0xb6, 0x2c, 0x23, 0x2b, + 0x40, 0x51, 0x6e, 0x7f, 0x99, 0x6d, 0x41, 0x9c, 0x64, 0xca, 0x94, 0x75, 0x0f, 0x8a, 0x01, 0x63, + 0x22, 0x47, 0xd6, 0xa8, 0xa7, 0xfe, 0x58, 0x6a, 0x29, 0x04, 0xfb, 0x89, 0x82, 0x85, 0xfd, 0x9d, + 0x31, 0xb8, 0x54, 0xeb, 0xf5, 0xd6, 0x68, 0xb8, 0x9d, 0x92, 0xe2, 0x17, 0x2c, 0x98, 0xde, 0x75, + 0x83, 0xa8, 0xef, 0x74, 0x94, 0xb5, 0x52, 0xc8, 0xd3, 0x18, 0x55, 0x1e, 0xce, 0xed, 0x8d, 0x04, + 0xe9, 0x3a, 0x39, 0xd8, 0xaf, 0x4e, 0x27, 0xcb, 0x30, 0xc5, 0x9e, 0xfc, 0x5d, 0x0b, 0x66, 0x65, + 0xd1, 0x2d, 0xbf, 0x45, 0x4d, 0x6b, 0xf8, 0x9d, 0x3c, 0x65, 0xd2, 0xc4, 0x85, 0x15, 0x33, 0x5d, + 0x8a, 0x03, 0x42, 0xd8, 0xff, 0x63, 0x0c, 0x1e, 0x1d, 0x42, 0x83, 0xfc, 0x9a, 0x05, 0x17, 0x85, + 0x09, 0xdd, 0x00, 0x21, 0xdd, 0x92, 0xad, 0xf9, 0x93, 0x79, 0x4b, 0x8e, 0x6c, 0x8a, 0x53, 0xaf, + 0x49, 0xeb, 0x73, 0x6c, 0x49, 0x5e, 0xca, 0x60, 0x8d, 0x99, 0x02, 0x71, 0x49, 0x85, 0x51, 0x3d, + 0x25, 0xe9, 0xd8, 0x43, 0x91, 0xb4, 0x91, 0xc1, 0x1a, 0x33, 0x05, 0xb2, 0xff, 0x26, 0x3c, 0x7e, + 0x08, 0xb9, 0xa3, 0x27, 0xa7, 0xfd, 0xa6, 0x1e, 0xf5, 0xc9, 0x31, 0x77, 0x8c, 0x79, 0x6d, 0xc3, + 0x04, 0x9f, 0x3a, 0x6a, 0x62, 0x03, 0xdb, 0x83, 0xf9, 0x9c, 0x0a, 0x51, 0x42, 0xec, 0xef, 0x58, + 0x50, 0x3a, 0x81, 0xed, 0xb3, 0x9a, 0xb4, 0x7d, 0x96, 0x07, 0xec, 0x9e, 0xd1, 0xa0, 0xdd, 0xf3, + 0xd5, 0xd1, 0x7a, 0xe3, 0x38, 0xf6, 0xce, 0x1f, 0x5a, 0x70, 0x7e, 0xc0, 0x3e, 0x4a, 0xb6, 0xe1, + 0x62, 0xcf, 0x6f, 0xa9, 0xed, 0xf4, 0x86, 0x13, 0x6e, 0x73, 0x98, 0xfc, 0xbc, 0x17, 0x58, 0x4f, + 0xae, 0x67, 0xc0, 0xdf, 0xdb, 0xaf, 0xce, 0x69, 0x22, 0x29, 0x04, 0xcc, 0xa4, 0x48, 0x7a, 0x50, + 0xda, 0x72, 0x69, 0xa7, 0x15, 0x0f, 0xc1, 0x11, 0xb5, 0xb4, 0xeb, 0x92, 0x9a, 0xb8, 0x1a, 0x50, + 0xff, 0x50, 0x73, 0xb1, 0x7f, 0x64, 0xc1, 0x74, 0xad, 0x1f, 0x6d, 0x33, 0x1d, 0xa5, 0xc9, 0xad, + 0x71, 0xc4, 0x83, 0x62, 0xe8, 0xb6, 0x77, 0x5f, 0xc8, 0x67, 0x31, 0x6e, 0x30, 0x52, 0xf2, 0x8a, + 0x44, 0x2b, 0xeb, 0xbc, 0x10, 0x05, 0x1b, 0x12, 0xc0, 0x84, 0xef, 0xf4, 0xa3, 0xed, 0xab, 0xf2, + 0x93, 0x47, 0xb4, 0x4c, 0xdc, 0x66, 0x9f, 0x73, 0x55, 0x72, 0xd4, 0x2a, 0xa3, 0x28, 0x45, 0xc9, + 0xc9, 0xfe, 0x22, 0x4c, 0x27, 0xef, 0xdd, 0x8e, 0x31, 0x66, 0x9f, 0x84, 0x82, 0x13, 0x78, 0x72, + 0xc4, 0x56, 0x24, 0x42, 0xa1, 0x86, 0xb7, 0x90, 0x95, 0x93, 0xe7, 0xa0, 0xb4, 0xd5, 0xef, 0x74, + 0xf8, 0xb9, 0x42, 0x5c, 0x72, 0xe9, 0x63, 0xd1, 0x75, 0x59, 0x8e, 0x1a, 0xc3, 0xfe, 0x3f, 0xe3, + 0x30, 0x53, 0xef, 0xf4, 0xe9, 0xab, 0x01, 0xa5, 0xca, 0x16, 0x54, 0x83, 0x99, 0x5e, 0x40, 0x77, + 0x5d, 0x7a, 0xbf, 0x41, 0x3b, 0xb4, 0x19, 0xf9, 0x81, 0x94, 0xe6, 0x51, 0x49, 0x68, 0x66, 0x3d, + 0x09, 0xc6, 0x34, 0x3e, 0x79, 0x05, 0xa6, 0x9d, 0x66, 0xe4, 0xee, 0x52, 0x4d, 0x41, 0x88, 0xfb, + 0x88, 0xa4, 0x30, 0x5d, 0x4b, 0x40, 0x31, 0x85, 0x4d, 0x3e, 0x0b, 0x73, 0x61, 0xd3, 0xe9, 0xd0, + 0x3b, 0x3d, 0xc9, 0x6a, 0x69, 0x9b, 0x36, 0x77, 0xd6, 0x7d, 0xd7, 0x8b, 0xa4, 0xdd, 0xf1, 0x8a, + 0xa4, 0x34, 0xd7, 0x18, 0x82, 0x87, 0x43, 0x29, 0x90, 0x7f, 0x65, 0xc1, 0x93, 0xbd, 0x80, 0xae, + 0x07, 0x7e, 0xd7, 0x67, 0x43, 0x6d, 0xc0, 0x1c, 0x26, 0xcd, 0x42, 0x6f, 0x8c, 0xa8, 0x4b, 0x89, + 0x92, 0xc1, 0x3b, 0x9c, 0x0f, 0x1f, 0xec, 0x57, 0x9f, 0x5c, 0x3f, 0x4c, 0x00, 0x3c, 0x5c, 0x3e, + 0xf2, 0x6f, 0x2c, 0xb8, 0xdc, 0xf3, 0xc3, 0xe8, 0x90, 0x4f, 0x28, 0x9e, 0xe9, 0x27, 0xd8, 0x07, + 0xfb, 0xd5, 0xcb, 0xeb, 0x87, 0x4a, 0x80, 0x47, 0x48, 0x68, 0x1f, 0x54, 0xe0, 0xbc, 0x31, 0xf6, + 0xa4, 0x31, 0xe7, 0x65, 0x38, 0xa7, 0x06, 0x43, 0xac, 0xfb, 0x94, 0x63, 0xdb, 0x5e, 0xcd, 0x04, + 0x62, 0x12, 0x97, 0x8d, 0x3b, 0x3d, 0x14, 0x45, 0xed, 0xd4, 0xb8, 0x5b, 0x4f, 0x40, 0x31, 0x85, + 0x4d, 0x56, 0xe0, 0x82, 0x2c, 0x41, 0xda, 0xeb, 0xb8, 0x4d, 0x67, 0xc9, 0xef, 0xcb, 0x21, 0x57, + 0xac, 0x3f, 0x7a, 0xb0, 0x5f, 0xbd, 0xb0, 0x3e, 0x08, 0xc6, 0xac, 0x3a, 0x64, 0x15, 0x2e, 0x3a, + 0xfd, 0xc8, 0xd7, 0xdf, 0x7f, 0xcd, 0x63, 0xdb, 0x69, 0x8b, 0x0f, 0xad, 0x92, 0xd8, 0x77, 0x6b, + 0x19, 0x70, 0xcc, 0xac, 0x45, 0xd6, 0x53, 0xd4, 0x1a, 0xb4, 0xe9, 0x7b, 0x2d, 0xd1, 0xcb, 0xc5, + 0xf8, 0x18, 0x58, 0xcb, 0xc0, 0xc1, 0xcc, 0x9a, 0xa4, 0x03, 0xd3, 0x5d, 0xe7, 0xc1, 0x1d, 0xcf, + 0xd9, 0x75, 0xdc, 0x0e, 0x63, 0x22, 0xed, 0x85, 0xc3, 0xad, 0x4c, 0xfd, 0xc8, 0xed, 0x2c, 0x08, + 0x3f, 0x8e, 0x85, 0x15, 0x2f, 0xba, 0x1d, 0x34, 0x22, 0xa6, 0xa9, 0x0b, 0x0d, 0x72, 0x2d, 0x41, + 0x0b, 0x53, 0xb4, 0xc9, 0x6d, 0xb8, 0xc4, 0xa7, 0xe3, 0xb2, 0x7f, 0xdf, 0x5b, 0xa6, 0x1d, 0x67, + 0x4f, 0x7d, 0xc0, 0x24, 0xff, 0x80, 0xc7, 0x0e, 0xf6, 0xab, 0x97, 0x1a, 0x59, 0x08, 0x98, 0x5d, + 0x8f, 0x38, 0xf0, 0x78, 0x12, 0x80, 0x74, 0xd7, 0x0d, 0x5d, 0xdf, 0x13, 0x66, 0xb9, 0x52, 0x6c, + 0x96, 0x6b, 0x0c, 0x47, 0xc3, 0xc3, 0x68, 0x90, 0xbf, 0x6f, 0xc1, 0xc5, 0xac, 0x69, 0x38, 0x57, + 0xce, 0xe3, 0x36, 0x39, 0x35, 0xb5, 0xc4, 0x88, 0xc8, 0x5c, 0x14, 0x32, 0x85, 0x20, 0xef, 0x58, + 0x30, 0xe5, 0x18, 0x27, 0xe8, 0x39, 0xc8, 0x63, 0xd7, 0x32, 0xcf, 0xe4, 0xf5, 0xd9, 0x83, 0xfd, + 0x6a, 0xe2, 0x94, 0x8e, 0x09, 0x8e, 0xe4, 0x1f, 0x5a, 0x70, 0x29, 0x73, 0x8e, 0xcf, 0x55, 0xce, + 0xa2, 0x85, 0xf8, 0x20, 0xc9, 0x5e, 0x73, 0xb2, 0xc5, 0x20, 0xdf, 0xb4, 0xf4, 0x56, 0xa6, 0x2e, + 0x18, 0xe7, 0xa6, 0xb8, 0x68, 0x23, 0x1a, 0x3c, 0x0c, 0x35, 0x4a, 0x11, 0xae, 0x5f, 0x30, 0x76, + 0x46, 0x55, 0x88, 0x69, 0xf6, 0xe4, 0x1b, 0x96, 0xda, 0x1a, 0xb5, 0x44, 0xe7, 0xce, 0x4a, 0x22, + 0x12, 0xef, 0xb4, 0x5a, 0xa0, 0x14, 0x73, 0xf2, 0x53, 0x30, 0xef, 0x6c, 0xfa, 0x41, 0x94, 0x39, + 0xf9, 0xe6, 0xa6, 0xf9, 0x34, 0xba, 0x7c, 0xb0, 0x5f, 0x9d, 0xaf, 0x0d, 0xc5, 0xc2, 0x43, 0x28, + 0xd8, 0xbf, 0x51, 0x84, 0x29, 0x71, 0x12, 0x92, 0x5b, 0xd7, 0x6f, 0x5b, 0xf0, 0x44, 0xb3, 0x1f, + 0x04, 0xd4, 0x8b, 0x1a, 0x11, 0xed, 0x0d, 0x6e, 0x5c, 0xd6, 0x99, 0x6e, 0x5c, 0x57, 0x0e, 0xf6, + 0xab, 0x4f, 0x2c, 0x1d, 0xc2, 0x1f, 0x0f, 0x95, 0x8e, 0xfc, 0x7b, 0x0b, 0x6c, 0x89, 0x50, 0x77, + 0x9a, 0x3b, 0xed, 0xc0, 0xef, 0x7b, 0xad, 0xc1, 0x8f, 0x18, 0x3b, 0xd3, 0x8f, 0x78, 0xfa, 0x60, + 0xbf, 0x6a, 0x2f, 0x1d, 0x29, 0x05, 0x1e, 0x43, 0x52, 0xf2, 0x2a, 0x9c, 0x97, 0x58, 0xd7, 0x1e, + 0xf4, 0x68, 0xe0, 0xb2, 0x33, 0x87, 0x54, 0x1c, 0x63, 0xdf, 0xb4, 0x34, 0x02, 0x0e, 0xd6, 0x21, + 0x21, 0x4c, 0xde, 0xa7, 0x6e, 0x7b, 0x3b, 0x52, 0xea, 0xd3, 0x88, 0x0e, 0x69, 0xd2, 0x2a, 0x72, + 0x57, 0xd0, 0xac, 0x57, 0x0e, 0xf6, 0xab, 0x93, 0xf2, 0x0f, 0x2a, 0x4e, 0xe4, 0x16, 0x4c, 0x8b, + 0x73, 0xea, 0xba, 0xeb, 0xb5, 0xd7, 0x7d, 0x4f, 0x78, 0x55, 0x95, 0xeb, 0x4f, 0xab, 0x0d, 0xbf, + 0x91, 0x80, 0xbe, 0xb7, 0x5f, 0x9d, 0x52, 0xbf, 0x37, 0xf6, 0x7a, 0x14, 0x53, 0xb5, 0xed, 0xdf, + 0x9d, 0x00, 0x50, 0xc3, 0x95, 0xf6, 0xc8, 0x47, 0xa0, 0x1c, 0xd2, 0x48, 0x70, 0x95, 0x37, 0x49, + 0xe2, 0xfe, 0x4f, 0x15, 0x62, 0x0c, 0x27, 0x3b, 0x50, 0xec, 0x39, 0xfd, 0x90, 0xe6, 0x73, 0x7e, + 0x90, 0x9d, 0xbf, 0xce, 0x28, 0x8a, 0x83, 0x29, 0xff, 0x89, 0x82, 0x07, 0xf9, 0x8a, 0x05, 0x40, + 0x93, 0x1d, 0x36, 0xb2, 0x81, 0x48, 0xb2, 0x8c, 0xfb, 0x94, 0xb5, 0x41, 0x7d, 0xfa, 0x60, 0xbf, + 0x0a, 0x46, 0xd7, 0x1b, 0x6c, 0xc9, 0x7d, 0x28, 0x39, 0x6a, 0xcd, 0x1f, 0x3f, 0x8b, 0x35, 0x9f, + 0x9f, 0x17, 0xf5, 0xa0, 0xd5, 0xcc, 0xc8, 0x57, 0x2d, 0x98, 0x0e, 0x69, 0x24, 0xbb, 0x8a, 0xad, + 0x3c, 0x52, 0xe1, 0x1d, 0x71, 0xd0, 0x35, 0x12, 0x34, 0xc5, 0x0a, 0x9a, 0x2c, 0xc3, 0x14, 0x5f, + 0x25, 0xca, 0x0d, 0xea, 0xb4, 0x68, 0xc0, 0xcd, 0x11, 0x52, 0x93, 0x1a, 0x5d, 0x14, 0x83, 0xa6, + 0x16, 0xc5, 0x28, 0xc3, 0x14, 0x5f, 0x25, 0xca, 0x9a, 0x1b, 0x04, 0xbe, 0x14, 0xa5, 0x94, 0x93, + 0x28, 0x06, 0x4d, 0x2d, 0x8a, 0x51, 0x86, 0x29, 0xbe, 0xf6, 0xb7, 0xcf, 0xc1, 0xb4, 0x9a, 0x48, + 0xb1, 0x66, 0x2f, 0xac, 0x5f, 0x43, 0x34, 0xfb, 0x25, 0x13, 0x88, 0x49, 0x5c, 0x56, 0x59, 0x4c, + 0xd5, 0xa4, 0x62, 0xaf, 0x2b, 0x37, 0x4c, 0x20, 0x26, 0x71, 0x49, 0x17, 0x8a, 0x61, 0x44, 0x7b, + 0xca, 0xe7, 0x60, 0xc4, 0x2b, 0xf1, 0x78, 0x7d, 0x30, 0x2c, 0x09, 0x8c, 0x3c, 0x0a, 0x2e, 0xdc, + 0x80, 0x1b, 0x25, 0x6c, 0xba, 0x72, 0x72, 0xe4, 0x33, 0x3f, 0x93, 0xe6, 0x62, 0xd1, 0x1b, 0xc9, + 0x32, 0x4c, 0xb1, 0xcf, 0x50, 0xf6, 0x8b, 0x67, 0xa8, 0xec, 0x7f, 0x1a, 0x4a, 0x5d, 0xe7, 0x41, + 0xa3, 0x1f, 0xb4, 0x4f, 0x7f, 0xa8, 0x90, 0x3e, 0xa4, 0x82, 0x0a, 0x6a, 0x7a, 0xe4, 0x4b, 0x96, + 0xb1, 0xe4, 0x08, 0x07, 0x83, 0xbb, 0xf9, 0x2e, 0x39, 0x7a, 0xaf, 0x1c, 0xba, 0xf8, 0x0c, 0xa8, + 0xde, 0xa5, 0x87, 0xae, 0x7a, 0x33, 0x35, 0x52, 0x4c, 0x10, 0xad, 0x46, 0x96, 0xcf, 0x54, 0x8d, + 0x5c, 0x4a, 0x30, 0xc3, 0x14, 0x73, 0x2e, 0x8f, 0x98, 0x73, 0x5a, 0x1e, 0x38, 0x53, 0x79, 0x1a, + 0x09, 0x66, 0x98, 0x62, 0x3e, 0xfc, 0xbc, 0x59, 0x39, 0x9b, 0xf3, 0xe6, 0x54, 0x0e, 0xe7, 0xcd, + 0xc3, 0x55, 0xf1, 0x73, 0xa3, 0xaa, 0xe2, 0xe4, 0x26, 0x90, 0xd6, 0x9e, 0xe7, 0x74, 0xdd, 0xa6, + 0x5c, 0x2c, 0xf9, 0xb6, 0x39, 0xcd, 0xed, 0x11, 0xf3, 0x72, 0x21, 0x23, 0xcb, 0x03, 0x18, 0x98, + 0x51, 0x8b, 0x44, 0x50, 0xea, 0x29, 0x8d, 0x6b, 0x26, 0x8f, 0xd1, 0xaf, 0x34, 0x30, 0xe1, 0x37, + 0xc2, 0x26, 0x9e, 0x2a, 0x41, 0xcd, 0x89, 0xac, 0xc2, 0xc5, 0xae, 0xeb, 0xad, 0xfb, 0xad, 0x70, + 0x9d, 0x06, 0xd2, 0xda, 0xd2, 0xa0, 0xd1, 0xdc, 0x2c, 0x6f, 0x1b, 0x7e, 0x82, 0x5e, 0xcb, 0x80, + 0x63, 0x66, 0x2d, 0xfb, 0x7f, 0x5b, 0x30, 0xbb, 0xd4, 0xf1, 0xfb, 0xad, 0xbb, 0x4e, 0xd4, 0xdc, + 0x16, 0x6e, 0x0a, 0xe4, 0x15, 0x28, 0xb9, 0x5e, 0x44, 0x83, 0x5d, 0xa7, 0x23, 0xf7, 0x27, 0x5b, + 0x99, 0x4f, 0x57, 0x64, 0xf9, 0x7b, 0xfb, 0xd5, 0xe9, 0xe5, 0x7e, 0xc0, 0xad, 0xd4, 0x62, 0xb5, + 0x42, 0x5d, 0x87, 0x7c, 0xdb, 0x82, 0xf3, 0xc2, 0xd1, 0x61, 0xd9, 0x89, 0x9c, 0xd7, 0xfb, 0x34, + 0x70, 0xa9, 0x72, 0x75, 0x18, 0x71, 0xa1, 0x4a, 0xcb, 0xaa, 0x18, 0xec, 0xc5, 0x8a, 0xfa, 0x5a, + 0x9a, 0x33, 0x0e, 0x0a, 0x63, 0xff, 0x52, 0x01, 0x1e, 0x1b, 0x4a, 0x8b, 0xcc, 0xc3, 0x98, 0xdb, + 0x92, 0x9f, 0x0e, 0x92, 0xee, 0xd8, 0x4a, 0x0b, 0xc7, 0xdc, 0x16, 0x59, 0xe0, 0x3a, 0x67, 0x40, + 0xc3, 0x50, 0x5d, 0x38, 0x97, 0xb5, 0x7a, 0x28, 0x4b, 0xd1, 0xc0, 0x20, 0x55, 0x28, 0x72, 0xff, + 0x61, 0x79, 0x9e, 0xe0, 0x5a, 0x2c, 0x77, 0xd5, 0x45, 0x51, 0x4e, 0xbe, 0x6c, 0x01, 0x08, 0x01, + 0xd9, 0x69, 0x44, 0xee, 0x92, 0x98, 0x6f, 0x33, 0x31, 0xca, 0x42, 0xca, 0xf8, 0x3f, 0x1a, 0x5c, + 0xc9, 0x06, 0x4c, 0x30, 0x85, 0xd6, 0x6f, 0x9d, 0x7a, 0x53, 0xe4, 0x37, 0x51, 0xeb, 0x9c, 0x06, + 0x4a, 0x5a, 0xac, 0xad, 0x02, 0x1a, 0xf5, 0x03, 0x8f, 0x35, 0x2d, 0xdf, 0x06, 0x4b, 0x42, 0x0a, + 0xd4, 0xa5, 0x68, 0x60, 0xd8, 0xff, 0x62, 0x0c, 0x2e, 0x66, 0x89, 0xce, 0x76, 0x9b, 0x09, 0x21, + 0xad, 0x3c, 0x1a, 0xff, 0x44, 0xfe, 0xed, 0x23, 0x7d, 0x76, 0xf4, 0x35, 0x85, 0x74, 0xa0, 0x94, + 0x7c, 0xc9, 0x4f, 0xe8, 0x16, 0x1a, 0x3b, 0x65, 0x0b, 0x69, 0xca, 0xa9, 0x56, 0xba, 0x02, 0xe3, + 0x21, 0xeb, 0xf9, 0x42, 0xf2, 0xba, 0x83, 0xf7, 0x11, 0x87, 0x30, 0x8c, 0xbe, 0xe7, 0x46, 0x32, + 0xe8, 0x46, 0x63, 0xdc, 0xf1, 0xdc, 0x08, 0x39, 0xc4, 0xfe, 0xd6, 0x18, 0xcc, 0x0f, 0xff, 0x28, + 0xf2, 0x2d, 0x0b, 0xa0, 0xc5, 0x8e, 0x2b, 0x21, 0xf7, 0x5c, 0x17, 0x3e, 0x4e, 0xce, 0x59, 0xb5, + 0xe1, 0xb2, 0xe2, 0x14, 0x3b, 0xdf, 0xe9, 0xa2, 0x10, 0x0d, 0x41, 0xc8, 0x55, 0x35, 0xf4, 0xf9, + 0x55, 0x8d, 0x98, 0x4c, 0xba, 0xce, 0x9a, 0x86, 0xa0, 0x81, 0xc5, 0xce, 0xa3, 0x9e, 0xd3, 0xa5, + 0x61, 0xcf, 0xd1, 0x21, 0x4c, 0xfc, 0x3c, 0x7a, 0x4b, 0x15, 0x62, 0x0c, 0xb7, 0x3b, 0xf0, 0xd4, + 0x31, 0xe4, 0xcc, 0x29, 0x42, 0xc4, 0xfe, 0x9f, 0x16, 0x3c, 0x2a, 0xdd, 0xcf, 0xfe, 0xc2, 0xf8, + 0x32, 0xfe, 0x99, 0x05, 0x8f, 0x0f, 0xf9, 0xe6, 0x87, 0xe0, 0xd2, 0xf8, 0x56, 0xd2, 0xa5, 0xf1, + 0xce, 0xa8, 0x43, 0x3a, 0xf3, 0x3b, 0x86, 0x78, 0x36, 0xfe, 0x5e, 0x01, 0xce, 0xb1, 0x65, 0xab, + 0xe5, 0xb7, 0x73, 0xda, 0x38, 0x9f, 0x82, 0xe2, 0xe7, 0xd9, 0x06, 0x94, 0x1e, 0x64, 0x7c, 0x57, + 0x42, 0x01, 0x23, 0x5f, 0xb1, 0x60, 0xf2, 0xf3, 0x72, 0x4f, 0x15, 0x67, 0xb9, 0x11, 0x17, 0xc3, + 0xc4, 0x37, 0x2c, 0xc8, 0x1d, 0x52, 0x04, 0x9e, 0x68, 0x07, 0x46, 0xb5, 0x95, 0x2a, 0xce, 0xe4, + 0x59, 0x98, 0xdc, 0xf2, 0x83, 0x6e, 0xbf, 0xe3, 0xa4, 0xa3, 0x1d, 0xaf, 0x8b, 0x62, 0x54, 0x70, + 0x36, 0xc9, 0x9d, 0x9e, 0xfb, 0x06, 0x0d, 0x42, 0x11, 0x87, 0x90, 0x98, 0xe4, 0x35, 0x0d, 0x41, + 0x03, 0x8b, 0xd7, 0x69, 0xb7, 0x03, 0xda, 0x76, 0x22, 0x3f, 0xe0, 0x3b, 0x87, 0x59, 0x47, 0x43, + 0xd0, 0xc0, 0x9a, 0xff, 0x24, 0x4c, 0x99, 0xc2, 0x9f, 0x28, 0x88, 0xe5, 0x53, 0x20, 0x3d, 0x19, + 0x53, 0x4b, 0x92, 0x75, 0x9c, 0x25, 0xc9, 0xfe, 0x8f, 0x63, 0x60, 0x58, 0x87, 0x1e, 0xc2, 0x54, + 0xf7, 0x12, 0x53, 0x7d, 0x44, 0xcb, 0x86, 0x61, 0xeb, 0x1a, 0x16, 0xd2, 0xb7, 0x9b, 0x0a, 0xe9, + 0xbb, 0x95, 0x1b, 0xc7, 0xc3, 0x23, 0xfa, 0xbe, 0x6f, 0xc1, 0xe3, 0x31, 0xf2, 0xa0, 0xe1, 0xf6, + 0xe8, 0x75, 0xfb, 0x45, 0xa8, 0x38, 0x71, 0x35, 0x39, 0xb1, 0x8c, 0x78, 0x2a, 0x0d, 0x42, 0x13, + 0x2f, 0x8e, 0x05, 0x29, 0x9c, 0x32, 0x16, 0x64, 0xfc, 0xf0, 0x58, 0x10, 0xfb, 0x47, 0x63, 0xf0, + 0xe4, 0xe0, 0x97, 0x99, 0x0e, 0xd2, 0x47, 0x7f, 0x5b, 0xda, 0x85, 0x7a, 0xec, 0xd4, 0x2e, 0xd4, + 0x85, 0xe3, 0xba, 0x50, 0x6b, 0xc7, 0xe5, 0xf1, 0x33, 0x77, 0x5c, 0x6e, 0xc0, 0x25, 0xe5, 0x25, + 0x79, 0xdd, 0x0f, 0x64, 0x40, 0x84, 0x5a, 0x41, 0x4a, 0xf5, 0x27, 0x65, 0x95, 0x4b, 0x98, 0x85, + 0x84, 0xd9, 0x75, 0xed, 0xef, 0x17, 0xe0, 0x42, 0xdc, 0xec, 0x4b, 0xbe, 0xd7, 0x72, 0xb9, 0xa3, + 0xcd, 0xcb, 0x30, 0x1e, 0xed, 0xf5, 0x54, 0x63, 0xff, 0x55, 0x25, 0xce, 0xc6, 0x5e, 0x8f, 0xf5, + 0xf6, 0xa3, 0x19, 0x55, 0xb8, 0xe9, 0x9c, 0x57, 0x22, 0xab, 0x7a, 0x76, 0x88, 0x1e, 0x78, 0x21, + 0x39, 0x9a, 0xdf, 0xdb, 0xaf, 0x66, 0xa4, 0x36, 0x58, 0xd0, 0x94, 0x92, 0x63, 0x9e, 0xdc, 0x83, + 0xe9, 0x8e, 0x13, 0x46, 0x77, 0x7a, 0x2d, 0x27, 0xa2, 0x1b, 0xae, 0x74, 0x61, 0x39, 0x59, 0x0c, + 0x89, 0xbe, 0xeb, 0x5f, 0x4d, 0x50, 0xc2, 0x14, 0x65, 0xb2, 0x0b, 0x84, 0x95, 0x6c, 0x04, 0x8e, + 0x17, 0x8a, 0xaf, 0x62, 0xfc, 0x4e, 0x1e, 0x10, 0xa4, 0x8f, 0xce, 0xab, 0x03, 0xd4, 0x30, 0x83, + 0x03, 0x79, 0x1a, 0x26, 0x02, 0xea, 0x84, 0x7a, 0x3b, 0xd0, 0xf3, 0x1f, 0x79, 0x29, 0x4a, 0xa8, + 0x39, 0xa1, 0x26, 0x8e, 0x98, 0x50, 0x7f, 0x64, 0xc1, 0x74, 0xdc, 0x4d, 0x0f, 0x41, 0xf5, 0xe8, + 0x26, 0x55, 0x8f, 0x1b, 0x79, 0x2d, 0x89, 0x43, 0xb4, 0x8d, 0x3f, 0x9d, 0x34, 0xbf, 0x8f, 0x47, + 0x2d, 0x7c, 0xc1, 0x74, 0x62, 0xb7, 0xf2, 0x08, 0x25, 0x4b, 0x68, 0x7b, 0x87, 0x7a, 0xaf, 0x33, + 0x5d, 0xa7, 0x25, 0xf5, 0x18, 0x39, 0xec, 0xb5, 0xae, 0xa3, 0xf4, 0x9b, 0x2c, 0x5d, 0x47, 0xd5, + 0x21, 0x77, 0xe0, 0xd1, 0x5e, 0xe0, 0xf3, 0xe0, 0xfa, 0x65, 0xea, 0xb4, 0x3a, 0xae, 0x47, 0x95, + 0x99, 0x47, 0xb8, 0x9a, 0x3c, 0x7e, 0xb0, 0x5f, 0x7d, 0x74, 0x3d, 0x1b, 0x05, 0x87, 0xd5, 0x4d, + 0x86, 0x67, 0x8e, 0x1f, 0x23, 0x3c, 0xf3, 0xe7, 0xb5, 0x31, 0x55, 0x47, 0x02, 0x7c, 0x26, 0xaf, + 0xae, 0xcc, 0x8a, 0x09, 0xd0, 0x43, 0xaa, 0x26, 0x99, 0xa2, 0x66, 0x3f, 0xdc, 0x62, 0x37, 0x71, + 0x4a, 0x8b, 0x5d, 0x1c, 0xfc, 0x31, 0xf9, 0x7e, 0x06, 0x7f, 0x94, 0x3e, 0x50, 0xc1, 0x1f, 0xdf, + 0xb6, 0xe0, 0x82, 0x33, 0x18, 0x76, 0x9d, 0x8f, 0xf1, 0x38, 0x23, 0x9e, 0xbb, 0xfe, 0xb8, 0x14, + 0x32, 0x2b, 0xba, 0x1d, 0xb3, 0x44, 0xb1, 0xdf, 0x2d, 0xc2, 0x6c, 0x5a, 0x49, 0x3a, 0xfb, 0xf8, + 0xd4, 0x5f, 0xb4, 0x60, 0x56, 0x4d, 0x70, 0xc1, 0x53, 0x1f, 0x31, 0x56, 0x73, 0x5a, 0x57, 0x84, + 0xba, 0xa7, 0xd3, 0x86, 0x6c, 0xa4, 0xb8, 0xe1, 0x00, 0x7f, 0xf2, 0x26, 0x54, 0xf4, 0xad, 0xca, + 0xa9, 0x82, 0x55, 0x79, 0x3c, 0x65, 0x2d, 0x26, 0x81, 0x26, 0x3d, 0xf2, 0xae, 0x05, 0xd0, 0x54, + 0x3b, 0x71, 0x4e, 0xa1, 0x40, 0x19, 0xda, 0x42, 0xac, 0xcf, 0xeb, 0xa2, 0x10, 0x0d, 0xc6, 0xe4, + 0x97, 0xf8, 0x7d, 0x8a, 0x1e, 0x09, 0x22, 0x1d, 0xc9, 0xc8, 0x6e, 0xef, 0x87, 0xe8, 0xce, 0xb1, + 0xb6, 0x67, 0x80, 0x42, 0x4c, 0x08, 0x61, 0xbf, 0x0c, 0xda, 0x51, 0x99, 0xad, 0xac, 0xdc, 0x55, + 0x79, 0xdd, 0x89, 0xb6, 0xe5, 0x10, 0xd4, 0x2b, 0xeb, 0x75, 0x05, 0xc0, 0x18, 0xc7, 0xfe, 0x1c, + 0x4c, 0xbf, 0x1a, 0x38, 0xbd, 0x6d, 0x97, 0xdf, 0x5b, 0xb0, 0xf3, 0xf1, 0xb3, 0x30, 0xe9, 0xb4, + 0x5a, 0x59, 0x19, 0x6e, 0x6a, 0xa2, 0x18, 0x15, 0xfc, 0x58, 0x47, 0x61, 0xfb, 0x77, 0x2d, 0x20, + 0xf1, 0xdd, 0xaf, 0xeb, 0xb5, 0xd7, 0x9c, 0xa8, 0xb9, 0xcd, 0x8e, 0x70, 0xdb, 0xbc, 0x34, 0xeb, + 0x08, 0x77, 0x43, 0x43, 0xd0, 0xc0, 0x22, 0x6f, 0x43, 0x45, 0xfc, 0x7b, 0x43, 0x1f, 0x10, 0x47, + 0xf7, 0xb7, 0xe6, 0x7b, 0x1e, 0x97, 0x49, 0x8c, 0xc2, 0x1b, 0x31, 0x07, 0x34, 0xd9, 0xb1, 0xa6, + 0x5a, 0xf1, 0xb6, 0x3a, 0xfd, 0x07, 0xad, 0xcd, 0xb8, 0xa9, 0x7a, 0x81, 0xbf, 0xe5, 0x76, 0x68, + 0xba, 0xa9, 0xd6, 0x45, 0x31, 0x2a, 0xf8, 0xf1, 0x9a, 0xea, 0xdf, 0x5a, 0x70, 0x71, 0x25, 0x8c, + 0x5c, 0x7f, 0x99, 0x86, 0x11, 0xdb, 0xf9, 0xd8, 0xfa, 0xd8, 0xef, 0x1c, 0x27, 0xe6, 0x60, 0x19, + 0x66, 0xe5, 0x3d, 0x74, 0x7f, 0x33, 0xa4, 0x91, 0x71, 0xd4, 0xd0, 0xf3, 0x78, 0x29, 0x05, 0xc7, + 0x81, 0x1a, 0x8c, 0x8a, 0xbc, 0x90, 0x8e, 0xa9, 0x14, 0x92, 0x54, 0x1a, 0x29, 0x38, 0x0e, 0xd4, + 0xb0, 0xbf, 0x57, 0x80, 0x0b, 0xfc, 0x33, 0x52, 0xf1, 0x42, 0xdf, 0x18, 0x16, 0x2f, 0x34, 0xe2, + 0x54, 0xe6, 0xbc, 0x4e, 0x11, 0x2d, 0xf4, 0x77, 0x2c, 0x98, 0x69, 0x25, 0x5b, 0x3a, 0x1f, 0xbb, + 0x5c, 0x56, 0x1f, 0x0a, 0xb7, 0xbb, 0x54, 0x21, 0xa6, 0xf9, 0x93, 0x5f, 0xb6, 0x60, 0x26, 0x29, + 0xa6, 0x5a, 0xdd, 0xcf, 0xa0, 0x91, 0xb4, 0x9f, 0x7c, 0xb2, 0x3c, 0xc4, 0xb4, 0x08, 0xf6, 0xef, + 0x8f, 0xc9, 0x2e, 0x3d, 0x8b, 0x60, 0x18, 0x72, 0x1f, 0xca, 0x51, 0x27, 0x14, 0x85, 0xf2, 0x6b, + 0x47, 0x3c, 0xb4, 0x6e, 0xac, 0x36, 0x84, 0x0b, 0x48, 0xac, 0x57, 0xca, 0x12, 0xa6, 0x1f, 0x2b, + 0x5e, 0x9c, 0x71, 0xb3, 0x27, 0x19, 0xe7, 0x72, 0x5a, 0xde, 0x58, 0x5a, 0x4f, 0x33, 0x96, 0x25, + 0x8c, 0xb1, 0xe2, 0x65, 0xff, 0xba, 0x05, 0xe5, 0x9b, 0xbe, 0x5a, 0x47, 0x7e, 0x2a, 0x07, 0x5b, + 0x94, 0x56, 0x59, 0xb5, 0xd2, 0x12, 0x9f, 0x82, 0x5e, 0x49, 0x58, 0xa2, 0x9e, 0x30, 0x68, 0x2f, + 0xf0, 0x44, 0x7f, 0x8c, 0xd4, 0x4d, 0x7f, 0x73, 0xa8, 0xf9, 0xf8, 0x57, 0x8a, 0x70, 0xee, 0x35, + 0x67, 0x8f, 0x7a, 0x91, 0x73, 0xf2, 0x4d, 0xe2, 0x45, 0xa8, 0x38, 0x3d, 0x7e, 0x97, 0x69, 0x1c, + 0x43, 0x62, 0xe3, 0x4e, 0x0c, 0x42, 0x13, 0x2f, 0x5e, 0xd0, 0x44, 0x64, 0x4a, 0xd6, 0x52, 0xb4, + 0x94, 0x82, 0xe3, 0x40, 0x0d, 0x72, 0x13, 0x88, 0x8c, 0xe6, 0xae, 0x35, 0x9b, 0x7e, 0xdf, 0x13, + 0x4b, 0x9a, 0xb0, 0xfb, 0xe8, 0xf3, 0xf0, 0xda, 0x00, 0x06, 0x66, 0xd4, 0x22, 0x9f, 0x85, 0xb9, + 0x26, 0xa7, 0x2c, 0x4f, 0x47, 0x26, 0x45, 0x71, 0x42, 0xd6, 0xb1, 0x1e, 0x4b, 0x43, 0xf0, 0x70, + 0x28, 0x05, 0x26, 0x69, 0x18, 0xf9, 0x81, 0xd3, 0xa6, 0x26, 0xdd, 0x89, 0xa4, 0xa4, 0x8d, 0x01, + 0x0c, 0xcc, 0xa8, 0x45, 0xbe, 0x08, 0xe5, 0x68, 0x3b, 0xa0, 0xe1, 0xb6, 0xdf, 0x69, 0x49, 0xdf, + 0x93, 0x11, 0x8d, 0x81, 0xb2, 0xf7, 0x37, 0x14, 0x55, 0x63, 0x78, 0xab, 0x22, 0x8c, 0x79, 0x92, + 0x00, 0x26, 0xc2, 0xa6, 0xdf, 0xa3, 0xa1, 0x3c, 0x55, 0xdc, 0xcc, 0x85, 0x3b, 0x37, 0x6e, 0x19, + 0x66, 0x48, 0xce, 0x01, 0x25, 0x27, 0xfb, 0x77, 0xc6, 0x60, 0xca, 0x44, 0x3c, 0xc6, 0xda, 0xf4, + 0x15, 0x0b, 0xa6, 0x9a, 0xbe, 0x17, 0x05, 0x7e, 0x27, 0xce, 0x52, 0x30, 0xba, 0x46, 0xc1, 0x48, + 0x2d, 0xd3, 0xc8, 0x71, 0x3b, 0x86, 0xb5, 0xce, 0x60, 0x83, 0x09, 0xa6, 0xe4, 0xeb, 0x16, 0xcc, + 0xc4, 0xae, 0x8a, 0xb1, 0xad, 0x2f, 0x57, 0x41, 0xf4, 0x52, 0x7f, 0x2d, 0xc9, 0x09, 0xd3, 0xac, + 0xed, 0x4d, 0x98, 0x4d, 0xf7, 0x36, 0x6b, 0xca, 0x9e, 0x23, 0xe7, 0x7a, 0x21, 0x6e, 0xca, 0x75, + 0x27, 0x0c, 0x91, 0x43, 0xc8, 0x73, 0x50, 0xea, 0x3a, 0x41, 0xdb, 0xf5, 0x9c, 0x0e, 0x6f, 0xc5, + 0x82, 0xb1, 0x20, 0xc9, 0x72, 0xd4, 0x18, 0xf6, 0xc7, 0x60, 0x6a, 0xcd, 0xf1, 0xda, 0xb4, 0x25, + 0xd7, 0xe1, 0xa3, 0xc3, 0x31, 0xff, 0x64, 0x1c, 0x2a, 0xc6, 0xf1, 0xf1, 0xec, 0xcf, 0x59, 0x89, + 0xec, 0x3b, 0x85, 0x1c, 0xb3, 0xef, 0x7c, 0x1a, 0x60, 0xcb, 0xf5, 0xdc, 0x70, 0xfb, 0x94, 0x79, + 0x7d, 0xf8, 0xdd, 0xfc, 0x75, 0x4d, 0x01, 0x0d, 0x6a, 0xf1, 0x05, 0x68, 0xf1, 0x90, 0x14, 0x79, + 0xef, 0x5a, 0xc6, 0x76, 0x33, 0x91, 0x87, 0xc3, 0x87, 0xd1, 0x31, 0x0b, 0x6a, 0xfb, 0x11, 0x77, + 0x53, 0x87, 0xed, 0x4a, 0x1b, 0x50, 0x0a, 0x68, 0xd8, 0xef, 0xd2, 0x53, 0x65, 0xe0, 0xe1, 0xae, + 0x37, 0x28, 0xeb, 0xa3, 0xa6, 0x34, 0xff, 0x32, 0x9c, 0x4b, 0x88, 0x70, 0xa2, 0x1b, 0x26, 0x1f, + 0x32, 0x6d, 0x14, 0xa7, 0xb9, 0x6f, 0x62, 0x7d, 0xd1, 0x31, 0x32, 0xef, 0xe8, 0xbe, 0x10, 0x0e, + 0x56, 0x02, 0x66, 0xff, 0x68, 0x02, 0xa4, 0x0f, 0xc3, 0x31, 0x96, 0x2b, 0xf3, 0xe6, 0x72, 0xec, + 0x14, 0x37, 0x97, 0x37, 0x61, 0xca, 0xf5, 0xdc, 0xc8, 0x75, 0x3a, 0xdc, 0xfe, 0x24, 0xb7, 0x53, + 0xe5, 0x81, 0x3e, 0xb5, 0x62, 0xc0, 0x32, 0xe8, 0x24, 0xea, 0x92, 0xd7, 0xa1, 0xc8, 0xf7, 0x1b, + 0x39, 0x80, 0x4f, 0xee, 0x68, 0xc1, 0x7d, 0x6c, 0x44, 0x58, 0x9a, 0xa0, 0xc4, 0x0f, 0x1f, 0x22, + 0xf5, 0x90, 0x3e, 0x7e, 0xcb, 0x71, 0x1c, 0x1f, 0x3e, 0x52, 0x70, 0x1c, 0xa8, 0xc1, 0xa8, 0x6c, + 0x39, 0x6e, 0xa7, 0x1f, 0xd0, 0x98, 0xca, 0x44, 0x92, 0xca, 0xf5, 0x14, 0x1c, 0x07, 0x6a, 0x90, + 0x2d, 0x98, 0x92, 0x65, 0xc2, 0x6d, 0x6e, 0xf2, 0x94, 0x5f, 0xc9, 0xdd, 0x23, 0xaf, 0x1b, 0x94, + 0x30, 0x41, 0x97, 0xf4, 0xe1, 0xbc, 0xeb, 0x35, 0x7d, 0xaf, 0xd9, 0xe9, 0x87, 0xee, 0x2e, 0x8d, + 0x63, 0xc2, 0x4e, 0xc3, 0xec, 0xd2, 0xc1, 0x7e, 0xf5, 0xfc, 0x4a, 0x9a, 0x1c, 0x0e, 0x72, 0x20, + 0x5f, 0xb2, 0xe0, 0x52, 0xd3, 0xf7, 0x42, 0x9e, 0xba, 0x62, 0x97, 0x5e, 0x0b, 0x02, 0x3f, 0x10, + 0xbc, 0xcb, 0xa7, 0xe4, 0xcd, 0xcd, 0x9e, 0x4b, 0x59, 0x24, 0x31, 0x9b, 0x13, 0x79, 0x0b, 0x4a, + 0xbd, 0xc0, 0xdf, 0x75, 0x5b, 0x34, 0x90, 0x2e, 0x98, 0xab, 0x79, 0xe4, 0xf3, 0x59, 0x97, 0x34, + 0xe3, 0xa5, 0x47, 0x95, 0xa0, 0xe6, 0x67, 0xff, 0xdf, 0x0a, 0x4c, 0x27, 0xd1, 0xc9, 0xcf, 0x00, + 0xf4, 0x02, 0xbf, 0x4b, 0xa3, 0x6d, 0xaa, 0x63, 0x7b, 0x6e, 0x8d, 0x9a, 0xb1, 0x45, 0xd1, 0x53, + 0x6e, 0x4b, 0x6c, 0xb9, 0x88, 0x4b, 0xd1, 0xe0, 0x48, 0x02, 0x98, 0xdc, 0x11, 0xdb, 0xae, 0xd4, + 0x42, 0x5e, 0xcb, 0x45, 0x67, 0x92, 0x9c, 0x79, 0x50, 0x8a, 0x2c, 0x42, 0xc5, 0x88, 0x6c, 0x42, + 0xe1, 0x3e, 0xdd, 0xcc, 0x27, 0x5d, 0xc0, 0x5d, 0x2a, 0x4f, 0x33, 0xf5, 0xc9, 0x83, 0xfd, 0x6a, + 0xe1, 0x2e, 0xdd, 0x44, 0x46, 0x9c, 0x7d, 0x57, 0x4b, 0xf8, 0x2e, 0xc8, 0xa5, 0xe2, 0xb5, 0x1c, + 0x1d, 0x21, 0xc4, 0x77, 0xc9, 0x22, 0x54, 0x8c, 0xc8, 0x5b, 0x50, 0xbe, 0xef, 0xec, 0xd2, 0xad, + 0xc0, 0xf7, 0x22, 0xe9, 0x2b, 0x37, 0x62, 0xb8, 0xc7, 0x5d, 0x45, 0x4e, 0xf2, 0xe5, 0xdb, 0xbb, + 0x2e, 0xc4, 0x98, 0x1d, 0xd9, 0x85, 0x92, 0x47, 0xef, 0x23, 0xed, 0xb8, 0xcd, 0x7c, 0xc2, 0x2b, + 0x6e, 0x49, 0x6a, 0x92, 0x33, 0xdf, 0xf7, 0x54, 0x19, 0x6a, 0x5e, 0xac, 0x2f, 0xef, 0xf9, 0x9b, + 0x72, 0xa1, 0x1a, 0xb1, 0x2f, 0xf5, 0xc9, 0x54, 0xf4, 0xe5, 0x4d, 0x7f, 0x13, 0x19, 0x71, 0x36, + 0x47, 0x9a, 0xda, 0x51, 0x4b, 0x2e, 0x53, 0xb7, 0xf2, 0x75, 0x50, 0x13, 0x73, 0x24, 0x2e, 0x45, + 0x83, 0x23, 0x6b, 0xdb, 0xb6, 0x34, 0x56, 0xca, 0x85, 0x6a, 0xc4, 0xb6, 0x4d, 0x9a, 0x3e, 0x45, + 0xdb, 0xaa, 0x32, 0xd4, 0xbc, 0x18, 0x5f, 0x57, 0x5a, 0xfe, 0xf2, 0x59, 0xaa, 0x92, 0x76, 0x44, + 0xc1, 0x57, 0x95, 0xa1, 0xe6, 0xc5, 0xda, 0x3b, 0xdc, 0xd9, 0xbb, 0xef, 0x74, 0x76, 0x5c, 0xaf, + 0x2d, 0x63, 0x55, 0x47, 0x4d, 0xc3, 0xbd, 0xb3, 0x77, 0x57, 0xd0, 0x33, 0xdb, 0x3b, 0x2e, 0x45, + 0x83, 0x23, 0xf9, 0x07, 0x16, 0x4c, 0xf4, 0x3a, 0xfd, 0xb6, 0xeb, 0xcd, 0x4d, 0xe5, 0xe1, 0xc4, + 0x94, 0x5c, 0x72, 0x17, 0xd6, 0x39, 0x69, 0xa1, 0x28, 0xfe, 0xb8, 0xf6, 0xbb, 0xe4, 0x85, 0x5f, + 0xfb, 0xe3, 0xea, 0x1c, 0xf5, 0x9a, 0x7e, 0xcb, 0xf5, 0xda, 0x8b, 0xf7, 0x42, 0xdf, 0x5b, 0x40, + 0xe7, 0xbe, 0xd2, 0xd1, 0xa5, 0x4c, 0xf3, 0x9f, 0x80, 0x8a, 0x41, 0xe2, 0x28, 0x45, 0x6f, 0xca, + 0x54, 0xf4, 0x7e, 0x7d, 0x02, 0xa6, 0xcc, 0xe4, 0x9b, 0xc7, 0xd0, 0xbe, 0xf4, 0x89, 0x63, 0xec, + 0x24, 0x27, 0x0e, 0x76, 0xc4, 0x34, 0x2e, 0xb8, 0x94, 0x79, 0x6b, 0x25, 0x37, 0x85, 0x3b, 0x3e, + 0x62, 0x1a, 0x85, 0x21, 0x26, 0x98, 0x9e, 0xc0, 0xe7, 0x85, 0xa9, 0xad, 0x42, 0xb1, 0x2b, 0x26, + 0xd5, 0xd6, 0x84, 0xaa, 0x76, 0x15, 0x20, 0xce, 0x12, 0x29, 0x2f, 0x3e, 0xb5, 0x3e, 0x6c, 0x64, + 0xaf, 0x34, 0xb0, 0xc8, 0xd3, 0x30, 0xc1, 0x54, 0x1f, 0xda, 0x92, 0xa1, 0xf4, 0xfa, 0x1c, 0x7f, + 0x9d, 0x97, 0xa2, 0x84, 0x92, 0x97, 0x98, 0x96, 0x1a, 0x2b, 0x2c, 0x32, 0x42, 0xfe, 0x62, 0xac, + 0xa5, 0xc6, 0x30, 0x4c, 0x60, 0x32, 0xd1, 0x29, 0xd3, 0x2f, 0xf8, 0xda, 0x60, 0x88, 0xce, 0x95, + 0x0e, 0x14, 0x30, 0x6e, 0x57, 0x4a, 0xe9, 0x23, 0x7c, 0x4e, 0x17, 0x0d, 0xbb, 0x52, 0x0a, 0x8e, + 0x03, 0x35, 0xd8, 0xc7, 0xc8, 0x3b, 0xdb, 0x8a, 0x70, 0x98, 0x1e, 0x72, 0xdb, 0xfa, 0xb3, 0xe6, + 0x59, 0x2b, 0xc7, 0x39, 0x24, 0x46, 0xed, 0xf1, 0x0f, 0x5b, 0xa3, 0x1d, 0x8b, 0x3e, 0x07, 0xd3, + 0xc9, 0x5d, 0x28, 0xf7, 0x9b, 0x8f, 0xaf, 0x8e, 0xc3, 0x85, 0x5b, 0x6d, 0xd7, 0x4b, 0x27, 0x3a, + 0xcb, 0x7a, 0xd5, 0xc0, 0x3a, 0xf1, 0xab, 0x06, 0x3a, 0x26, 0x4f, 0xbe, 0x19, 0x90, 0x1d, 0x93, + 0xa7, 0x1e, 0x70, 0x48, 0xe2, 0x92, 0x3f, 0xb2, 0xe0, 0x09, 0xa7, 0x25, 0xce, 0x05, 0x4e, 0x47, + 0x96, 0x1a, 0xc9, 0xb8, 0xe5, 0x8c, 0x0e, 0x47, 0xdc, 0xe5, 0x07, 0x3f, 0x7e, 0xa1, 0x76, 0x08, + 0x57, 0xd1, 0xe3, 0x3f, 0x26, 0xbf, 0xe0, 0x89, 0xc3, 0x50, 0xf1, 0x50, 0xf1, 0xc9, 0xdf, 0x80, + 0x99, 0xc4, 0x07, 0x4b, 0x4b, 0x78, 0x59, 0x5c, 0x58, 0x34, 0x92, 0x20, 0x4c, 0xe3, 0xce, 0xdf, + 0x86, 0x0f, 0x1f, 0x29, 0xe7, 0x89, 0x06, 0xdb, 0x77, 0x2d, 0x98, 0x32, 0x73, 0x12, 0x91, 0xe7, + 0xa0, 0x14, 0xf9, 0x3b, 0xd4, 0xbb, 0x13, 0x28, 0x87, 0x5d, 0x3d, 0xd0, 0x37, 0x78, 0x39, 0xae, + 0xa2, 0xc6, 0x60, 0xd8, 0xcd, 0x8e, 0x4b, 0xbd, 0x68, 0xa5, 0x25, 0xbb, 0x59, 0x63, 0x2f, 0x89, + 0xf2, 0x65, 0xd4, 0x18, 0xc2, 0xc7, 0x8e, 0xfd, 0x6e, 0xd0, 0x66, 0x40, 0x95, 0x7b, 0xbf, 0xe1, + 0x63, 0x17, 0xc3, 0x30, 0x81, 0x49, 0x6c, 0x6d, 0xe2, 0x1c, 0x8f, 0xef, 0x35, 0x52, 0x26, 0xc9, + 0xdf, 0xb2, 0xa0, 0x2c, 0x4c, 0xf4, 0x48, 0xb7, 0x52, 0x2e, 0xb6, 0x29, 0x23, 0x42, 0x6d, 0x7d, + 0x25, 0xcb, 0xc5, 0xf6, 0x0a, 0x8c, 0xef, 0xb8, 0x9e, 0xfa, 0x12, 0xbd, 0x2d, 0xbd, 0xe6, 0x7a, + 0x2d, 0xe4, 0x10, 0xbd, 0x71, 0x15, 0x86, 0x6e, 0x5c, 0x8b, 0x50, 0xd6, 0x8e, 0x27, 0x72, 0xf9, + 0xd7, 0xd6, 0x5b, 0xed, 0xa8, 0x82, 0x31, 0x8e, 0xfd, 0xab, 0x16, 0x4c, 0xf3, 0x18, 0xee, 0xf8, + 0x3c, 0xfc, 0xa2, 0xf6, 0x05, 0x13, 0x72, 0x3f, 0x99, 0xf4, 0x05, 0x7b, 0x6f, 0xbf, 0x5a, 0x11, + 0x51, 0xdf, 0x49, 0xd7, 0xb0, 0xcf, 0x48, 0x23, 0x1a, 0xf7, 0x58, 0x1b, 0x3b, 0xb1, 0x8d, 0x27, + 0x16, 0x53, 0x11, 0xc1, 0x98, 0x9e, 0xfd, 0x36, 0x4c, 0x99, 0xc1, 0x58, 0xe4, 0x45, 0xa8, 0xf4, + 0x5c, 0xaf, 0x9d, 0x0c, 0xda, 0xd5, 0x17, 0x0d, 0xeb, 0x31, 0x08, 0x4d, 0x3c, 0x5e, 0xcd, 0x8f, + 0xab, 0xa5, 0xee, 0x27, 0xd6, 0x7d, 0xb3, 0x5a, 0xfc, 0x87, 0x3f, 0x84, 0x90, 0x11, 0xf4, 0x97, + 0xfb, 0x43, 0x08, 0x19, 0x3c, 0xde, 0xbf, 0x87, 0x10, 0xb2, 0x84, 0xf9, 0xf3, 0xf5, 0x10, 0xc2, + 0x4f, 0xc2, 0x49, 0x73, 0xa2, 0xb2, 0xbd, 0xfe, 0xbe, 0x99, 0x58, 0x41, 0xb7, 0xb8, 0xcc, 0xac, + 0x20, 0xa1, 0xf6, 0xef, 0x8d, 0xc3, 0x6c, 0xfa, 0xc8, 0x9f, 0xb7, 0x37, 0x05, 0xf9, 0xba, 0x05, + 0xd3, 0x4e, 0x22, 0xff, 0x5c, 0x4e, 0xaf, 0x2a, 0x25, 0x68, 0x1a, 0xf9, 0xcf, 0x12, 0xe5, 0x98, + 0xe2, 0x4d, 0xfe, 0x0a, 0x4c, 0x46, 0x6e, 0x97, 0xfa, 0x7d, 0x61, 0x08, 0x2c, 0x88, 0x03, 0xf9, + 0x86, 0x28, 0x42, 0x05, 0x63, 0x8b, 0xb2, 0xcb, 0x35, 0xa8, 0x80, 0x4a, 0xcf, 0xe0, 0xd9, 0xd8, + 0x72, 0x29, 0xca, 0x51, 0x63, 0x90, 0x07, 0x30, 0x29, 0xfc, 0x2e, 0x94, 0x83, 0xcd, 0x5a, 0x4e, + 0xa6, 0x09, 0xe1, 0xda, 0x11, 0x77, 0x81, 0xf8, 0x1f, 0xa2, 0x62, 0xc7, 0xd4, 0x35, 0x08, 0x1c, + 0xaf, 0x4d, 0x79, 0x9b, 0xcb, 0xc3, 0xf4, 0x1b, 0x79, 0x59, 0x81, 0x50, 0x53, 0xae, 0x05, 0xed, + 0x50, 0x06, 0xd9, 0xe9, 0x32, 0x34, 0x38, 0xdb, 0xbf, 0x68, 0xc1, 0xdc, 0xb0, 0x8a, 0x6c, 0xa0, + 0xf0, 0x55, 0x50, 0x8e, 0x28, 0x23, 0xb6, 0xdf, 0x09, 0x22, 0x14, 0x30, 0xf2, 0x24, 0x14, 0xa8, + 0xde, 0x38, 0x74, 0xf6, 0xbd, 0x6b, 0x5e, 0x0b, 0x59, 0x39, 0xb9, 0x0a, 0xe3, 0x61, 0x44, 0x7b, + 0x29, 0xd7, 0xf9, 0xf1, 0x46, 0x44, 0x7b, 0x19, 0xb6, 0x5f, 0x8e, 0x6b, 0x7f, 0x0c, 0x4e, 0x98, + 0x42, 0xd7, 0xbe, 0x06, 0x04, 0xfd, 0x4e, 0x67, 0xd3, 0x69, 0xee, 0xdc, 0x75, 0xbd, 0x96, 0x7f, + 0x9f, 0x2f, 0xd4, 0x8b, 0x50, 0x0e, 0x64, 0x40, 0x71, 0x28, 0xe7, 0x94, 0x5e, 0xe9, 0x55, 0xa4, + 0x71, 0x88, 0x31, 0x8e, 0xfd, 0xfb, 0x63, 0x30, 0x29, 0xa3, 0xdf, 0x1f, 0x42, 0xdc, 0xc6, 0x4e, + 0xe2, 0xb6, 0x7c, 0x25, 0x97, 0xa0, 0xfd, 0xa1, 0x41, 0x1b, 0x61, 0x2a, 0x68, 0xe3, 0xb5, 0x7c, + 0xd8, 0x1d, 0x1e, 0xb1, 0xf1, 0x9d, 0x22, 0xcc, 0xa4, 0xb2, 0x09, 0xa4, 0xb2, 0x6d, 0x5b, 0xef, + 0x4b, 0xb6, 0x6d, 0x12, 0x26, 0x32, 0xae, 0xe7, 0xe7, 0xe5, 0xf9, 0x97, 0xc9, 0xd7, 0xf3, 0xf2, + 0xbf, 0x2d, 0x7e, 0x70, 0xfc, 0x6f, 0xff, 0xab, 0x05, 0x8f, 0x0d, 0xcd, 0x89, 0xc1, 0x53, 0xaa, + 0x05, 0x49, 0xa8, 0x5c, 0x2f, 0x72, 0xce, 0xfc, 0xa3, 0x6f, 0xd6, 0xd3, 0x59, 0xb0, 0xd2, 0xec, + 0xc9, 0x0b, 0x30, 0xc5, 0xd7, 0x66, 0xb6, 0x72, 0xb2, 0xb5, 0x57, 0x5c, 0x0c, 0xf2, 0x2b, 0xa2, + 0x86, 0x51, 0x8e, 0x09, 0x2c, 0xfb, 0xdb, 0x16, 0xcc, 0x0d, 0x4b, 0xb0, 0x75, 0x0c, 0xb3, 0xd5, + 0x5f, 0x4f, 0xc5, 0xbd, 0x54, 0x07, 0xe2, 0x5e, 0x52, 0x86, 0x2b, 0x15, 0xe2, 0x62, 0xd8, 0x8c, + 0x0a, 0x47, 0x84, 0x75, 0xfc, 0x41, 0x01, 0x66, 0xa5, 0x88, 0xf1, 0x91, 0xe1, 0xa5, 0x44, 0xb4, + 0xce, 0x8f, 0xa5, 0xa2, 0x75, 0x2e, 0xa6, 0xf1, 0xff, 0x32, 0x54, 0xe7, 0x83, 0x15, 0xaa, 0xf3, + 0xb5, 0x22, 0x5c, 0xca, 0xcc, 0xb3, 0x45, 0xbe, 0x9a, 0xb1, 0x53, 0xdc, 0xcd, 0x39, 0xa1, 0x97, + 0x8e, 0xea, 0x3d, 0xdb, 0xf8, 0x96, 0x5f, 0x36, 0xe3, 0x4a, 0xc4, 0xea, 0xbf, 0x75, 0x06, 0xa9, + 0xc9, 0x4e, 0x1a, 0x62, 0xf2, 0x70, 0x5f, 0x23, 0xfb, 0x73, 0xb0, 0xd4, 0x7f, 0xad, 0x00, 0xcf, + 0x1c, 0xb7, 0x65, 0x3f, 0xa0, 0x31, 0x99, 0x61, 0x22, 0x26, 0xf3, 0x21, 0xa9, 0x36, 0x67, 0x12, + 0x9e, 0xf9, 0x8f, 0xc6, 0xf5, 0xbe, 0x3b, 0x38, 0x61, 0x8f, 0xe5, 0xc6, 0x32, 0xc9, 0x54, 0x5f, + 0x95, 0xb3, 0x3d, 0xde, 0x1b, 0x26, 0x1b, 0xa2, 0xf8, 0xbd, 0xfd, 0xea, 0xf9, 0x38, 0xfd, 0x8d, + 0x2c, 0x44, 0x55, 0x89, 0x3c, 0x03, 0xa5, 0x40, 0x40, 0x55, 0x14, 0x9a, 0xf4, 0x05, 0x12, 0x65, + 0xa8, 0xa1, 0xe4, 0x8b, 0xc6, 0x59, 0x61, 0xfc, 0xac, 0xb2, 0x3c, 0x1d, 0xe6, 0xe2, 0xf4, 0x26, + 0x94, 0x42, 0x95, 0x58, 0x5c, 0x4c, 0xa7, 0xe7, 0x8f, 0x19, 0xdc, 0xe8, 0x6c, 0xd2, 0x8e, 0xca, + 0x32, 0x2e, 0xbe, 0x4f, 0xe7, 0x20, 0xd7, 0x24, 0x89, 0xad, 0x2d, 0x13, 0xe2, 0x0a, 0x06, 0x06, + 0xad, 0x12, 0x24, 0x82, 0x49, 0xf9, 0xba, 0xb0, 0x3c, 0xce, 0xae, 0xe5, 0x14, 0x25, 0x24, 0x7d, + 0xc8, 0xf9, 0x81, 0x5f, 0x59, 0xc8, 0x14, 0x2b, 0xfb, 0xfb, 0x16, 0x54, 0xe4, 0x18, 0x79, 0x08, + 0x51, 0x9e, 0xf7, 0x92, 0x51, 0x9e, 0xd7, 0x72, 0x59, 0xc2, 0x87, 0x84, 0x78, 0xde, 0x83, 0x29, + 0x33, 0xe3, 0x25, 0xf9, 0xb4, 0xb1, 0x05, 0x59, 0xa3, 0xe4, 0x90, 0x53, 0x9b, 0x54, 0xbc, 0x3d, + 0xd9, 0xbf, 0x51, 0xd6, 0xad, 0xc8, 0x0f, 0xce, 0xe6, 0xc8, 0xb7, 0x0e, 0x1d, 0xf9, 0xe6, 0xc0, + 0x1b, 0xcb, 0x7f, 0xe0, 0xbd, 0x0e, 0x25, 0xb5, 0x2c, 0x4a, 0x6d, 0xea, 0x29, 0xd3, 0xa9, 0x9c, + 0xa9, 0x64, 0x8c, 0x98, 0x31, 0x5d, 0xf8, 0x01, 0x38, 0xb6, 0xdb, 0xab, 0xe5, 0x5a, 0x93, 0x21, + 0x6f, 0x41, 0xe5, 0xbe, 0x1f, 0xec, 0x74, 0x7c, 0x87, 0xbf, 0xe6, 0x00, 0x79, 0xf8, 0x31, 0x68, + 0xdb, 0xbb, 0x88, 0xec, 0xb9, 0x1b, 0xd3, 0x47, 0x93, 0x19, 0xa9, 0xc1, 0x4c, 0xd7, 0xf5, 0x90, + 0x3a, 0x2d, 0x1d, 0xcc, 0x39, 0x2e, 0x32, 0xa9, 0x2b, 0xdd, 0x7e, 0x2d, 0x09, 0xc6, 0x34, 0x3e, + 0xb7, 0xcb, 0x05, 0x09, 0x53, 0x87, 0x4c, 0x97, 0xbc, 0x3e, 0xfa, 0x60, 0x4c, 0x9a, 0x4f, 0x44, + 0x68, 0x4b, 0xb2, 0x1c, 0x53, 0xbc, 0xc9, 0x17, 0xa0, 0x14, 0xaa, 0x77, 0x3b, 0x8b, 0x39, 0x9e, + 0x7a, 0xf4, 0xdb, 0x9d, 0xba, 0x2b, 0xf5, 0xe3, 0x9d, 0x9a, 0x21, 0x59, 0x85, 0x8b, 0xca, 0x76, + 0x93, 0x78, 0x82, 0x70, 0x22, 0xce, 0x7e, 0x86, 0x19, 0x70, 0xcc, 0xac, 0xc5, 0x74, 0x5b, 0x9e, + 0x49, 0x56, 0xdc, 0x1b, 0x1b, 0x57, 0xad, 0x7c, 0xfe, 0xb5, 0x50, 0x42, 0x0f, 0x8b, 0x55, 0x2e, + 0x8d, 0x10, 0xab, 0xdc, 0x80, 0x4b, 0x69, 0x10, 0x4f, 0x6b, 0xc7, 0x33, 0xe9, 0x19, 0x5b, 0xe8, + 0x7a, 0x16, 0x12, 0x66, 0xd7, 0x25, 0x77, 0xa1, 0x1c, 0x50, 0x7e, 0xca, 0xab, 0x29, 0x97, 0xbb, + 0x13, 0x3b, 0x17, 0xa3, 0x22, 0x80, 0x31, 0x2d, 0xd6, 0xef, 0x4e, 0x32, 0xb7, 0xf9, 0xeb, 0x39, + 0x3e, 0xec, 0x2d, 0xfb, 0x7e, 0x48, 0xba, 0x49, 0xfb, 0xdf, 0xcd, 0xc0, 0xb9, 0x84, 0x01, 0x8a, + 0x3c, 0x05, 0x45, 0x9e, 0xe7, 0x8f, 0xaf, 0x56, 0xa5, 0x78, 0x45, 0x15, 0x8d, 0x23, 0x60, 0xe4, + 0x17, 0x2c, 0x98, 0xe9, 0x25, 0xae, 0x9b, 0xd4, 0x42, 0x3e, 0xa2, 0x4d, 0x3b, 0x79, 0x87, 0x65, + 0xbc, 0x0a, 0x92, 0x64, 0x86, 0x69, 0xee, 0x6c, 0x3d, 0x90, 0x1e, 0xfa, 0x1d, 0x1a, 0x70, 0x6c, + 0xa9, 0xe8, 0x69, 0x12, 0x4b, 0x49, 0x30, 0xa6, 0xf1, 0x59, 0x0f, 0xf3, 0xaf, 0x1b, 0xe5, 0xf1, + 0xd6, 0x9a, 0x22, 0x80, 0x31, 0x2d, 0xf2, 0x0a, 0x4c, 0xcb, 0x94, 0xd6, 0xeb, 0x7e, 0xeb, 0x86, + 0x13, 0x6e, 0xcb, 0x23, 0x9f, 0x3e, 0xa2, 0x2e, 0x25, 0xa0, 0x98, 0xc2, 0xe6, 0xdf, 0x16, 0xe7, + 0x0d, 0xe7, 0x04, 0x26, 0x92, 0x8f, 0xa6, 0x2c, 0x25, 0xc1, 0x98, 0xc6, 0x27, 0xcf, 0x19, 0xdb, + 0x90, 0xf0, 0xe5, 0xd0, 0xab, 0x41, 0xc6, 0x56, 0x54, 0x83, 0x99, 0x3e, 0x3f, 0x21, 0xb7, 0x14, + 0x50, 0xce, 0x47, 0xcd, 0xf0, 0x4e, 0x12, 0x8c, 0x69, 0x7c, 0xf2, 0x32, 0x9c, 0x0b, 0xd8, 0x62, + 0xab, 0x09, 0x08, 0x07, 0x0f, 0x7d, 0x7f, 0x8f, 0x26, 0x10, 0x93, 0xb8, 0xe4, 0x55, 0x38, 0x1f, + 0x67, 0x80, 0x55, 0x04, 0x84, 0xc7, 0x87, 0x4e, 0x47, 0x58, 0x4b, 0x23, 0xe0, 0x60, 0x1d, 0xf2, + 0xb7, 0x60, 0xd6, 0x68, 0x89, 0x15, 0xaf, 0x45, 0x1f, 0xc8, 0x2c, 0x9d, 0xfc, 0x11, 0xb0, 0xa5, + 0x14, 0x0c, 0x07, 0xb0, 0xc9, 0x27, 0x61, 0xba, 0xe9, 0x77, 0x3a, 0x7c, 0x8d, 0x13, 0x0f, 0x76, + 0x88, 0x74, 0x9c, 0x22, 0x71, 0x69, 0x02, 0x82, 0x29, 0x4c, 0x72, 0x13, 0x88, 0xbf, 0xc9, 0xd4, + 0x2b, 0xda, 0x7a, 0x95, 0x7a, 0x54, 0x6a, 0x1c, 0xe7, 0x92, 0xf1, 0x41, 0xb7, 0x07, 0x30, 0x30, + 0xa3, 0x16, 0xcf, 0x66, 0x68, 0xc4, 0x53, 0x4f, 0xe7, 0xf1, 0xd2, 0x68, 0xda, 0x9e, 0x73, 0x64, + 0x30, 0x75, 0x00, 0x13, 0x22, 0x5c, 0x2b, 0x9f, 0xbc, 0x9c, 0x66, 0xee, 0xfe, 0x78, 0x8f, 0x10, + 0xa5, 0x28, 0x39, 0x91, 0x9f, 0x81, 0xf2, 0xa6, 0x7a, 0xc8, 0x85, 0x27, 0xe3, 0x1c, 0x79, 0x5f, + 0x4c, 0xbd, 0x49, 0x14, 0xdb, 0x2b, 0x34, 0x00, 0x63, 0x96, 0xe4, 0x69, 0xa8, 0xdc, 0x58, 0xaf, + 0xe9, 0x51, 0x78, 0x9e, 0xf7, 0xfe, 0x38, 0xab, 0x82, 0x26, 0x80, 0xcd, 0x30, 0xad, 0xbe, 0x91, + 0xa4, 0x13, 0x43, 0x86, 0x36, 0xc6, 0xb0, 0xb9, 0x57, 0x06, 0x36, 0xe6, 0x2e, 0xa4, 0xb0, 0x65, + 0x39, 0x6a, 0x0c, 0xf2, 0x26, 0x54, 0xe4, 0x7e, 0xc1, 0xd7, 0xa6, 0x8b, 0xa7, 0x8b, 0xd5, 0xc7, + 0x98, 0x04, 0x9a, 0xf4, 0xf8, 0x75, 0x3a, 0x7f, 0xdf, 0x82, 0x5e, 0xef, 0x77, 0x3a, 0x73, 0x97, + 0xf8, 0xba, 0x19, 0x5f, 0xa7, 0xc7, 0x20, 0x34, 0xf1, 0xc8, 0xf3, 0xca, 0xbb, 0xee, 0x91, 0x84, + 0x7f, 0x81, 0xf6, 0xae, 0xd3, 0x4a, 0xf7, 0x90, 0x70, 0x9e, 0x47, 0x8f, 0x70, 0x6b, 0xdb, 0x84, + 0x79, 0xa5, 0xf1, 0x0d, 0x4e, 0x92, 0xb9, 0xb9, 0x84, 0xed, 0x68, 0xfe, 0xee, 0x50, 0x4c, 0x3c, + 0x84, 0x0a, 0xd9, 0x84, 0x82, 0xd3, 0xd9, 0x9c, 0x7b, 0x2c, 0x0f, 0xd5, 0xb5, 0xb6, 0x5a, 0x97, + 0x23, 0x8a, 0xbb, 0xe0, 0xd6, 0x56, 0xeb, 0xc8, 0x88, 0x13, 0x17, 0xc6, 0x9d, 0xce, 0x66, 0x38, + 0x37, 0xcf, 0xe7, 0x6c, 0x6e, 0x4c, 0x62, 0xe3, 0xc1, 0x6a, 0x3d, 0x44, 0xce, 0xc2, 0xfe, 0xd2, + 0x98, 0xbe, 0x25, 0xd2, 0xa9, 0xd1, 0xdf, 0x36, 0x27, 0x90, 0x38, 0xee, 0xdc, 0xce, 0x6d, 0x02, + 0x49, 0xf5, 0xe2, 0xdc, 0xd0, 0xe9, 0xd3, 0xd3, 0x4b, 0x46, 0x2e, 0x39, 0xd5, 0x92, 0x69, 0xdf, + 0xc5, 0xe9, 0x39, 0xb9, 0x60, 0xd8, 0x5f, 0xae, 0x68, 0x2b, 0x68, 0xca, 0x33, 0x2d, 0x80, 0xa2, + 0x1b, 0x46, 0xae, 0x9f, 0x63, 0x08, 0x7b, 0x2a, 0x5f, 0x3a, 0x8f, 0x90, 0xe1, 0x00, 0x14, 0xac, + 0x18, 0x4f, 0xaf, 0xed, 0x7a, 0x0f, 0xe4, 0xe7, 0xbf, 0x9e, 0xbb, 0xcb, 0x99, 0xe0, 0xc9, 0x01, + 0x28, 0x58, 0x91, 0x7b, 0x62, 0x50, 0x17, 0xf2, 0xe8, 0xeb, 0xda, 0x6a, 0x3d, 0xc5, 0x2f, 0x39, + 0xb8, 0xef, 0x41, 0x21, 0xec, 0xba, 0x52, 0x5d, 0x1a, 0x91, 0x57, 0x63, 0x6d, 0x25, 0x8b, 0x57, + 0x63, 0x6d, 0x05, 0x19, 0x13, 0x7e, 0xd5, 0xef, 0x74, 0x37, 0x9d, 0x30, 0x74, 0x5a, 0xda, 0x3a, + 0x33, 0xe2, 0x55, 0x7f, 0x4d, 0xd3, 0x4b, 0xb1, 0xe6, 0x57, 0xfd, 0x31, 0x14, 0x0d, 0xce, 0xe4, + 0x2d, 0x98, 0x74, 0xc4, 0x43, 0x93, 0x32, 0x5e, 0x20, 0x9f, 0xd7, 0x53, 0x53, 0x12, 0x70, 0x33, + 0x8d, 0x04, 0xa1, 0x62, 0xc8, 0x78, 0x47, 0x81, 0x43, 0xb7, 0xdc, 0x1d, 0x69, 0x1c, 0x6a, 0x8c, + 0xfc, 0x14, 0x0a, 0x23, 0x96, 0xc5, 0x5b, 0x82, 0x50, 0x31, 0x24, 0x3f, 0x67, 0xc1, 0xb9, 0xae, + 0xe3, 0x39, 0x3a, 0x0a, 0x34, 0x9f, 0x58, 0x61, 0x33, 0xae, 0x34, 0xd6, 0x10, 0xd7, 0x4c, 0x46, + 0x98, 0xe4, 0x4b, 0x76, 0x61, 0xc2, 0xe1, 0x4f, 0xe0, 0xca, 0xa3, 0x18, 0xe6, 0xf1, 0x9c, 0x6e, + 0xaa, 0x0d, 0xf8, 0xe2, 0x22, 0x1f, 0xda, 0x95, 0xdc, 0xc8, 0xaf, 0x59, 0x30, 0x29, 0x5c, 0xd9, + 0x99, 0x42, 0xca, 0xbe, 0xfd, 0x73, 0x67, 0xf0, 0xee, 0x82, 0x74, 0xb3, 0x97, 0xce, 0x59, 0x1f, + 0xd1, 0x7e, 0xba, 0xa2, 0xf4, 0x50, 0x47, 0x7b, 0x25, 0x1d, 0x53, 0x7d, 0xbb, 0xce, 0x83, 0xc4, + 0x43, 0x37, 0xa6, 0xea, 0xbb, 0x96, 0x82, 0xe1, 0x00, 0xf6, 0xfc, 0x27, 0x61, 0xca, 0x94, 0xe3, + 0x44, 0xce, 0xfa, 0x3f, 0x2c, 0x00, 0xf0, 0xae, 0x12, 0x99, 0x63, 0xba, 0x3c, 0xcd, 0xf4, 0xb6, + 0xdf, 0xca, 0xe9, 0xc1, 0x4d, 0x23, 0x01, 0x0c, 0xc8, 0x9c, 0xd2, 0xdb, 0x7e, 0x0b, 0x25, 0x13, + 0xd2, 0x86, 0xf1, 0x9e, 0x13, 0x6d, 0xe7, 0x9f, 0x6d, 0xa6, 0x24, 0x42, 0xa8, 0xa3, 0x6d, 0xe4, + 0x0c, 0xc8, 0x3b, 0x56, 0xec, 0xf7, 0x54, 0xc8, 0x23, 0x53, 0x6e, 0xdc, 0x66, 0x0b, 0xd2, 0xd3, + 0x29, 0x95, 0x30, 0x36, 0xed, 0xff, 0x34, 0xff, 0xae, 0x05, 0x53, 0x26, 0x6a, 0x46, 0x37, 0xfd, + 0xb4, 0xd9, 0x4d, 0x79, 0xb6, 0x87, 0xd9, 0xe3, 0xff, 0xdd, 0x02, 0xc0, 0xbe, 0xd7, 0xe8, 0x77, + 0xbb, 0x4c, 0x6d, 0xd7, 0x31, 0x09, 0xd6, 0xb1, 0x63, 0x12, 0xc6, 0x4e, 0x18, 0x93, 0x50, 0x38, + 0x51, 0x4c, 0xc2, 0xf8, 0xc9, 0x63, 0x12, 0x8a, 0xc3, 0x63, 0x12, 0xec, 0x6f, 0x5a, 0x70, 0x7e, + 0x60, 0xbf, 0x62, 0x9a, 0x74, 0xe0, 0xfb, 0xd1, 0x10, 0x7f, 0x56, 0x8c, 0x41, 0x68, 0xe2, 0x91, + 0x65, 0x98, 0x95, 0x8f, 0xaa, 0x34, 0x7a, 0x1d, 0x37, 0x33, 0x13, 0xd0, 0x46, 0x0a, 0x8e, 0x03, + 0x35, 0xec, 0x7f, 0x6d, 0x41, 0xc5, 0xc8, 0x1f, 0xc0, 0x7d, 0xce, 0xf8, 0x8d, 0x57, 0xda, 0xe7, + 0x8c, 0x5f, 0x75, 0x09, 0x98, 0xb8, 0x86, 0x6e, 0x1b, 0x29, 0xf7, 0xe3, 0x6b, 0x68, 0x56, 0x8a, + 0x12, 0x2a, 0x92, 0xa9, 0x4b, 0xe7, 0xb3, 0x82, 0x99, 0x4c, 0x9d, 0xf6, 0x84, 0xab, 0x59, 0xec, + 0xe2, 0x36, 0x7e, 0xb4, 0x8b, 0x5b, 0x31, 0xdb, 0xc5, 0xcd, 0xbe, 0x0d, 0x53, 0xc2, 0x57, 0xfb, + 0x35, 0xba, 0x77, 0xec, 0x17, 0x6b, 0xd9, 0x68, 0x4f, 0xf9, 0xcc, 0xb1, 0xea, 0xac, 0xdc, 0xfe, + 0xa7, 0x16, 0xa4, 0xde, 0x58, 0x32, 0x6e, 0x60, 0xac, 0xa1, 0x37, 0x30, 0xa6, 0xd5, 0x7e, 0xec, + 0x50, 0xab, 0xfd, 0x4d, 0x20, 0x5d, 0x36, 0x15, 0x92, 0x0b, 0x6d, 0x21, 0xf9, 0xf0, 0xc5, 0xda, + 0x00, 0x06, 0x66, 0xd4, 0xb2, 0xff, 0x89, 0x10, 0xd6, 0x7c, 0x75, 0xe9, 0xe8, 0x06, 0xe8, 0x43, + 0x91, 0x93, 0x92, 0xf6, 0xb7, 0x11, 0x6d, 0xd7, 0x83, 0x59, 0xbf, 0xe2, 0x8e, 0x94, 0x53, 0x9e, + 0x73, 0xb3, 0xff, 0x40, 0xc8, 0x6a, 0x3c, 0xcb, 0x74, 0x0c, 0x59, 0xbb, 0x49, 0x59, 0x6f, 0xe4, + 0xb5, 0x56, 0x66, 0xcb, 0x48, 0x16, 0x00, 0x7a, 0x34, 0x68, 0x52, 0x2f, 0x52, 0x51, 0x54, 0x45, + 0x19, 0xcf, 0xab, 0x4b, 0xd1, 0xc0, 0xb0, 0xbf, 0xc1, 0x26, 0x50, 0xfc, 0x96, 0x33, 0x79, 0x26, + 0xed, 0x08, 0x9c, 0x9e, 0x1c, 0xda, 0x0f, 0xd8, 0x88, 0xad, 0x19, 0x3b, 0x22, 0xb6, 0xe6, 0x59, + 0x98, 0x0c, 0xfc, 0x0e, 0xad, 0x05, 0x5e, 0xda, 0x47, 0x07, 0x59, 0x31, 0xde, 0x42, 0x05, 0xb7, + 0x7f, 0xc5, 0x82, 0xd9, 0x74, 0xf0, 0x5f, 0xee, 0xde, 0xc9, 0x66, 0x86, 0x82, 0xc2, 0xc9, 0x33, + 0x14, 0xd8, 0xef, 0x30, 0x21, 0x23, 0xb7, 0xb9, 0xe3, 0x7a, 0x22, 0xa8, 0x9f, 0xb5, 0xdc, 0xb3, + 0x30, 0x49, 0xe5, 0x9b, 0xb4, 0xc2, 0x8c, 0xac, 0x85, 0x54, 0x4f, 0xd1, 0x2a, 0x38, 0xa9, 0xc1, + 0x8c, 0xba, 0x3c, 0x53, 0xb6, 0x7f, 0x91, 0x8c, 0x44, 0xdb, 0x1a, 0x97, 0x93, 0x60, 0x4c, 0xe3, + 0xdb, 0x5f, 0x84, 0x8a, 0xb1, 0x29, 0xf1, 0xf5, 0xfb, 0x81, 0xd3, 0x1c, 0xf0, 0xb5, 0xbd, 0xc6, + 0x0a, 0x51, 0xc0, 0xf8, 0x15, 0x85, 0x88, 0x4d, 0x4a, 0xad, 0x7b, 0x32, 0x22, 0x49, 0x42, 0x19, + 0xb1, 0x80, 0xb6, 0xe9, 0x03, 0xf5, 0x22, 0x82, 0x22, 0x86, 0xac, 0x10, 0x05, 0xcc, 0x7e, 0x0e, + 0x4a, 0x2a, 0x65, 0x14, 0xcf, 0xbb, 0xa2, 0xcc, 0xe7, 0x66, 0xde, 0x15, 0x3f, 0x88, 0x90, 0x43, + 0xec, 0x37, 0xa0, 0xa4, 0x32, 0x5b, 0x1d, 0x8d, 0xcd, 0x96, 0xa2, 0xd0, 0x73, 0x6f, 0xf8, 0x61, + 0xa4, 0xd2, 0x71, 0x89, 0x1b, 0xbe, 0x5b, 0x2b, 0xbc, 0x0c, 0x35, 0xd4, 0xfe, 0x33, 0x0b, 0x2a, + 0x1b, 0x1b, 0xab, 0xfa, 0xe0, 0x8f, 0xf0, 0x48, 0x28, 0x5a, 0xa8, 0xb6, 0x15, 0x51, 0xd3, 0x95, + 0x40, 0x2c, 0x7c, 0xf3, 0x07, 0xfb, 0xd5, 0x47, 0x1a, 0x99, 0x18, 0x38, 0xa4, 0x26, 0x59, 0x81, + 0x0b, 0x26, 0x44, 0xa6, 0x49, 0x90, 0x6b, 0x24, 0x7f, 0xc4, 0xb8, 0x31, 0x08, 0xc6, 0xac, 0x3a, + 0x69, 0x52, 0x72, 0xbb, 0x37, 0xdf, 0x43, 0x6e, 0x0c, 0x82, 0x31, 0xab, 0x8e, 0xfd, 0x3c, 0xcc, + 0xa4, 0xee, 0xb8, 0x8f, 0x91, 0x9e, 0xe6, 0x77, 0x0a, 0x30, 0x65, 0x5e, 0x75, 0x1e, 0x63, 0xfd, + 0x3a, 0xfe, 0xb6, 0x90, 0x71, 0x3d, 0x59, 0x38, 0xe1, 0xf5, 0xa4, 0x79, 0x1f, 0x3c, 0x7e, 0xb6, + 0xf7, 0xc1, 0xc5, 0x7c, 0xee, 0x83, 0x0d, 0xbf, 0x85, 0x89, 0x87, 0xe7, 0xb7, 0xf0, 0xdb, 0x45, + 0x98, 0x4e, 0xe6, 0x3b, 0x3d, 0x46, 0x4f, 0x3e, 0x37, 0xd0, 0x93, 0x27, 0xbc, 0x0f, 0x29, 0x8c, + 0x7a, 0x1f, 0x32, 0x3e, 0xea, 0x7d, 0x48, 0xf1, 0x14, 0xf7, 0x21, 0x83, 0xb7, 0x19, 0x13, 0xc7, + 0xbe, 0xcd, 0xf8, 0x94, 0x76, 0xf1, 0x9c, 0x4c, 0xb8, 0x00, 0xc5, 0x2e, 0x9e, 0x24, 0xd9, 0x0d, + 0x4b, 0x7e, 0x2b, 0xd3, 0x35, 0xb5, 0x74, 0x84, 0xdd, 0x37, 0xc8, 0xf4, 0xc8, 0x3c, 0xf9, 0x95, + 0xeb, 0x23, 0x27, 0xf0, 0xc6, 0x7c, 0x11, 0x2a, 0x72, 0x3c, 0x71, 0xe5, 0x1b, 0x92, 0x8a, 0x7b, + 0x23, 0x06, 0xa1, 0x89, 0xc7, 0x06, 0x46, 0x2f, 0x9e, 0x20, 0xfc, 0x66, 0xae, 0x92, 0xbc, 0x99, + 0x5b, 0x4f, 0x82, 0x31, 0x8d, 0x6f, 0x7f, 0x01, 0x2e, 0x65, 0x9a, 0x60, 0xb8, 0xf9, 0x9b, 0xeb, + 0x85, 0xb4, 0x25, 0x11, 0x0c, 0x31, 0x52, 0xcf, 0xa0, 0xcc, 0xdf, 0x1d, 0x8a, 0x89, 0x87, 0x50, + 0xb1, 0x7f, 0xb3, 0x00, 0xd3, 0xc9, 0xb7, 0x70, 0xc9, 0x7d, 0x6d, 0xb0, 0xcd, 0xc5, 0x56, 0x2c, + 0xc8, 0x1a, 0x39, 0x34, 0x87, 0x5e, 0xf4, 0xdc, 0xe7, 0xe3, 0x6b, 0x53, 0x27, 0xf4, 0x3c, 0x3b, + 0xc6, 0xf2, 0x86, 0x45, 0xb2, 0xe3, 0xcf, 0xdd, 0xc6, 0xe1, 0xb6, 0xf2, 0x1c, 0x9f, 0x3b, 0xf7, + 0x38, 0x6c, 0x54, 0xb3, 0x42, 0x83, 0x2d, 0xdb, 0x5b, 0x76, 0x69, 0xe0, 0x6e, 0xb9, 0xfa, 0x1d, + 0x7f, 0xbe, 0x72, 0xbf, 0x21, 0xcb, 0x50, 0x43, 0xed, 0x77, 0xc6, 0xa0, 0xcc, 0xb3, 0x83, 0x5d, + 0x0f, 0xfc, 0x2e, 0x7f, 0x30, 0x32, 0x34, 0xce, 0x4c, 0xb2, 0xdb, 0x6e, 0x8e, 0xfa, 0x2a, 0x6b, + 0x4c, 0x51, 0xba, 0xbb, 0x1b, 0x25, 0x98, 0xe0, 0x48, 0x7a, 0x50, 0xda, 0x92, 0xd9, 0x8c, 0x65, + 0xdf, 0x8d, 0x98, 0x91, 0x53, 0xe5, 0x46, 0x16, 0x4d, 0xa0, 0xfe, 0xa1, 0xe6, 0x62, 0x3b, 0x30, + 0x93, 0x4a, 0xef, 0x92, 0x7b, 0x0e, 0xe4, 0xff, 0x35, 0x0e, 0x65, 0x1d, 0x85, 0x46, 0x3e, 0x91, + 0x30, 0x60, 0x95, 0xeb, 0x1f, 0x36, 0x5e, 0x33, 0xdb, 0xf6, 0x5b, 0xef, 0xed, 0x57, 0x67, 0x34, + 0x72, 0xca, 0x18, 0xf5, 0x24, 0x14, 0xfa, 0x41, 0x27, 0x7d, 0x42, 0xbd, 0x83, 0xab, 0xc8, 0xca, + 0xcd, 0xc8, 0xb9, 0xc2, 0xc3, 0x8d, 0x9c, 0xbb, 0x02, 0xe3, 0x9b, 0x7e, 0x6b, 0x2f, 0xfd, 0xfa, + 0x59, 0xdd, 0x6f, 0xed, 0x21, 0x87, 0x90, 0x57, 0x60, 0x5a, 0x86, 0x03, 0x2a, 0x25, 0xa6, 0xc8, + 0xf5, 0x54, 0xed, 0xb8, 0xb0, 0x91, 0x80, 0x62, 0x0a, 0x9b, 0xed, 0xb2, 0xf7, 0x42, 0xdf, 0xe3, + 0x99, 0xad, 0x27, 0x92, 0xb7, 0x9c, 0x37, 0x1b, 0xb7, 0x6f, 0x71, 0x43, 0x9a, 0xc6, 0x48, 0x44, + 0x1c, 0x4e, 0x1e, 0x19, 0x71, 0xb8, 0x2c, 0x68, 0x33, 0x69, 0xf9, 0x8e, 0x32, 0x55, 0x7f, 0x46, + 0xd1, 0x65, 0x65, 0xef, 0xed, 0x1f, 0x62, 0x24, 0xd5, 0x35, 0xb3, 0x62, 0x33, 0xcb, 0xef, 0x5f, + 0x6c, 0xa6, 0x7d, 0x07, 0x66, 0x52, 0xfd, 0xa7, 0x0c, 0x1c, 0x56, 0xb6, 0x81, 0xe3, 0x78, 0xef, + 0xa7, 0xfd, 0x73, 0x0b, 0xce, 0x0f, 0xac, 0x48, 0xc7, 0x0d, 0x92, 0x4d, 0xef, 0x8d, 0x63, 0xa7, + 0xdf, 0x1b, 0x0b, 0x27, 0xdb, 0x1b, 0xeb, 0x9b, 0xdf, 0xfd, 0xc1, 0xe5, 0x0f, 0x7d, 0xef, 0x07, + 0x97, 0x3f, 0xf4, 0x87, 0x3f, 0xb8, 0xfc, 0xa1, 0x77, 0x0e, 0x2e, 0x5b, 0xdf, 0x3d, 0xb8, 0x6c, + 0x7d, 0xef, 0xe0, 0xb2, 0xf5, 0x87, 0x07, 0x97, 0xad, 0xff, 0x72, 0x70, 0xd9, 0xfa, 0xe6, 0x9f, + 0x5c, 0xfe, 0xd0, 0xa7, 0x3f, 0x15, 0xf7, 0xd4, 0xa2, 0xea, 0x29, 0xfe, 0xe3, 0xa3, 0xaa, 0x5f, + 0x16, 0x7b, 0x3b, 0xed, 0x45, 0xd6, 0x53, 0x8b, 0xba, 0x44, 0xf5, 0xd4, 0xff, 0x0b, 0x00, 0x00, + 0xff, 0xff, 0xbc, 0x60, 0x61, 0x0a, 0xfe, 0xa7, 0x00, 0x00, } func (m *ALBStatus) Marshal() (dAtA []byte, err error) { @@ -8022,6 +8055,18 @@ func (m *PrometheusMetric) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.RangeQuery != nil { + { + size, err := m.RangeQuery.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } if len(m.Headers) > 0 { for iNdEx := len(m.Headers) - 1; iNdEx >= 0; iNdEx-- { { @@ -8072,6 +8117,44 @@ func (m *PrometheusMetric) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *PrometheusRangeQueryArgs) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PrometheusRangeQueryArgs) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PrometheusRangeQueryArgs) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i -= len(m.Step) + copy(dAtA[i:], m.Step) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Step))) + i-- + dAtA[i] = 0x1a + i -= len(m.End) + copy(dAtA[i:], m.End) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.End))) + i-- + dAtA[i] = 0x12 + i -= len(m.Start) + copy(dAtA[i:], m.Start) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Start))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *RequiredDuringSchedulingIgnoredDuringExecution) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -11954,6 +12037,25 @@ func (m *PrometheusMetric) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) } } + if m.RangeQuery != nil { + l = m.RangeQuery.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PrometheusRangeQueryArgs) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Start) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.End) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Step) + n += 1 + l + sovGenerated(uint64(l)) return n } @@ -13985,6 +14087,19 @@ func (this *PrometheusMetric) String() string { `Timeout:` + valueToStringGenerated(this.Timeout) + `,`, `Insecure:` + fmt.Sprintf("%v", this.Insecure) + `,`, `Headers:` + repeatedStringForHeaders + `,`, + `RangeQuery:` + strings.Replace(this.RangeQuery.String(), "PrometheusRangeQueryArgs", "PrometheusRangeQueryArgs", 1) + `,`, + `}`, + }, "") + return s +} +func (this *PrometheusRangeQueryArgs) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PrometheusRangeQueryArgs{`, + `Start:` + fmt.Sprintf("%v", this.Start) + `,`, + `End:` + fmt.Sprintf("%v", this.End) + `,`, + `Step:` + fmt.Sprintf("%v", this.Step) + `,`, `}`, }, "") return s @@ -28007,6 +28122,188 @@ func (m *PrometheusMetric) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RangeQuery", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RangeQuery == nil { + m.RangeQuery = &PrometheusRangeQueryArgs{} + } + if err := m.RangeQuery.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PrometheusRangeQueryArgs) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PrometheusRangeQueryArgs: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PrometheusRangeQueryArgs: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Start", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Start = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field End", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.End = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Step", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Step = DurationString(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/rollouts/v1alpha1/generated.proto b/pkg/apis/rollouts/v1alpha1/generated.proto index eebb4453cc..4629152647 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.proto +++ b/pkg/apis/rollouts/v1alpha1/generated.proto @@ -1218,6 +1218,22 @@ message PrometheusMetric { // +patchMergeKey=key // +patchStrategy=merge repeated WebMetricHeader headers = 6; + + // Arguments for prometheus + // +optional + optional PrometheusRangeQueryArgs rangeQuery = 7; +} + +// Arguments to perform a prometheus range query +message PrometheusRangeQueryArgs { + // The start time to query in expr format e.g. now(), now() - duration("1h"), now() - duration("{{args.lookback_duration}}") + optional string start = 1; + + // The end time to query in expr format e.g. now(), now() - duration("1h"), now() - duration("{{args.lookback_duration}}") + optional string end = 2; + + // The maximum time between two slices from the start to end (e.g. 30s, 5m, 1h). + optional string step = 3; } // RequiredDuringSchedulingIgnoredDuringExecution defines inter-pod scheduling rule to be RequiredDuringSchedulingIgnoredDuringExecution diff --git a/pkg/apis/rollouts/v1alpha1/openapi_generated.go b/pkg/apis/rollouts/v1alpha1/openapi_generated.go index 6c18e64a2b..0f658f5611 100644 --- a/pkg/apis/rollouts/v1alpha1/openapi_generated.go +++ b/pkg/apis/rollouts/v1alpha1/openapi_generated.go @@ -100,6 +100,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PodTemplateMetadata": schema_pkg_apis_rollouts_v1alpha1_PodTemplateMetadata(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PreferredDuringSchedulingIgnoredDuringExecution": schema_pkg_apis_rollouts_v1alpha1_PreferredDuringSchedulingIgnoredDuringExecution(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PrometheusMetric": schema_pkg_apis_rollouts_v1alpha1_PrometheusMetric(ref), + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PrometheusRangeQueryArgs": schema_pkg_apis_rollouts_v1alpha1_PrometheusRangeQueryArgs(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.RequiredDuringSchedulingIgnoredDuringExecution": schema_pkg_apis_rollouts_v1alpha1_RequiredDuringSchedulingIgnoredDuringExecution(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.RollbackWindowSpec": schema_pkg_apis_rollouts_v1alpha1_RollbackWindowSpec(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.Rollout": schema_pkg_apis_rollouts_v1alpha1_Rollout(ref), @@ -3638,11 +3639,51 @@ func schema_pkg_apis_rollouts_v1alpha1_PrometheusMetric(ref common.ReferenceCall }, }, }, + "rangeQuery": { + SchemaProps: spec.SchemaProps{ + Description: "Arguments for prometheus", + Ref: ref("github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PrometheusRangeQueryArgs"), + }, + }, }, }, }, Dependencies: []string{ - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.Authentication", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.WebMetricHeader"}, + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.Authentication", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PrometheusRangeQueryArgs", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.WebMetricHeader"}, + } +} + +func schema_pkg_apis_rollouts_v1alpha1_PrometheusRangeQueryArgs(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "Arguments to perform a prometheus range query", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "start": { + SchemaProps: spec.SchemaProps{ + Description: "The start time to query in expr format e.g. now(), now() - duration(\"1h\"), now() - duration(\"{{args.lookback_duration}}\")", + Type: []string{"string"}, + Format: "", + }, + }, + "end": { + SchemaProps: spec.SchemaProps{ + Description: "The end time to query in expr format e.g. now(), now() - duration(\"1h\"), now() - duration(\"{{args.lookback_duration}}\")", + Type: []string{"string"}, + Format: "", + }, + }, + "step": { + SchemaProps: spec.SchemaProps{ + Description: "The maximum time between two slices from the start to end (e.g. 30s, 5m, 1h).", + Type: []string{"string"}, + Format: "", + }, + }, + }, + }, + }, } } diff --git a/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go index 496cedc2a0..373d85fcc6 100644 --- a/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go @@ -1991,6 +1991,11 @@ func (in *PrometheusMetric) DeepCopyInto(out *PrometheusMetric) { *out = make([]WebMetricHeader, len(*in)) copy(*out, *in) } + if in.RangeQuery != nil { + in, out := &in.RangeQuery, &out.RangeQuery + *out = new(PrometheusRangeQueryArgs) + **out = **in + } return } @@ -2004,6 +2009,22 @@ func (in *PrometheusMetric) DeepCopy() *PrometheusMetric { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrometheusRangeQueryArgs) DeepCopyInto(out *PrometheusRangeQueryArgs) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusRangeQueryArgs. +func (in *PrometheusRangeQueryArgs) DeepCopy() *PrometheusRangeQueryArgs { + if in == nil { + return nil + } + out := new(PrometheusRangeQueryArgs) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RequiredDuringSchedulingIgnoredDuringExecution) DeepCopyInto(out *RequiredDuringSchedulingIgnoredDuringExecution) { *out = *in diff --git a/ui/src/models/rollout/generated/api.ts b/ui/src/models/rollout/generated/api.ts index 6d3fddd554..3906c7e8d3 100755 --- a/ui/src/models/rollout/generated/api.ts +++ b/ui/src/models/rollout/generated/api.ts @@ -1856,6 +1856,37 @@ export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PrometheusM * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PrometheusMetric */ headers?: Array; + /** + * + * @type {GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PrometheusRangeQueryArgs} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PrometheusMetric + */ + rangeQuery?: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PrometheusRangeQueryArgs; +} +/** + * + * @export + * @interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PrometheusRangeQueryArgs + */ +export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PrometheusRangeQueryArgs { + /** + * + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PrometheusRangeQueryArgs + */ + start?: string; + /** + * + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PrometheusRangeQueryArgs + */ + end?: string; + /** + * The maximum time between two slices from the start to end (e.g. 30s, 5m, 1h). + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PrometheusRangeQueryArgs + */ + step?: string; } /** * diff --git a/utils/evaluate/evaluate.go b/utils/evaluate/evaluate.go index a2c9a607cd..435622303e 100644 --- a/utils/evaluate/evaluate.go +++ b/utils/evaluate/evaluate.go @@ -6,6 +6,7 @@ import ( "math" "reflect" "strconv" + "time" "github.com/antonmedv/expr" "github.com/antonmedv/expr/file" @@ -56,6 +57,39 @@ func EvaluateResult(result any, metric v1alpha1.Metric, logCtx logrus.Entry) (v1 return v1alpha1.AnalysisPhaseSuccessful, nil } +func EvalTime(expression string) (time.Time, error) { + var err error + + env := map[string]any{ + "isNaN": math.IsNaN, + "isInf": isInf, + } + + unwrapFileErr := func(e error) error { + if fileErr, ok := err.(*file.Error); ok { + e = errors.New(fileErr.Message) + } + return e + } + + program, err := expr.Compile(expression, expr.Env(env)) + if err != nil { + return time.Time{}, unwrapFileErr(err) + } + + output, err := expr.Run(program, env) + if err != nil { + return time.Time{}, unwrapFileErr(err) + } + + switch val := output.(type) { + case time.Time: + return val, nil + default: + return time.Time{}, fmt.Errorf("expected time.Time, but got %T", val) + } +} + // EvalCondition evaluates the condition with the resultValue as an input func EvalCondition(resultValue any, condition string) (bool, error) { var err error diff --git a/utils/evaluate/evaluate_test.go b/utils/evaluate/evaluate_test.go index 7839e47256..61dfc702b0 100644 --- a/utils/evaluate/evaluate_test.go +++ b/utils/evaluate/evaluate_test.go @@ -5,6 +5,7 @@ import ( "math" "reflect" "testing" + "time" "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" @@ -329,3 +330,21 @@ func TestValueFromPointer(t *testing.T) { assert.True(t, valueFromPointer(1) == 1) assert.True(t, valueFromPointer(false) == false) } + +func TestEvalTimeWithSuccessExpr(t *testing.T) { + status, err := EvalTime(`date("2023-08-14 00:00:00", "2006-01-02 15:04:05", "UTC") - duration("1h")`) + assert.Equal(t, time.Date(2023, time.August, 13, 23, 0, 0, 0, time.UTC), status) + assert.NoError(t, err) +} + +func TestEvalTimeWithNotTimeResult(t *testing.T) { + status, err := EvalTime(`hello`) + assert.Equal(t, time.Time{}, status) + assert.Error(t, err) +} + +func TestEvalTimeWithInvalidExpression(t *testing.T) { + status, err := EvalTime(`now() -- ?`) + assert.Equal(t, time.Time{}, status) + assert.Error(t, err) +} From 005ff27d2a3c4b6c120a61f1290add7383ab3ae8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jul 2024 08:25:29 -0500 Subject: [PATCH 076/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.23 to 1.27.24 (#3698) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.23 to 1.27.24. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.23...config/v1.27.24) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index c970f0110c..ae2300754e 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.30.1 - github.com/aws/aws-sdk-go-v2/config v1.27.23 + github.com/aws/aws-sdk-go-v2/config v1.27.24 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.1 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.3 @@ -82,7 +82,7 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.23 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.24 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13 // indirect @@ -91,7 +91,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.15 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.22.1 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.2 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.30.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect diff --git a/go.sum b/go.sum index 8fbb1d8576..e58b7361f1 100644 --- a/go.sum +++ b/go.sum @@ -98,10 +98,10 @@ github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WN github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v1.30.1 h1:4y/5Dvfrhd1MxRDD77SrfsDaj8kUkkljU7XE83NPV+o= github.com/aws/aws-sdk-go-v2 v1.30.1/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= -github.com/aws/aws-sdk-go-v2/config v1.27.23 h1:Cr/gJEa9NAS7CDAjbnB7tHYb3aLZI2gVggfmSAasDac= -github.com/aws/aws-sdk-go-v2/config v1.27.23/go.mod h1:WMMYHqLCFu5LH05mFOF5tsq1PGEMfKbu083VKqLCd0o= -github.com/aws/aws-sdk-go-v2/credentials v1.17.23 h1:G1CfmLVoO2TdQ8z9dW+JBc/r8+MqyPQhXCafNZcXVZo= -github.com/aws/aws-sdk-go-v2/credentials v1.17.23/go.mod h1:V/DvSURn6kKgcuKEk4qwSwb/fZ2d++FFARtWSbXnLqY= +github.com/aws/aws-sdk-go-v2/config v1.27.24 h1:NM9XicZ5o1CBU/MZaHwFtimRpWx9ohAUAqkG6AqSqPo= +github.com/aws/aws-sdk-go-v2/config v1.27.24/go.mod h1:aXzi6QJTuQRVVusAO8/NxpdTeTyr/wRcybdDtfUwJSs= +github.com/aws/aws-sdk-go-v2/credentials v1.17.24 h1:YclAsrnb1/GTQNt2nzv+756Iw4mF8AOzcDfweWwwm/M= +github.com/aws/aws-sdk-go-v2/credentials v1.17.24/go.mod h1:Hld7tmnAkoBQdTMNYZGzztzKRdA4fCdn9L83LOoigac= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9 h1:Aznqksmd6Rfv2HQN9cpqIV/lQRMaIpJkLLaJ1ZI76no= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9/go.mod h1:WQr3MY7AxGNxaqAtsDWn+fBxmd4XvLkzeqQ8P1VM0/w= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13 h1:5SAoZ4jYpGH4721ZNoS1znQrhOfZinOhc4XuTXx/nVc= @@ -122,8 +122,8 @@ github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99e github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= github.com/aws/aws-sdk-go-v2/service/sso v1.22.1 h1:p1GahKIjyMDZtiKoIn0/jAj/TkMzfzndDv5+zi2Mhgc= github.com/aws/aws-sdk-go-v2/service/sso v1.22.1/go.mod h1:/vWdhoIoYA5hYoPZ6fm7Sv4d8701PiG5VKe8/pPJL60= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.1 h1:lCEv9f8f+zJ8kcFeAjRZsekLd/x5SAm96Cva+VbUdo8= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.1/go.mod h1:xyFHA4zGxgYkdD73VeezHt3vSKEG9EmFnGwoKlP00u4= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.2 h1:ORnrOK0C4WmYV/uYt3koHEWBLYsRDwk2Np+eEoyV4Z0= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.2/go.mod h1:xyFHA4zGxgYkdD73VeezHt3vSKEG9EmFnGwoKlP00u4= github.com/aws/aws-sdk-go-v2/service/sts v1.30.1 h1:+woJ607dllHJQtsnJLi52ycuqHMwlW+Wqm2Ppsfp4nQ= github.com/aws/aws-sdk-go-v2/service/sts v1.30.1/go.mod h1:jiNR3JqT15Dm+QWq2SRgh0x0bCNSRP2L25+CqPNpJlQ= github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= From 2fad35394c25d1ae2534708b8df3e66f425a129d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jul 2024 08:25:49 -0500 Subject: [PATCH 077/219] chore(deps): bump docker/build-push-action from 6.2.0 to 6.3.0 (#3697) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.2.0 to 6.3.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/15560696de535e4014efeff63c48f16952e52dd1...1a162644f9a7e87d8f4b053101d1d9a712edc18c) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index bd41ec4fed..6ff01dc4e1 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@15560696de535e4014efeff63c48f16952e52dd1 #v6.2.0 + uses: docker/build-push-action@1a162644f9a7e87d8f4b053101d1d9a712edc18c #v6.3.0 with: context: . platforms: ${{ inputs.platforms }} From c366c5ac77183dfe7264f1b0ffa57704f1942b13 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jul 2024 08:26:13 -0500 Subject: [PATCH 078/219] chore(deps): bump docker/setup-qemu-action from 3.0.0 to 3.1.0 (#3696) Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/docker/setup-qemu-action/releases) - [Commits](https://github.com/docker/setup-qemu-action/compare/68827325e0b33c7199eb31dd4e31fbe9023e06e3...5927c834f5b4fdf503fca6f4c7eccda82949e1ee) --- updated-dependencies: - dependency-name: docker/setup-qemu-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 6ff01dc4e1..1fc244ac18 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -78,7 +78,7 @@ jobs: with: cosign-release: 'v2.2.0' - - uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 + - uses: docker/setup-qemu-action@5927c834f5b4fdf503fca6f4c7eccda82949e1ee # v3.1.0 - uses: docker/setup-buildx-action@4fd812986e6c8c2a69e18311145f9371337f27d4 # v3.4.0 - name: Setup tags for container image as a CSV type diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 77f4e62e96..f90a60a8e7 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -95,7 +95,7 @@ jobs: go-version: ${{ env.GOLANG_VERSION }} - name: Set up QEMU - uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 + uses: docker/setup-qemu-action@5927c834f5b4fdf503fca6f4c7eccda82949e1ee # v3.1.0 - name: Set up Docker Buildx uses: docker/setup-buildx-action@4fd812986e6c8c2a69e18311145f9371337f27d4 # v3.4.0 From 764f530049cf47ebe90ab7beede1b9ef226e4f32 Mon Sep 17 00:00:00 2001 From: Matt Kelly Date: Wed, 10 Jul 2024 09:27:13 -0400 Subject: [PATCH 079/219] docs: copy omission in rollout docs (#3690) Fix copy omission Looks like this sentence is incomplete. Might I suggest this change to make it read more naturally? --- docs/features/bluegreen.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/bluegreen.md b/docs/features/bluegreen.md index cc3e819adf..439cb8e0c5 100644 --- a/docs/features/bluegreen.md +++ b/docs/features/bluegreen.md @@ -1,6 +1,6 @@ # BlueGreen Deployment Strategy -A Blue Green Deployment allows users to reduce the amount of time multiple versions running at the same time. +A Blue Green Deployment allows users to reduce the amount of time multiple versions are running at the same time. ## Overview From 813b94c46db10eae2d610fcad848ebe0f1983a5b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jul 2024 10:41:36 -0500 Subject: [PATCH 080/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.1 to 1.40.3 (#3719) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.40.1 to 1.40.3. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/service/rds/v1.40.3/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.40.1...service/rds/v1.40.3) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index ae2300754e..a9ed0dfba4 100644 --- a/go.mod +++ b/go.mod @@ -8,9 +8,9 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.30.1 + github.com/aws/aws-sdk-go-v2 v1.30.3 github.com/aws/aws-sdk-go-v2/config v1.27.24 - github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.1 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.3 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.3 github.com/blang/semver v3.5.1+incompatible @@ -84,8 +84,8 @@ require ( github.com/aws/aws-sdk-go v1.44.116 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.24 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.15 // indirect diff --git a/go.sum b/go.sum index e58b7361f1..f9d29a5b66 100644 --- a/go.sum +++ b/go.sum @@ -96,22 +96,22 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.30.1 h1:4y/5Dvfrhd1MxRDD77SrfsDaj8kUkkljU7XE83NPV+o= -github.com/aws/aws-sdk-go-v2 v1.30.1/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= +github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= +github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= github.com/aws/aws-sdk-go-v2/config v1.27.24 h1:NM9XicZ5o1CBU/MZaHwFtimRpWx9ohAUAqkG6AqSqPo= github.com/aws/aws-sdk-go-v2/config v1.27.24/go.mod h1:aXzi6QJTuQRVVusAO8/NxpdTeTyr/wRcybdDtfUwJSs= github.com/aws/aws-sdk-go-v2/credentials v1.17.24 h1:YclAsrnb1/GTQNt2nzv+756Iw4mF8AOzcDfweWwwm/M= github.com/aws/aws-sdk-go-v2/credentials v1.17.24/go.mod h1:Hld7tmnAkoBQdTMNYZGzztzKRdA4fCdn9L83LOoigac= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9 h1:Aznqksmd6Rfv2HQN9cpqIV/lQRMaIpJkLLaJ1ZI76no= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9/go.mod h1:WQr3MY7AxGNxaqAtsDWn+fBxmd4XvLkzeqQ8P1VM0/w= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13 h1:5SAoZ4jYpGH4721ZNoS1znQrhOfZinOhc4XuTXx/nVc= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13/go.mod h1:+rdA6ZLpaSeM7tSg/B0IEDinCIBJGmW8rKDFkYpP04g= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13 h1:WIijqeaAO7TYFLbhsZmi2rgLEAtWOC1LhxCAVTJlSKw= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13/go.mod h1:i+kbfa76PQbWw/ULoWnp51EYVWH4ENln76fLQE3lXT8= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15/go.mod h1:U9ke74k1n2bf+RIgoX1SXFed1HLs51OgUSs+Ph0KJP8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 h1:C6WHdGnTDIYETAm5iErQUiVNsclNx9qbJVPIt03B6bI= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15/go.mod h1:ZQLZqhcu+JhSrA9/NXRm8SkDvsycE+JkV3WGY41e+IM= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.1 h1:8OMF4iAIxBNN5UOob6yNsYM+HomJeNwVN7Sqn2eL2cg= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.1/go.mod h1:5BOwwahrrkipxamulWdV15zlwDHyxRXUBtWZX8cjZnA= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.3 h1:VminN0bFfPQkaJ2MZOJh0d7+sVu0SKdZnO9FfyE1C18= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.3/go.mod h1:SxcxnimuI5pVps173h7VcyuFadgOFFfl2aUXUCswoY0= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 h1:dT3MqvGhSoaIhRseqw2I0yH81l7wiR2vjs57O51EAm8= From fdfc75ef4e1f40c6e1f7a5e16fdf98be1e1c1a75 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jul 2024 10:41:58 -0500 Subject: [PATCH 081/219] chore(deps): bump actions/setup-go from 5.0.1 to 5.0.2 (#3716) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.0.1 to 5.0.2. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v5.0.1...v5.0.2) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/e2e.yaml | 2 +- .github/workflows/gh-pages.yaml | 2 +- .github/workflows/go.yml | 6 +++--- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 0b7aca1509..53a0cedc94 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -46,7 +46,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go - uses: actions/setup-go@v5.0.1 + uses: actions/setup-go@v5.0.2 with: go-version: '1.22' - uses: actions/checkout@v4 diff --git a/.github/workflows/gh-pages.yaml b/.github/workflows/gh-pages.yaml index e84c59d7ec..bc0cb4d810 100644 --- a/.github/workflows/gh-pages.yaml +++ b/.github/workflows/gh-pages.yaml @@ -24,7 +24,7 @@ jobs: with: python-version: 3.x - name: Set up Go - uses: actions/setup-go@v5.0.1 + uses: actions/setup-go@v5.0.2 with: go-version: '1.22' - name: build diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 4e89aadfdf..68a06c00e1 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -36,7 +36,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go - uses: actions/setup-go@v5.0.1 + uses: actions/setup-go@v5.0.2 with: go-version: ${{ env.GOLANG_VERSION }} - name: Checkout code @@ -51,7 +51,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go - uses: actions/setup-go@v5.0.1 + uses: actions/setup-go@v5.0.2 with: go-version: ${{ env.GOLANG_VERSION }} id: go @@ -106,7 +106,7 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - name: Setup Golang - uses: actions/setup-go@v5.0.1 + uses: actions/setup-go@v5.0.2 with: go-version: ${{ env.GOLANG_VERSION }} # k8s codegen generates files into GOPATH location instead of the GitHub git checkout location diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 1fc244ac18..691c696658 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -69,7 +69,7 @@ jobs: if: ${{ github.ref_type != 'tag'}} - name: Setup Golang - uses: actions/setup-go@v5.0.1 # v3.5.0 + uses: actions/setup-go@v5.0.2 # v3.5.0 with: go-version: ${{ inputs.go-version }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f90a60a8e7..e256815ad1 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -90,7 +90,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Golang - uses: actions/setup-go@v5.0.1 # v4.0.1 + uses: actions/setup-go@v5.0.2 # v4.0.1 with: go-version: ${{ env.GOLANG_VERSION }} @@ -163,7 +163,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Golang - uses: actions/setup-go@v5.0.1 # v4.0.0 + uses: actions/setup-go@v5.0.2 # v4.0.0 with: go-version: ${{ env.GOLANG_VERSION }} From 3d296535a8a81a13fedc356e0e66839aaac889d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jul 2024 14:23:32 -0500 Subject: [PATCH 082/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.24 to 1.27.26 (#3717) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.24 to 1.27.26. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.24...config/v1.27.26) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 14 +++++++------- go.sum | 28 ++++++++++++++-------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index a9ed0dfba4..13e74390fa 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.30.3 - github.com/aws/aws-sdk-go-v2/config v1.27.24 + github.com/aws/aws-sdk-go-v2/config v1.27.26 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.3 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.3 @@ -82,17 +82,17 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.24 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.26 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.15 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.22.1 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.2 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.30.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.22.3 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect diff --git a/go.sum b/go.sum index f9d29a5b66..d08737f6d6 100644 --- a/go.sum +++ b/go.sum @@ -98,12 +98,12 @@ github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WN github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= -github.com/aws/aws-sdk-go-v2/config v1.27.24 h1:NM9XicZ5o1CBU/MZaHwFtimRpWx9ohAUAqkG6AqSqPo= -github.com/aws/aws-sdk-go-v2/config v1.27.24/go.mod h1:aXzi6QJTuQRVVusAO8/NxpdTeTyr/wRcybdDtfUwJSs= -github.com/aws/aws-sdk-go-v2/credentials v1.17.24 h1:YclAsrnb1/GTQNt2nzv+756Iw4mF8AOzcDfweWwwm/M= -github.com/aws/aws-sdk-go-v2/credentials v1.17.24/go.mod h1:Hld7tmnAkoBQdTMNYZGzztzKRdA4fCdn9L83LOoigac= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9 h1:Aznqksmd6Rfv2HQN9cpqIV/lQRMaIpJkLLaJ1ZI76no= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9/go.mod h1:WQr3MY7AxGNxaqAtsDWn+fBxmd4XvLkzeqQ8P1VM0/w= +github.com/aws/aws-sdk-go-v2/config v1.27.26 h1:T1kAefbKuNum/AbShMsZEro6eRkeOT8YILfE9wyjAYQ= +github.com/aws/aws-sdk-go-v2/config v1.27.26/go.mod h1:ivWHkAWFrw/nxty5Fku7soTIVdqZaZ7dw+tc5iGW3GA= +github.com/aws/aws-sdk-go-v2/credentials v1.17.26 h1:tsm8g/nJxi8+/7XyJJcP2dLrnK/5rkFp6+i2nhmz5fk= +github.com/aws/aws-sdk-go-v2/credentials v1.17.26/go.mod h1:3vAM49zkIa3q8WT6o9Ve5Z0vdByDMwmdScO0zvThTgI= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 h1:KreluoV8FZDEtI6Co2xuNk/UqI9iwMrOx/87PBNIKqw= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11/go.mod h1:SeSUYBLsMYFoRvHE0Tjvn7kbxaUhl75CJi1sbfhMxkU= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15/go.mod h1:U9ke74k1n2bf+RIgoX1SXFed1HLs51OgUSs+Ph0KJP8= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 h1:C6WHdGnTDIYETAm5iErQUiVNsclNx9qbJVPIt03B6bI= @@ -116,16 +116,16 @@ github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sg github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 h1:dT3MqvGhSoaIhRseqw2I0yH81l7wiR2vjs57O51EAm8= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3/go.mod h1:GlAeCkHwugxdHaueRr4nhPuY+WW+gR8UjlcqzPr1SPI= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.15 h1:I9zMeF107l0rJrpnHpjEiiTSCKYAIw8mALiXcPsGBiA= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.15/go.mod h1:9xWJ3Q/S6Ojusz1UIkfycgD1mGirJfLLKqq3LPT7WN8= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 h1:HGErhhrxZlQ044RiM+WdoZxp0p+EGM62y3L6pwA4olE= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.1 h1:p1GahKIjyMDZtiKoIn0/jAj/TkMzfzndDv5+zi2Mhgc= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.1/go.mod h1:/vWdhoIoYA5hYoPZ6fm7Sv4d8701PiG5VKe8/pPJL60= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.2 h1:ORnrOK0C4WmYV/uYt3koHEWBLYsRDwk2Np+eEoyV4Z0= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.2/go.mod h1:xyFHA4zGxgYkdD73VeezHt3vSKEG9EmFnGwoKlP00u4= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.1 h1:+woJ607dllHJQtsnJLi52ycuqHMwlW+Wqm2Ppsfp4nQ= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.1/go.mod h1:jiNR3JqT15Dm+QWq2SRgh0x0bCNSRP2L25+CqPNpJlQ= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.3 h1:Fv1vD2L65Jnp5QRsdiM64JvUM4Xe+E0JyVsRQKv6IeA= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.3/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ= github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= From d89abb29f89f71aab3c92df3826498dd2e0399cd Mon Sep 17 00:00:00 2001 From: Orlando Valdez <135269522+orlando-valdez-ck@users.noreply.github.com> Date: Thu, 11 Jul 2024 16:36:09 -0400 Subject: [PATCH 083/219] feat(analysis): Returns the resolved query as metadata in the New Relic provider (#3715) * Adds newrelic resolved query to metadata Signed-off-by: Orlando Valdez * Fix comment Signed-off-by: Orlando Valdez * Updates tests Signed-off-by: Orlando Valdez * Update docs Signed-off-by: Orlando Valdez --------- Signed-off-by: Orlando Valdez --- docs/analysis/newrelic.md | 8 ++++++++ metricproviders/newrelic/newrelic.go | 9 +++++++-- metricproviders/newrelic/newrelic_test.go | 23 ++++++++++++++--------- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/docs/analysis/newrelic.md b/docs/analysis/newrelic.md index 81afad9b75..589e6d14f6 100644 --- a/docs/analysis/newrelic.md +++ b/docs/analysis/newrelic.md @@ -54,3 +54,11 @@ stringData: base-url-rest: base-url-nerdgraph: ``` + +## Additional Metadata + +The New Relic provider returns the below metadata under the `Metadata` map in the `MetricsResult` object of `AnalysisRun`. + +| KEY | Description | +|-----------------------|-------------| +| ResolvedNewRelicQuery | Resolved query after substituting the template's arguments | diff --git a/metricproviders/newrelic/newrelic.go b/metricproviders/newrelic/newrelic.go index 0c971e5c60..e70db7c765 100644 --- a/metricproviders/newrelic/newrelic.go +++ b/metricproviders/newrelic/newrelic.go @@ -22,10 +22,11 @@ import ( ) const ( - //ProviderType indicates the provider is wavefront + // ProviderType indicates the provider is newrelic ProviderType = "NewRelic" DefaultNewRelicProfileSecretName = "newrelic" repoURL = "https://github.com/argoproj/argo-rollouts" + resolvedNewRelicQuery = "ResolvedNewRelicQuery" ) var userAgent = fmt.Sprintf("argo-rollouts/%s (%s)", version.GetVersion(), repoURL) @@ -133,7 +134,11 @@ func (p *Provider) Type() string { // GetMetadata returns any additional metadata which needs to be stored & displayed as part of the metrics result. func (p *Provider) GetMetadata(metric v1alpha1.Metric) map[string]string { - return nil + metricsMetadata := make(map[string]string) + if metric.Provider.NewRelic.Query != "" { + metricsMetadata[resolvedNewRelicQuery] = metric.Provider.NewRelic.Query + } + return metricsMetadata } // NewNewRelicProvider creates a new NewRelic provider diff --git a/metricproviders/newrelic/newrelic_test.go b/metricproviders/newrelic/newrelic_test.go index 8f49049815..cf4b421111 100644 --- a/metricproviders/newrelic/newrelic_test.go +++ b/metricproviders/newrelic/newrelic_test.go @@ -40,12 +40,13 @@ func TestRunSuccessfully(t *testing.T) { FailureCondition: "result.count != 10", Provider: v1alpha1.MetricProvider{ NewRelic: &v1alpha1.NewRelicMetric{ - Query: "test", + Query: "resolved-query", }, }, } metricsMetadata := p.GetMetadata(metric) - assert.Nil(t, metricsMetadata) + assert.NotNil(t, metricsMetadata) + assert.Equal(t, "resolved-query", metricsMetadata[resolvedNewRelicQuery]) measurement := p.Run(newAnalysisRun(), metric) assert.NotNil(t, measurement.StartedAt) @@ -60,7 +61,8 @@ func TestRunWithTimeseries(t *testing.T) { response: []nrdb.NRDBResult{ map[string]any{"count": 10}, map[string]any{"count": 20}, - map[string]any{"count": 30}}, + map[string]any{"count": 30}, + }, } p := NewNewRelicProvider(mock, *e) metric := v1alpha1.Metric{ @@ -69,12 +71,13 @@ func TestRunWithTimeseries(t *testing.T) { FailureCondition: "result[2].count < 20", Provider: v1alpha1.MetricProvider{ NewRelic: &v1alpha1.NewRelicMetric{ - Query: "test", + Query: "resolved-query", }, }, } metricsMetadata := p.GetMetadata(metric) - assert.Nil(t, metricsMetadata) + assert.NotNil(t, metricsMetadata) + assert.Equal(t, "resolved-query", metricsMetadata[resolvedNewRelicQuery]) measurement := p.Run(newAnalysisRun(), metric) assert.NotNil(t, measurement.StartedAt) @@ -95,12 +98,13 @@ func TestRunWithFacet(t *testing.T) { FailureCondition: "result.count != 10 or result['average.duration'] >= 15.0", Provider: v1alpha1.MetricProvider{ NewRelic: &v1alpha1.NewRelicMetric{ - Query: "test", + Query: "resolved-query", }, }, } metricsMetadata := p.GetMetadata(metric) - assert.Nil(t, metricsMetadata) + assert.NotNil(t, metricsMetadata) + assert.Equal(t, "resolved-query", metricsMetadata[resolvedNewRelicQuery]) measurement := p.Run(newAnalysisRun(), metric) assert.NotNil(t, measurement.StartedAt) @@ -121,12 +125,13 @@ func TestRunWithMultipleSelectTerms(t *testing.T) { FailureCondition: "result.count != 10", Provider: v1alpha1.MetricProvider{ NewRelic: &v1alpha1.NewRelicMetric{ - Query: "test", + Query: "resolved-query", }, }, } metricsMetadata := p.GetMetadata(metric) - assert.Nil(t, metricsMetadata) + assert.NotNil(t, metricsMetadata) + assert.Equal(t, "resolved-query", metricsMetadata[resolvedNewRelicQuery]) measurement := p.Run(newAnalysisRun(), metric) assert.NotNil(t, measurement.StartedAt) From fdcb0d865732d1de0c3ac35bc8308bf3ea072201 Mon Sep 17 00:00:00 2001 From: T Nguyen <55384763+itsme2980@users.noreply.github.com> Date: Fri, 12 Jul 2024 04:13:57 +0700 Subject: [PATCH 084/219] docs: correct the case that autoPromotionSeconds feature is ignored (#2388) * chore(deps): bump actions/upload-artifact from 2 to 3 (#1973) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: toann * chore: sign container images and checksum assets (#2334) Signed-off-by: Justin Marquis <34fathombelow@protonmail.com> Signed-off-by: toann * chore(deps): upgrade ui deps to fix high security cve's (#2345) * ui: upgrade deps to fix high security cve's Signed-off-by: zachaller * github trigger re-run Signed-off-by: zachaller Signed-off-by: zachaller Signed-off-by: toann * chore(deps): bump imjasonh/setup-crane from 0.1 to 0.2 (#2387) Bumps [imjasonh/setup-crane](https://github.com/imjasonh/setup-crane) from 0.1 to 0.2. - [Release notes](https://github.com/imjasonh/setup-crane/releases) - [Commits](https://github.com/imjasonh/setup-crane/compare/v0.1...v0.2) --- updated-dependencies: - dependency-name: imjasonh/setup-crane dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: toann * docs: Fix the case that autoPromotionSeconds feature is ignored Signed-off-by: Toan Nguyen Signed-off-by: toann * chore(deps): bump dependabot/fetch-metadata from 1.3.4 to 1.3.5 (#2390) Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 1.3.4 to 1.3.5. - [Release notes](https://github.com/dependabot/fetch-metadata/releases) - [Commits](https://github.com/dependabot/fetch-metadata/compare/v1.3.4...v1.3.5) --- updated-dependencies: - dependency-name: dependabot/fetch-metadata dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: toann * Update docs/features/bluegreen.md Co-authored-by: Rohit Agrawal --------- Signed-off-by: dependabot[bot] Signed-off-by: toann Signed-off-by: Justin Marquis <34fathombelow@protonmail.com> Signed-off-by: zachaller Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Justin Marquis <34fathombelow@protonmail.com> Co-authored-by: Zach Aller Co-authored-by: toann Co-authored-by: Rohit Agrawal --- docs/features/bluegreen.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/bluegreen.md b/docs/features/bluegreen.md index 439cb8e0c5..8002ae7b4a 100644 --- a/docs/features/bluegreen.md +++ b/docs/features/bluegreen.md @@ -93,7 +93,7 @@ The AutoPromotionEnabled will make the rollout automatically promote the new Rep Defaults to true ### autoPromotionSeconds -The AutoPromotionSeconds will make the rollout automatically promote the new ReplicaSet to active Service after the AutoPromotionSeconds time has passed since the rollout has entered a paused state. If the `AutoPromotionEnabled` field is set to false, this field will be ignored +Setting a positive non-zero value here would make the rollout automatically promote the new `ReplicaSet` to active Service after this much time has been elapsed since the rollout has entered a paused state. If the `AutoPromotionEnabled` field is set to **false**, this field would be ignored. Defaults to nil From e4c374d9d792a45aa20636282a9bdb808d648bdc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jul 2024 15:44:52 -0500 Subject: [PATCH 085/219] chore(deps): bump docker/build-push-action from 6.3.0 to 6.4.0 (#3723) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.3.0 to 6.4.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/1a162644f9a7e87d8f4b053101d1d9a712edc18c...a254f8ca60a858f3136a2f1f23a60969f2c402dd) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 691c696658..1f53d60b90 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@1a162644f9a7e87d8f4b053101d1d9a712edc18c #v6.3.0 + uses: docker/build-push-action@a254f8ca60a858f3136a2f1f23a60969f2c402dd #v6.4.0 with: context: . platforms: ${{ inputs.platforms }} From d9624356066a43809bedabff46a175553991043d Mon Sep 17 00:00:00 2001 From: Alex Eftimie Date: Thu, 18 Jul 2024 17:20:50 +0300 Subject: [PATCH 086/219] fix(analysis): explicitly set datadog aggregator to last only on v2 (#3730) * Datadog: explicitly set aggregator to last the field is required by API and we currently leave it empty string Signed-off-by: Alex Eftimie * add unit tests Signed-off-by: Alex Eftimie --------- Signed-off-by: Alex Eftimie --- metricproviders/datadog/datadog.go | 4 +++ metricproviders/datadog/datadogV2_test.go | 36 +++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/metricproviders/datadog/datadog.go b/metricproviders/datadog/datadog.go index 48b60fc0f3..47623b6b9f 100644 --- a/metricproviders/datadog/datadog.go +++ b/metricproviders/datadog/datadog.go @@ -224,6 +224,10 @@ func (p *Provider) createRequestV2(queries map[string]string, formula string, no "formula": formula, }} } + // we cannot leave aggregator empty as it will be passed as such to datadog API and fail + if aggregator == "" { + aggregator = "last" + } attribs := datadogQueryAttributes{ // Datadog requires milliseconds for v2 api diff --git a/metricproviders/datadog/datadogV2_test.go b/metricproviders/datadog/datadogV2_test.go index f3e481160e..b8319423f3 100644 --- a/metricproviders/datadog/datadogV2_test.go +++ b/metricproviders/datadog/datadogV2_test.go @@ -52,6 +52,16 @@ func newQueryProviderInterval10m() v1alpha1.MetricProvider { } } +func newQueryProviderSumAggregator() v1alpha1.MetricProvider { + return v1alpha1.MetricProvider{ + Datadog: &v1alpha1.DatadogMetric{ + Query: "avg:kubernetes.cpu.user.total{*}", + Interval: "5m", + Aggregator: "sum", + ApiVersion: "v2", + }, + } +} func TestRunSuiteV2(t *testing.T) { const expectedApiKey = "0123456789abcdef0123456789abcdef" const expectedAppKey = "0123456789abcdef0123456789abcdef01234567" @@ -68,6 +78,7 @@ func TestRunSuiteV2(t *testing.T) { expectedValue string expectedPhase v1alpha1.AnalysisPhase expectedErrorMessage string + expectedAggregator string useEnvVarForKeys bool }{ { @@ -252,6 +263,21 @@ func TestRunSuiteV2(t *testing.T) { expectedPhase: v1alpha1.AnalysisPhaseSuccessful, useEnvVarForKeys: false, }, + + { + webServerStatus: 200, + webServerResponse: `{"data": {"attributes": {"columns": [ {"values": [0.006121378742186943]}]}}}`, + metric: v1alpha1.Metric{ + Name: "success with default and data", + SuccessCondition: "default(result, 0) < 0.05", + Provider: newQueryProviderSumAggregator(), + }, + expectedIntervalSeconds: 300, + expectedValue: "0.006121378742186943", + expectedPhase: v1alpha1.AnalysisPhaseSuccessful, + expectedAggregator: "sum", + useEnvVarForKeys: false, + }, } // Run @@ -298,6 +324,16 @@ func TestRunSuiteV2(t *testing.T) { t.Errorf("\nExpected formula but no Formulas in request: %+v", actualFormulas) } } + // Check query aggregation being set + expectedAggregator := test.expectedAggregator + if expectedAggregator == "" { + expectedAggregator = "last" + } + for _, query := range actualQueries { + if query["aggregator"] != expectedAggregator { + t.Errorf("\naggregator expected %s but got %s", expectedAggregator, query["aggregator"]) + } + } if actualFrom != (unixNow()-test.expectedIntervalSeconds)*1000 { t.Errorf("\nfrom %d expected be equal to %d", actualFrom, (unixNow()-test.expectedIntervalSeconds)*1000) From 1189944e34981b1c464872b9e16ac3decfd20f7b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 09:45:11 -0500 Subject: [PATCH 087/219] chore(deps): bump docker/login-action from 3.2.0 to 3.3.0 (#3739) Bumps [docker/login-action](https://github.com/docker/login-action) from 3.2.0 to 3.3.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/0d4c9c5ea7693da7b068278f7b52bda2a190a446...9780b0c442fbb1117ed29e0efdff1e18412f7567) --- updated-dependencies: - dependency-name: docker/login-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 1f53d60b90..771aa61b11 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -106,7 +106,7 @@ jobs: echo 'EOF' >> $GITHUB_ENV - name: Login to Quay.io - uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0 + uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 with: registry: quay.io username: ${{ secrets.quay_username }} @@ -114,7 +114,7 @@ jobs: if: ${{ inputs.quay_image_name && inputs.push }} - name: Login to GitHub Container Registry - uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0 + uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 with: registry: ghcr.io username: ${{ secrets.ghcr_username }} @@ -122,7 +122,7 @@ jobs: if: ${{ inputs.ghcr_image_name && inputs.push }} - name: Login to dockerhub Container Registry - uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0 + uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 with: username: ${{ secrets.docker_username }} password: ${{ secrets.docker_password }} From 9a230b37f89ccddf12836a374be83a1d82510a0c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 09:45:26 -0500 Subject: [PATCH 088/219] chore(deps): bump docker/setup-buildx-action from 3.4.0 to 3.5.0 (#3738) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.4.0 to 3.5.0. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/4fd812986e6c8c2a69e18311145f9371337f27d4...aa33708b10e362ff993539393ff100fa93ed6a27) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 771aa61b11..60d9c94e8d 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -79,7 +79,7 @@ jobs: cosign-release: 'v2.2.0' - uses: docker/setup-qemu-action@5927c834f5b4fdf503fca6f4c7eccda82949e1ee # v3.1.0 - - uses: docker/setup-buildx-action@4fd812986e6c8c2a69e18311145f9371337f27d4 # v3.4.0 + - uses: docker/setup-buildx-action@aa33708b10e362ff993539393ff100fa93ed6a27 # v3.5.0 - name: Setup tags for container image as a CSV type run: | diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index e256815ad1..f2e6caade2 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -98,7 +98,7 @@ jobs: uses: docker/setup-qemu-action@5927c834f5b4fdf503fca6f4c7eccda82949e1ee # v3.1.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@4fd812986e6c8c2a69e18311145f9371337f27d4 # v3.4.0 + uses: docker/setup-buildx-action@aa33708b10e362ff993539393ff100fa93ed6a27 # v3.5.0 - name: Generate release artifacts run: | From 63c0eecf555429dcaeeb4c9a1f001c1a0bc021c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 09:45:40 -0500 Subject: [PATCH 089/219] chore(deps): bump docker/build-push-action from 6.4.0 to 6.5.0 (#3737) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.4.0 to 6.5.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/a254f8ca60a858f3136a2f1f23a60969f2c402dd...5176d81f87c23d6fc96624dfdbcd9f3830bbe445) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 60d9c94e8d..e0ced3453e 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@a254f8ca60a858f3136a2f1f23a60969f2c402dd #v6.4.0 + uses: docker/build-push-action@5176d81f87c23d6fc96624dfdbcd9f3830bbe445 #v6.5.0 with: context: . platforms: ${{ inputs.platforms }} From 5dbd7a8efc6922d2f8875a457c791f01ddebcb46 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 15:28:07 +0000 Subject: [PATCH 090/219] chore(deps): bump docker/setup-qemu-action from 3.1.0 to 3.2.0 (#3736) Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3.1.0 to 3.2.0. - [Release notes](https://github.com/docker/setup-qemu-action/releases) - [Commits](https://github.com/docker/setup-qemu-action/compare/5927c834f5b4fdf503fca6f4c7eccda82949e1ee...49b3bc8e6bdd4a60e6116a5414239cba5943d3cf) --- updated-dependencies: - dependency-name: docker/setup-qemu-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index e0ced3453e..067f017484 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -78,7 +78,7 @@ jobs: with: cosign-release: 'v2.2.0' - - uses: docker/setup-qemu-action@5927c834f5b4fdf503fca6f4c7eccda82949e1ee # v3.1.0 + - uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0 - uses: docker/setup-buildx-action@aa33708b10e362ff993539393ff100fa93ed6a27 # v3.5.0 - name: Setup tags for container image as a CSV type diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f2e6caade2..0c77a43695 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -95,7 +95,7 @@ jobs: go-version: ${{ env.GOLANG_VERSION }} - name: Set up QEMU - uses: docker/setup-qemu-action@5927c834f5b4fdf503fca6f4c7eccda82949e1ee # v3.1.0 + uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0 - name: Set up Docker Buildx uses: docker/setup-buildx-action@aa33708b10e362ff993539393ff100fa93ed6a27 # v3.5.0 From c727a3c2b1770fc2002ba5d13a6d7adab5e8079c Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Wed, 24 Jul 2024 12:48:06 -0500 Subject: [PATCH 091/219] chore: code coverage for e2e (#3740) * first pass at coverage for e2e Signed-off-by: Zach Aller * change folder names Signed-off-by: Zach Aller * only upload latest e2e results Signed-off-by: Zach Aller * change name of step Signed-off-by: Zach Aller * fix matrix name Signed-off-by: Zach Aller * rename files Signed-off-by: Zach Aller * add directory Signed-off-by: Zach Aller * use correct upload name Signed-off-by: Zach Aller * move event file Signed-off-by: Zach Aller * bad move of event_file Signed-off-by: Zach Aller * fix uncomment Signed-off-by: Zach Aller * only run on testing workflow Signed-off-by: Zach Aller * remove events from go workflow Signed-off-by: Zach Aller * use new download metho Signed-off-by: Zach Aller * remove specific file Signed-off-by: Zach Aller * change workflow name Signed-off-by: Zach Aller * remove double upload Signed-off-by: Zach Aller --------- Signed-off-by: Zach Aller --- .github/workflows/e2e.yaml | 98 ---------- .github/workflows/go.yml | 34 ---- ...e-test-results.yml => testing-results.yml} | 28 +-- .github/workflows/testing.yaml | 182 ++++++++++++++++++ .gitignore | 2 + Makefile | 6 +- 6 files changed, 198 insertions(+), 152 deletions(-) delete mode 100644 .github/workflows/e2e.yaml rename .github/workflows/{e2e-test-results.yml => testing-results.yml} (59%) create mode 100644 .github/workflows/testing.yaml diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml deleted file mode 100644 index 53a0cedc94..0000000000 --- a/.github/workflows/e2e.yaml +++ /dev/null @@ -1,98 +0,0 @@ -name: E2E Tests - -on: - push: - branches: - - 'master' - - 'release-*' - pull_request: - branches: - - 'master' - - 'release-*' - workflow_dispatch: - inputs: - debug_enabled: - description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' - required: false - default: false - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -permissions: - contents: read - -jobs: - event_file: - name: 'Event File' - runs-on: ubuntu-latest - steps: - - name: Upload - uses: actions/upload-artifact@v4 - with: - name: Event File - path: ${{ github.event_path }} - test-e2e: - strategy: - fail-fast: false - matrix: - kubernetes-minor-version: - - 1.26 - - 1.27 - - 1.28 - - 1.29 - name: Run end-to-end tests - runs-on: ubuntu-latest - steps: - - name: Set up Go - uses: actions/setup-go@v5.0.2 - with: - go-version: '1.22' - - uses: actions/checkout@v4 - - name: Setup k3s - env: - INSTALL_K3S_CHANNEL: v${{ matrix.kubernetes-minor-version }} - run: | - curl -sfL https://get.k3s.io | sh - - sudo mkdir ~/.kube - sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config - sudo chmod 755 ~/.kube/config - kubectl version - kubectl create ns argo-rollouts - - uses: actions/cache@v4 - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Download cache - run: go mod download - - name: Install CRDs - run: | - kubectl apply -k manifests/crds - kubectl apply -f test/e2e/crds - - name: Start controller - run: make start-e2e 2>&1 | sed -r "s/[[:cntrl:]]\[[0-9]{1,3}m//g" > /tmp/e2e-controller.log & - - name: Setup tmate session - uses: mxschmitt/action-tmate@v3 - if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true'}} - - name: Run e2e tests - run: make test-e2e - if: ${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true') }} - - name: Output Rerun Overview - run: | - [[ -f rerunreport.txt ]] && cat rerunreport.txt || echo "No rerun report found" - - name: Upload E2E Test Results - if: always() - uses: actions/upload-artifact@v4 - with: - name: E2E Test Results (k8s ${{ matrix.kubernetes-minor-version }}) - path: | - junit.xml - - name: Upload e2e-controller logs - uses: actions/upload-artifact@v4 - with: - name: e2e-controller-k8s-${{ matrix.kubernetes-minor-version }}.log - path: /tmp/e2e-controller.log - if: ${{ always() }} diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 68a06c00e1..b64dba1556 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -19,15 +19,6 @@ permissions: contents: read jobs: - event_file: - name: 'Event File' - runs-on: ubuntu-latest - steps: - - name: Upload - uses: actions/upload-artifact@v4 - with: - name: Event File - path: ${{ github.event_path }} lint-go: permissions: contents: read # for actions/checkout to fetch code @@ -72,31 +63,6 @@ jobs: - name: Compile all packages run: make controller plugin - - name: Test - run: make test-unit - - - name: Upload Unit Test Results - if: always() - uses: actions/upload-artifact@v4 - with: - name: Unit Test Results - path: | - junit.xml - - - name: Generate code coverage artifacts - uses: actions/upload-artifact@v4 - with: - name: code-coverage - path: coverage.out - - - name: Upload code coverage information to codecov.io - uses: codecov/codecov-action@v4.5.0 - with: - file: coverage.out - fail_ci_if_error: false - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - codegen: name: Verify Codegen runs-on: ubuntu-latest diff --git a/.github/workflows/e2e-test-results.yml b/.github/workflows/testing-results.yml similarity index 59% rename from .github/workflows/e2e-test-results.yml rename to .github/workflows/testing-results.yml index 0846ccd92b..9c4e0938ae 100644 --- a/.github/workflows/e2e-test-results.yml +++ b/.github/workflows/testing-results.yml @@ -1,9 +1,9 @@ # use separate workflow to support fork repositories and dependabot branches when publishing test results: see https://github.com/EnricoMi/publish-unit-test-result-action#support-fork-repositories-and-dependabot-branches -name: Test Results +name: Testing Results on: workflow_run: - workflows: ["E2E Tests", "Go"] + workflows: ["Testing"] types: - completed permissions: {} @@ -19,27 +19,19 @@ jobs: actions: read steps: - name: Download and Extract Artifacts - # TODO repace with native actions/download-artifact once it supports downloading from another workflow: https://github.com/actions/download-artifact/issues/3 - env: - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - run: | - mkdir -p artifacts && cd artifacts - artifacts_url=${{ github.event.workflow_run.artifacts_url }} - gh api "$artifacts_url" -q '.artifacts[] | [.name, .archive_download_url] | @tsv' | while read artifact - do - IFS=$'\t' read name url <<< "$artifact" - gh api $url > "$name.zip" - unzip -d "$name" "$name.zip" - done + uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + with: + run_id: ${{ github.event.workflow_run.id }} + path: artifacts - name: Publish Test Results uses: EnricoMi/publish-unit-test-result-action@v2 with: check_name: "${{ github.event.workflow.name }} Published Test Results" - commit: ${{ github.event.workflow_run.head_sha }} - event_file: artifacts/Event File/event.json - event_name: ${{ github.event.workflow_run.event }} - junit_files: "artifacts/**/junit.xml" compare_to_earlier_commit: false test_changes_limit: 0 fail_on: "errors" + commit: ${{ github.event.workflow_run.head_sha }} + event_file: artifacts/Event File/event.json + event_name: ${{ github.event.workflow_run.event }} + files: "artifacts/**/*.xml" diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml new file mode 100644 index 0000000000..3bbb003282 --- /dev/null +++ b/.github/workflows/testing.yaml @@ -0,0 +1,182 @@ +name: Testing + +on: + push: + branches: + - 'master' + - 'release-*' + pull_request: + branches: + - 'master' + - 'release-*' + workflow_dispatch: + inputs: + debug_enabled: + description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' + required: false + default: false +env: + # Golang version to use across CI steps + GOLANG_VERSION: '1.22' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + event_file: + name: 'Event File' + runs-on: ubuntu-latest + steps: + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: Event File + path: ${{ github.event_path }} + test-unit: + name: Run unit tests + runs-on: ubuntu-latest + steps: + - name: Set up Go + uses: actions/setup-go@v5.0.2 + with: + go-version: ${{ env.GOLANG_VERSION }} + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v4 + + - name: Restore go build cache + uses: actions/cache@v4 + with: + path: ~/.cache/go-build + key: ${{ runner.os }}-go-build-v1-${{ github.run_id }} + + - name: Download all Go modules + run: | + go mod download + - name: Test + run: make test-unit + + - name: Upload Unit Test Results + if: always() + uses: actions/upload-artifact@v4 + with: + name: Unit Test Results + path: | + junit.xml + - name: Generate code coverage artifacts + uses: actions/upload-artifact@v4 + with: + name: coverage-output-unit + path: coverage-output-unit/coverage.out + + test-e2e: + strategy: + fail-fast: false + matrix: + kubernetes: + - version: 1.26 + latest: false + - version: 1.27 + latest: false + - version: 1.28 + latest: false + - version: 1.29 + latest: true + name: Run end-to-end tests + runs-on: ubuntu-latest + steps: + - name: Set up Go + uses: actions/setup-go@v5.0.2 + with: + go-version: '1.22' + - uses: actions/checkout@v4 + - name: Setup k3s + env: + INSTALL_K3S_CHANNEL: v${{ matrix.kubernetes.version }} + run: | + curl -sfL https://get.k3s.io | sh - + sudo mkdir ~/.kube + sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config + sudo chmod 755 ~/.kube/config + kubectl version + kubectl create ns argo-rollouts + - uses: actions/cache@v4 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + - name: Download cache + run: go mod download + - name: Install CRDs + run: | + kubectl apply -k manifests/crds + kubectl apply -f test/e2e/crds + - name: Start controller + run: make start-e2e 2>&1 | sed -r "s/[[:cntrl:]]\[[0-9]{1,3}m//g" > /tmp/e2e-controller.log & + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true'}} + - name: Run e2e tests + run: make test-e2e + if: ${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true') }} + - name: Output Rerun Overview + run: | + [[ -f rerunreport.txt ]] && cat rerunreport.txt || echo "No rerun report found" + - name: Upload E2E Test Results + if: always() + uses: actions/upload-artifact@v4 + with: + name: E2E Test Results (k8s ${{ matrix.kubernetes.version }}) + path: | + junit.xml + - name: Upload e2e-controller logs + uses: actions/upload-artifact@v4 + with: + name: e2e-controller-k8s-${{ matrix.kubernetes.version }}.log + path: /tmp/e2e-controller.log + if: ${{ always() }} + - name: Upload code coverage artifacts + uses: actions/upload-artifact@v4 + with: + name: coverage-output-e2e + path: coverage-output-e2e + if: ${{ matrix.kubernetes.latest }} + + coverage-process: + name: Process Coverage Files + runs-on: ubuntu-latest + needs: + - test-unit + - test-e2e + steps: + - name: Set up Go + uses: actions/setup-go@v5.0.2 + with: + go-version: ${{ env.GOLANG_VERSION }} + id: go + - name: Get e2e code coverage + uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + with: + name: coverage-output-e2e + path: coverage-output-e2e + - name: Get unit test code coverage + uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + with: + name: coverage-output-unit + path: coverage-output-unit + - name: combine-go-coverage + run: | + go tool covdata percent -i=coverage-output-unit/,coverage-output-e2e/ -o full-coverage.out + - name: Upload code coverage information to codecov.io + uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0 + with: + file: full-coverage.out + fail_ci_if_error: false + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 1a22b8eef6..ab4b2ac69e 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,5 @@ plugin-bin/ # static server/static/* !server/static/.gitkeep +coverage-output-e2e/ +coverage-output-unit/ diff --git a/Makefile b/Makefile index 609cb724d9..d6244ecf82 100644 --- a/Makefile +++ b/Makefile @@ -235,7 +235,8 @@ test-kustomize: ## run kustomize tests .PHONY: start-e2e start-e2e: ## start e2e test environment - go run ./cmd/rollouts-controller/main.go --instance-id ${E2E_INSTANCE_ID} --loglevel debug --kloglevel 6 + mkdir -p coverage-output-e2e + GOCOVERDIR=coverage-output-e2e go run -cover ./cmd/rollouts-controller/main.go --instance-id ${E2E_INSTANCE_ID} --loglevel debug --kloglevel 6 .PHONY: test-e2e test-e2e: install-devtools-local @@ -243,7 +244,8 @@ test-e2e: install-devtools-local .PHONY: test-unit test-unit: install-devtools-local ## run unit tests - ${DIST_DIR}/gotestsum --junitfile=junit.xml --format=testname -- -covermode=count -coverprofile=coverage.out `go list ./... | grep -v ./test/cmd/metrics-plugin-sample` + mkdir -p coverage-output-unit + ${DIST_DIR}/gotestsum --junitfile=junit.xml --format=testname -- -covermode=count -coverprofile=coverage-output-unit/coverage.out `go list ./... | grep -v ./test/cmd/metrics-plugin-sample` .PHONY: coverage From f96eaca4ef40caf917421f708e0b8828b924e522 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Jul 2024 19:10:20 +0000 Subject: [PATCH 092/219] chore(deps): bump softprops/action-gh-release from 2.0.6 to 2.0.8 (#3733) Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.6 to 2.0.8. - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/a74c6b72af54cfa997e81df42d94703d6313a2d0...c062e08bd532815e2082a85e87e3ef29c3e6d191) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 0c77a43695..a71f20f40f 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -107,7 +107,7 @@ jobs: make manifests IMAGE_TAG=${{ github.ref_name }} - name: Draft release - uses: softprops/action-gh-release@a74c6b72af54cfa997e81df42d94703d6313a2d0 # v0.1.15 + uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v0.1.15 with: tag_name: ${{ github.event.inputs.tag }} draft: true @@ -212,7 +212,7 @@ jobs: /tmp/sbom.tar.gz - name: Upload SBOM and signature assets - uses: softprops/action-gh-release@a74c6b72af54cfa997e81df42d94703d6313a2d0 # v0.1.15 + uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v0.1.15 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: From 9884b2a4c4f55bc310bd6f80bbab11f4967a10bf Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Wed, 24 Jul 2024 14:43:27 -0500 Subject: [PATCH 093/219] fix: e2e test results processing change key name to run-id (#3744) fix key name to run-id Signed-off-by: Zach Aller --- .github/workflows/testing-results.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing-results.yml b/.github/workflows/testing-results.yml index 9c4e0938ae..660a03f921 100644 --- a/.github/workflows/testing-results.yml +++ b/.github/workflows/testing-results.yml @@ -21,7 +21,7 @@ jobs: - name: Download and Extract Artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: - run_id: ${{ github.event.workflow_run.id }} + run-id: ${{ github.event.workflow_run.id }} path: artifacts - name: Publish Test Results From d3d630d60fda3ff9276cb7aa77c9885b7024e8a6 Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Wed, 24 Jul 2024 18:45:30 -0500 Subject: [PATCH 094/219] fix: add secrets so we can download across workflows (#3746) add secrets so we can download across workflows Signed-off-by: Zach Aller --- .github/workflows/testing-results.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/testing-results.yml b/.github/workflows/testing-results.yml index 660a03f921..17b38409aa 100644 --- a/.github/workflows/testing-results.yml +++ b/.github/workflows/testing-results.yml @@ -23,6 +23,7 @@ jobs: with: run-id: ${{ github.event.workflow_run.id }} path: artifacts + github-token: ${{ secrets.GITHUB_TOKEN }} - name: Publish Test Results uses: EnricoMi/publish-unit-test-result-action@v2 From 872f2aca569123168dbf1cbbc73baee6f29be8ec Mon Sep 17 00:00:00 2001 From: cyrilico <19289022+cyrilico@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:51:27 +0100 Subject: [PATCH 095/219] feat(controller): Allow specifying full annotations for nginx canary ingresses. (#3671) * refactor according to suggestions Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> * codegen Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> * missing codegen Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> * Update specification.md Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> * further clarify when to use new field Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> --------- Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> --- docs/features/specification.md | 2 + docs/features/traffic-management/nginx.md | 7 +- manifests/crds/rollout-crd.yaml | 4 + manifests/install.yaml | 4 + pkg/apiclient/rollout/rollout.swagger.json | 7 + pkg/apis/rollouts/v1alpha1/generated.pb.go | 1224 ++++++++++------- pkg/apis/rollouts/v1alpha1/generated.proto | 3 + .../rollouts/v1alpha1/openapi_generated.go | 15 + pkg/apis/rollouts/v1alpha1/types.go | 2 + .../v1alpha1/zz_generated.deepcopy.go | 7 + rollout/trafficrouting/nginx/nginx.go | 12 + rollout/trafficrouting/nginx/nginx_test.go | 40 + ui/src/models/rollout/generated/api.ts | 6 + 13 files changed, 807 insertions(+), 526 deletions(-) diff --git a/docs/features/specification.md b/docs/features/specification.md index 607367c0c8..6ec9c65dd8 100644 --- a/docs/features/specification.md +++ b/docs/features/specification.md @@ -425,6 +425,8 @@ spec: additionalIngressAnnotations: # optional canary-by-header: X-Canary canary-by-header-value: iwantsit + canaryIngressAnnotations: # optional + my-custom-annotation.mygroup.com/key: value # ALB Ingress Controller routing configuration alb: diff --git a/docs/features/traffic-management/nginx.md b/docs/features/traffic-management/nginx.md index dc7c2ccdb8..220ad7fd84 100644 --- a/docs/features/traffic-management/nginx.md +++ b/docs/features/traffic-management/nginx.md @@ -7,7 +7,8 @@ The Rollout controller will always set the following two annotations on the cana - `canary: true` to indicate that this is the canary Ingress - `canary-weight: ` to indicate what percentage of traffic to send to the canary. If all traffic is routed to the stable Service, this is set to `0` -You can provide additional annotations to add to the canary Ingress via the `additionalIngressAnnotations` field to enable features like routing by header or cookie. +You can provide additional annotations to add to the canary Ingress via the `additionalIngressAnnotations` or `canaryIngressAnnotations` field to enable features like routing by header or cookie. +While the former offers the possibility of reusing a common, injectable nginx annotation prefix, the latter allows defining custom full annotations of any group, which may be relevant for other, independent mechanisms, such as a third-party metrics scraper or some other infrastructure integration. ## Integration with Argo Rollouts @@ -34,6 +35,8 @@ spec: additionalIngressAnnotations: # optional canary-by-header: X-Canary canary-by-header-value: iwantsit + canaryIngressAnnotations: # optional + my-custom-annotation.mygroup.com/key: value ``` The stable Ingress field is a reference to an Ingress in the same namespace of the Rollout. The Rollout requires the primary Ingress routes traffic to the stable Service. The Rollout checks that condition by confirming the Ingress has a backend that matches the Rollout's stableService. @@ -42,6 +45,8 @@ The controller routes traffic to the canary Service by creating a second Ingress Since the Nginx Ingress controller allows users to configure the annotation prefix used by the Ingress controller, Rollouts can specify the optional `annotationPrefix` field. The canary Ingress uses that prefix instead of the default `nginx.ingress.kubernetes.io` if the field set. +If full annotations, [as defined in the Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set), perhaps from different groups, need to be declared instead, the `canaryIngressAnnotations` field can be used, which accepts a similar key-value structure, but performs no prefix injection. +Note that, in case of collision with `additionalIngressAnnotations`, the value under `canaryIngressAnnotations` prevails. ## Using Argo Rollouts with multiple NGINX ingress controllers per service Starting with v1.5, argo rollouts supports multiple Nginx ingress controllers pointing at one service with canary deployments. If only one ingress controller is needed, utilize the existing key `stableIngress`. If multiple ingress controllers are needed (e.g., separating internal vs external traffic), use the key `stableIngresses` instead. It takes an array of string values that are the names of the ingress controllers. Canary steps are applied identically across all ingress controllers. diff --git a/manifests/crds/rollout-crd.yaml b/manifests/crds/rollout-crd.yaml index 04e187dbea..c30ac0fd73 100755 --- a/manifests/crds/rollout-crd.yaml +++ b/manifests/crds/rollout-crd.yaml @@ -934,6 +934,10 @@ spec: type: object annotationPrefix: type: string + canaryIngressAnnotations: + additionalProperties: + type: string + type: object stableIngress: type: string stableIngresses: diff --git a/manifests/install.yaml b/manifests/install.yaml index 7ee55d981c..95ff89b660 100755 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -13448,6 +13448,10 @@ spec: type: object annotationPrefix: type: string + canaryIngressAnnotations: + additionalProperties: + type: string + type: object stableIngress: type: string stableIngresses: diff --git a/pkg/apiclient/rollout/rollout.swagger.json b/pkg/apiclient/rollout/rollout.swagger.json index 336732288c..e072f7e0da 100755 --- a/pkg/apiclient/rollout/rollout.swagger.json +++ b/pkg/apiclient/rollout/rollout.swagger.json @@ -1678,6 +1678,13 @@ "type": "string" }, "title": "StableIngresses refers to the names of `Ingress` resources in the same namespace as the `Rollout` in a multi ingress scenario\n+optional" + }, + "canaryIngressAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "+optional" } }, "title": "NginxTrafficRouting configuration for Nginx ingress controller to control traffic routing" diff --git a/pkg/apis/rollouts/v1alpha1/generated.pb.go b/pkg/apis/rollouts/v1alpha1/generated.pb.go index 59df12b40f..91ef87cc29 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.pb.go +++ b/pkg/apis/rollouts/v1alpha1/generated.pb.go @@ -3318,6 +3318,7 @@ func init() { proto.RegisterType((*NewRelicMetric)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.NewRelicMetric") proto.RegisterType((*NginxTrafficRouting)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.NginxTrafficRouting") proto.RegisterMapType((map[string]string)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.NginxTrafficRouting.AdditionalIngressAnnotationsEntry") + proto.RegisterMapType((map[string]string)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.NginxTrafficRouting.CanaryIngressAnnotationsEntry") proto.RegisterType((*OAuth2Config)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.OAuth2Config") proto.RegisterType((*ObjectRef)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.ObjectRef") proto.RegisterType((*PauseCondition)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PauseCondition") @@ -3378,547 +3379,550 @@ func init() { } var fileDescriptor_e0e705f843545fab = []byte{ - // 8634 bytes of a gzipped FileDescriptorProto + // 8675 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x64, 0xd7, - 0x75, 0x98, 0x1f, 0x87, 0x43, 0xce, 0x9c, 0xe1, 0x92, 0xdc, 0xbb, 0xbb, 0x12, 0x45, 0x49, 0x3b, - 0xeb, 0xa7, 0x54, 0x95, 0x62, 0x99, 0xb4, 0x57, 0x52, 0x2b, 0x5b, 0xae, 0xda, 0x19, 0x72, 0x57, - 0xcb, 0x15, 0xb9, 0x4b, 0x9d, 0xe1, 0x6a, 0x13, 0xdb, 0x4a, 0xfc, 0x38, 0x73, 0x39, 0x7c, 0xcb, - 0x99, 0xf7, 0xc6, 0xef, 0xbd, 0xe1, 0x2e, 0x65, 0x21, 0x96, 0x6d, 0x28, 0x71, 0x5c, 0x1b, 0x71, - 0x93, 0x18, 0x45, 0xd1, 0xa2, 0x70, 0x83, 0x00, 0x69, 0x9b, 0xfc, 0x28, 0x82, 0x14, 0xed, 0x8f, - 0x00, 0x2d, 0xea, 0x26, 0x70, 0x80, 0xa6, 0x70, 0x7e, 0xb4, 0x4e, 0x0b, 0x84, 0xa9, 0x99, 0xfe, - 0x69, 0xd0, 0xc2, 0x68, 0xe1, 0x22, 0xa8, 0x7e, 0x14, 0xc5, 0xfd, 0x7c, 0xf7, 0xbd, 0x79, 0xc3, - 0xaf, 0x79, 0x5c, 0x29, 0x4d, 0xfe, 0xcd, 0xdc, 0x73, 0xee, 0x39, 0xe7, 0xdd, 0xcf, 0x73, 0xcf, - 0x3d, 0xe7, 0x5c, 0x58, 0x6d, 0xbb, 0xd1, 0x76, 0x7f, 0x73, 0xa1, 0xe9, 0x77, 0x17, 0x9d, 0xa0, - 0xed, 0xf7, 0x02, 0xff, 0x1e, 0xff, 0xf1, 0xd1, 0xc0, 0xef, 0x74, 0xfc, 0x7e, 0x14, 0x2e, 0xf6, - 0x76, 0xda, 0x8b, 0x4e, 0xcf, 0x0d, 0x17, 0x75, 0xc9, 0xee, 0xc7, 0x9d, 0x4e, 0x6f, 0xdb, 0xf9, - 0xf8, 0x62, 0x9b, 0x7a, 0x34, 0x70, 0x22, 0xda, 0x5a, 0xe8, 0x05, 0x7e, 0xe4, 0x93, 0x4f, 0xc5, - 0xd4, 0x16, 0x14, 0x35, 0xfe, 0xe3, 0xa7, 0x55, 0xdd, 0x85, 0xde, 0x4e, 0x7b, 0x81, 0x51, 0x5b, - 0xd0, 0x25, 0x8a, 0xda, 0xfc, 0x47, 0x0d, 0x59, 0xda, 0x7e, 0xdb, 0x5f, 0xe4, 0x44, 0x37, 0xfb, - 0x5b, 0xfc, 0x1f, 0xff, 0xc3, 0x7f, 0x09, 0x66, 0xf3, 0x4f, 0xed, 0xbc, 0x14, 0x2e, 0xb8, 0x3e, - 0x93, 0x6d, 0x71, 0xd3, 0x89, 0x9a, 0xdb, 0x8b, 0xbb, 0x03, 0x12, 0xcd, 0xdb, 0x06, 0x52, 0xd3, - 0x0f, 0x68, 0x16, 0xce, 0x0b, 0x31, 0x4e, 0xd7, 0x69, 0x6e, 0xbb, 0x1e, 0x0d, 0xf6, 0xe2, 0xaf, - 0xee, 0xd2, 0xc8, 0xc9, 0xaa, 0xb5, 0x38, 0xac, 0x56, 0xd0, 0xf7, 0x22, 0xb7, 0x4b, 0x07, 0x2a, - 0xfc, 0xb5, 0xa3, 0x2a, 0x84, 0xcd, 0x6d, 0xda, 0x75, 0x06, 0xea, 0x3d, 0x3f, 0xac, 0x5e, 0x3f, - 0x72, 0x3b, 0x8b, 0xae, 0x17, 0x85, 0x51, 0x90, 0xae, 0x64, 0xff, 0xb0, 0x00, 0xe5, 0xda, 0x6a, - 0xbd, 0x11, 0x39, 0x51, 0x3f, 0x24, 0x3f, 0x6b, 0xc1, 0x54, 0xc7, 0x77, 0x5a, 0x75, 0xa7, 0xe3, - 0x78, 0x4d, 0x1a, 0xcc, 0x59, 0x57, 0xac, 0x67, 0x2a, 0x57, 0x57, 0x17, 0x46, 0xe9, 0xaf, 0x85, - 0xda, 0xfd, 0x10, 0x69, 0xe8, 0xf7, 0x83, 0x26, 0x45, 0xba, 0x55, 0xbf, 0xf8, 0xdd, 0xfd, 0xea, - 0x87, 0x0e, 0xf6, 0xab, 0x53, 0xab, 0x06, 0x27, 0x4c, 0xf0, 0x25, 0xdf, 0xb2, 0xe0, 0x7c, 0xd3, - 0xf1, 0x9c, 0x60, 0x6f, 0xc3, 0x09, 0xda, 0x34, 0x7a, 0x35, 0xf0, 0xfb, 0xbd, 0xb9, 0xb1, 0x33, - 0x90, 0xe6, 0x31, 0x29, 0xcd, 0xf9, 0xa5, 0x34, 0x3b, 0x1c, 0x94, 0x80, 0xcb, 0x15, 0x46, 0xce, - 0x66, 0x87, 0x9a, 0x72, 0x15, 0xce, 0x52, 0xae, 0x46, 0x9a, 0x1d, 0x0e, 0x4a, 0x40, 0x9e, 0x85, - 0x49, 0xd7, 0x6b, 0x07, 0x34, 0x0c, 0xe7, 0xc6, 0xaf, 0x58, 0xcf, 0x94, 0xeb, 0x33, 0xb2, 0xfa, - 0xe4, 0x8a, 0x28, 0x46, 0x05, 0xb7, 0x7f, 0xb3, 0x00, 0xe7, 0x6b, 0xab, 0xf5, 0x8d, 0xc0, 0xd9, - 0xda, 0x72, 0x9b, 0xe8, 0xf7, 0x23, 0xd7, 0x6b, 0x9b, 0x04, 0xac, 0xc3, 0x09, 0x90, 0x17, 0xa1, - 0x12, 0xd2, 0x60, 0xd7, 0x6d, 0xd2, 0x75, 0x3f, 0x88, 0x78, 0xa7, 0x14, 0xeb, 0x17, 0x24, 0x7a, - 0xa5, 0x11, 0x83, 0xd0, 0xc4, 0x63, 0xd5, 0x02, 0xdf, 0x8f, 0x24, 0x9c, 0xb7, 0x59, 0x39, 0xae, - 0x86, 0x31, 0x08, 0x4d, 0x3c, 0xb2, 0x0c, 0xb3, 0x8e, 0xe7, 0xf9, 0x91, 0x13, 0xb9, 0xbe, 0xb7, - 0x1e, 0xd0, 0x2d, 0xf7, 0x81, 0xfc, 0xc4, 0x39, 0x59, 0x77, 0xb6, 0x96, 0x82, 0xe3, 0x40, 0x0d, - 0xf2, 0x4d, 0x0b, 0x66, 0xc3, 0xc8, 0x6d, 0xee, 0xb8, 0x1e, 0x0d, 0xc3, 0x25, 0xdf, 0xdb, 0x72, - 0xdb, 0x73, 0x45, 0xde, 0x6d, 0xb7, 0x46, 0xeb, 0xb6, 0x46, 0x8a, 0x6a, 0xfd, 0x22, 0x13, 0x29, - 0x5d, 0x8a, 0x03, 0xdc, 0xc9, 0x47, 0xa0, 0x2c, 0x5b, 0x94, 0x86, 0x73, 0x13, 0x57, 0x0a, 0xcf, - 0x94, 0xeb, 0xe7, 0x0e, 0xf6, 0xab, 0xe5, 0x15, 0x55, 0x88, 0x31, 0xdc, 0x5e, 0x86, 0xb9, 0x5a, - 0x77, 0xd3, 0x09, 0x43, 0xa7, 0xe5, 0x07, 0xa9, 0xae, 0x7b, 0x06, 0x4a, 0x5d, 0xa7, 0xd7, 0x73, - 0xbd, 0x36, 0xeb, 0x3b, 0x46, 0x67, 0xea, 0x60, 0xbf, 0x5a, 0x5a, 0x93, 0x65, 0xa8, 0xa1, 0xf6, - 0x7f, 0x1a, 0x83, 0x4a, 0xcd, 0x73, 0x3a, 0x7b, 0xa1, 0x1b, 0x62, 0xdf, 0x23, 0x9f, 0x83, 0x12, - 0x5b, 0xb5, 0x5a, 0x4e, 0xe4, 0xc8, 0x99, 0xfe, 0xb1, 0x05, 0xb1, 0x88, 0x2c, 0x98, 0x8b, 0x48, - 0xfc, 0xf9, 0x0c, 0x7b, 0x61, 0xf7, 0xe3, 0x0b, 0xb7, 0x37, 0xef, 0xd1, 0x66, 0xb4, 0x46, 0x23, - 0xa7, 0x4e, 0x64, 0x2f, 0x40, 0x5c, 0x86, 0x9a, 0x2a, 0xf1, 0x61, 0x3c, 0xec, 0xd1, 0xa6, 0x9c, - 0xb9, 0x6b, 0x23, 0xce, 0x90, 0x58, 0xf4, 0x46, 0x8f, 0x36, 0xeb, 0x53, 0x92, 0xf5, 0x38, 0xfb, - 0x87, 0x9c, 0x11, 0xb9, 0x0f, 0x13, 0x21, 0x5f, 0xcb, 0xe4, 0xa4, 0xbc, 0x9d, 0x1f, 0x4b, 0x4e, - 0xb6, 0x3e, 0x2d, 0x99, 0x4e, 0x88, 0xff, 0x28, 0xd9, 0xd9, 0xff, 0xd9, 0x82, 0x0b, 0x06, 0x76, - 0x2d, 0x68, 0xf7, 0xbb, 0xd4, 0x8b, 0xc8, 0x15, 0x18, 0xf7, 0x9c, 0x2e, 0x95, 0xb3, 0x4a, 0x8b, - 0x7c, 0xcb, 0xe9, 0x52, 0xe4, 0x10, 0xf2, 0x14, 0x14, 0x77, 0x9d, 0x4e, 0x9f, 0xf2, 0x46, 0x2a, - 0xd7, 0xcf, 0x49, 0x94, 0xe2, 0x1b, 0xac, 0x10, 0x05, 0x8c, 0xbc, 0x0d, 0x65, 0xfe, 0xe3, 0x7a, - 0xe0, 0x77, 0x73, 0xfa, 0x34, 0x29, 0xe1, 0x1b, 0x8a, 0xac, 0x18, 0x7e, 0xfa, 0x2f, 0xc6, 0x0c, - 0xed, 0x3f, 0xb6, 0x60, 0xc6, 0xf8, 0xb8, 0x55, 0x37, 0x8c, 0xc8, 0x67, 0x07, 0x06, 0xcf, 0xc2, - 0xf1, 0x06, 0x0f, 0xab, 0xcd, 0x87, 0xce, 0xac, 0xfc, 0xd2, 0x92, 0x2a, 0x31, 0x06, 0x8e, 0x07, - 0x45, 0x37, 0xa2, 0xdd, 0x70, 0x6e, 0xec, 0x4a, 0xe1, 0x99, 0xca, 0xd5, 0x95, 0xdc, 0xba, 0x31, - 0x6e, 0xdf, 0x15, 0x46, 0x1f, 0x05, 0x1b, 0xfb, 0xb7, 0x0a, 0x89, 0xee, 0x5b, 0x53, 0x72, 0xbc, - 0x6b, 0xc1, 0x44, 0xc7, 0xd9, 0xa4, 0x1d, 0x31, 0xb7, 0x2a, 0x57, 0xdf, 0xcc, 0x4d, 0x12, 0xc5, - 0x63, 0x61, 0x95, 0xd3, 0xbf, 0xe6, 0x45, 0xc1, 0x5e, 0x3c, 0xbc, 0x44, 0x21, 0x4a, 0xe6, 0xe4, - 0xef, 0x59, 0x50, 0x89, 0x57, 0x35, 0xd5, 0x2c, 0x9b, 0xf9, 0x0b, 0x13, 0x2f, 0xa6, 0x52, 0x22, - 0xbd, 0x44, 0x1b, 0x10, 0x34, 0x65, 0x99, 0xff, 0x04, 0x54, 0x8c, 0x4f, 0x20, 0xb3, 0x50, 0xd8, - 0xa1, 0x7b, 0x62, 0xc0, 0x23, 0xfb, 0x49, 0x2e, 0x26, 0x46, 0xb8, 0x1c, 0xd2, 0x9f, 0x1c, 0x7b, - 0xc9, 0x9a, 0x7f, 0x05, 0x66, 0xd3, 0x0c, 0x4f, 0x52, 0xdf, 0xfe, 0x67, 0xc5, 0xc4, 0xc0, 0x64, - 0x0b, 0x01, 0xf1, 0x61, 0xb2, 0x4b, 0xa3, 0xc0, 0x6d, 0xaa, 0x2e, 0x5b, 0x1e, 0xad, 0x95, 0xd6, - 0x38, 0xb1, 0x78, 0x43, 0x14, 0xff, 0x43, 0x54, 0x5c, 0xc8, 0x36, 0x8c, 0x3b, 0x41, 0x5b, 0xf5, - 0xc9, 0xf5, 0x7c, 0xa6, 0x65, 0xbc, 0x54, 0xd4, 0x82, 0x76, 0x88, 0x9c, 0x03, 0x59, 0x84, 0x72, - 0x44, 0x83, 0xae, 0xeb, 0x39, 0x91, 0xd8, 0x41, 0x4b, 0xf5, 0xf3, 0x12, 0xad, 0xbc, 0xa1, 0x00, - 0x18, 0xe3, 0x90, 0x0e, 0x4c, 0xb4, 0x82, 0x3d, 0xec, 0x7b, 0x73, 0xe3, 0x79, 0x34, 0xc5, 0x32, - 0xa7, 0x15, 0x0f, 0x52, 0xf1, 0x1f, 0x25, 0x0f, 0xf2, 0xab, 0x16, 0x5c, 0xec, 0x52, 0x27, 0xec, - 0x07, 0x94, 0x7d, 0x02, 0xd2, 0x88, 0x7a, 0xac, 0x63, 0xe7, 0x8a, 0x9c, 0x39, 0x8e, 0xda, 0x0f, - 0x83, 0x94, 0xeb, 0x4f, 0x48, 0x51, 0x2e, 0x66, 0x41, 0x31, 0x53, 0x1a, 0xf2, 0x36, 0x54, 0xa2, - 0xa8, 0xd3, 0x88, 0x98, 0x1e, 0xdc, 0xde, 0x9b, 0x9b, 0xe0, 0x8b, 0xd7, 0x88, 0x2b, 0xcc, 0xc6, - 0xc6, 0xaa, 0x22, 0x58, 0x9f, 0x61, 0xb3, 0xc5, 0x28, 0x40, 0x93, 0x9d, 0xfd, 0x2f, 0x8b, 0x70, - 0x7e, 0x60, 0x5b, 0x21, 0x2f, 0x40, 0xb1, 0xb7, 0xed, 0x84, 0x6a, 0x9f, 0xb8, 0xac, 0x16, 0xa9, - 0x75, 0x56, 0xf8, 0xde, 0x7e, 0xf5, 0x9c, 0xaa, 0xc2, 0x0b, 0x50, 0x20, 0x33, 0xad, 0xad, 0x4b, - 0xc3, 0xd0, 0x69, 0xab, 0xcd, 0xc3, 0x18, 0xa4, 0xbc, 0x18, 0x15, 0x9c, 0xfc, 0x9c, 0x05, 0xe7, - 0xc4, 0x80, 0x45, 0x1a, 0xf6, 0x3b, 0x11, 0xdb, 0x20, 0x59, 0xa7, 0xdc, 0xcc, 0x63, 0x72, 0x08, - 0x92, 0xf5, 0x4b, 0x92, 0xfb, 0x39, 0xb3, 0x34, 0xc4, 0x24, 0x5f, 0x72, 0x17, 0xca, 0x61, 0xe4, - 0x04, 0x11, 0x6d, 0xd5, 0x22, 0xae, 0xca, 0x55, 0xae, 0xfe, 0xf8, 0xf1, 0x76, 0x8e, 0x0d, 0xb7, - 0x4b, 0xc5, 0x2e, 0xd5, 0x50, 0x04, 0x30, 0xa6, 0x45, 0xde, 0x06, 0x08, 0xfa, 0x5e, 0xa3, 0xdf, - 0xed, 0x3a, 0xc1, 0x9e, 0xd4, 0xee, 0x6e, 0x8c, 0xf6, 0x79, 0xa8, 0xe9, 0xc5, 0x8a, 0x4e, 0x5c, - 0x86, 0x06, 0x3f, 0xf2, 0x25, 0x0b, 0xce, 0x89, 0x79, 0xa0, 0x24, 0x98, 0xc8, 0x59, 0x82, 0xf3, - 0xac, 0x69, 0x97, 0x4d, 0x16, 0x98, 0xe4, 0x48, 0xde, 0x84, 0x4a, 0xd3, 0xef, 0xf6, 0x3a, 0x54, - 0x34, 0xee, 0xe4, 0x89, 0x1b, 0x97, 0x0f, 0xdd, 0xa5, 0x98, 0x04, 0x9a, 0xf4, 0xec, 0xff, 0x90, - 0xd4, 0x71, 0xd4, 0x90, 0x26, 0x9f, 0x81, 0xc7, 0xc2, 0x7e, 0xb3, 0x49, 0xc3, 0x70, 0xab, 0xdf, - 0xc1, 0xbe, 0x77, 0xc3, 0x0d, 0x23, 0x3f, 0xd8, 0x5b, 0x75, 0xbb, 0x6e, 0xc4, 0x07, 0x74, 0xb1, - 0xfe, 0xe4, 0xc1, 0x7e, 0xf5, 0xb1, 0xc6, 0x30, 0x24, 0x1c, 0x5e, 0x9f, 0x38, 0xf0, 0x78, 0xdf, - 0x1b, 0x4e, 0x5e, 0x1c, 0x3f, 0xaa, 0x07, 0xfb, 0xd5, 0xc7, 0xef, 0x0c, 0x47, 0xc3, 0xc3, 0x68, - 0xd8, 0x7f, 0x6a, 0xb1, 0x6d, 0x48, 0x7c, 0xd7, 0x06, 0xed, 0xf6, 0x3a, 0x6c, 0xe9, 0x3c, 0x7b, - 0xe5, 0x38, 0x4a, 0x28, 0xc7, 0x98, 0xcf, 0x5e, 0xae, 0xe4, 0x1f, 0xa6, 0x21, 0xdb, 0xff, 0xcd, - 0x82, 0x8b, 0x69, 0xe4, 0x87, 0xa0, 0xd0, 0x85, 0x49, 0x85, 0xee, 0x56, 0xbe, 0x5f, 0x3b, 0x44, - 0xab, 0xfb, 0x79, 0x63, 0xc0, 0x2a, 0x54, 0xa4, 0x5b, 0xe4, 0x25, 0x98, 0x8a, 0xe4, 0xdf, 0x5b, - 0xb1, 0x72, 0xae, 0x0d, 0x13, 0x1b, 0x06, 0x0c, 0x13, 0x98, 0xac, 0x66, 0xb3, 0xd3, 0x0f, 0x23, - 0x1a, 0x34, 0x9a, 0x7e, 0x4f, 0x2c, 0xbb, 0xa5, 0xb8, 0xe6, 0x92, 0x01, 0xc3, 0x04, 0xa6, 0xfd, - 0xb7, 0x8b, 0x83, 0xed, 0xfe, 0xff, 0xbb, 0xbe, 0x12, 0xab, 0x1f, 0x85, 0xf7, 0x53, 0xfd, 0x18, - 0xff, 0x40, 0xa9, 0x1f, 0x5f, 0xb6, 0x98, 0x16, 0x27, 0x06, 0x40, 0x28, 0x55, 0xa3, 0xd7, 0xf3, - 0x9d, 0x0e, 0x48, 0xb7, 0x4c, 0xc5, 0x50, 0xf2, 0xc2, 0x98, 0xad, 0xfd, 0x8f, 0xc7, 0x61, 0xaa, - 0xe6, 0x45, 0x6e, 0x6d, 0x6b, 0xcb, 0xf5, 0xdc, 0x68, 0x8f, 0x7c, 0x7d, 0x0c, 0x16, 0x7b, 0x01, - 0xdd, 0xa2, 0x41, 0x40, 0x5b, 0xcb, 0xfd, 0xc0, 0xf5, 0xda, 0x8d, 0xe6, 0x36, 0x6d, 0xf5, 0x3b, - 0xae, 0xd7, 0x5e, 0x69, 0x7b, 0xbe, 0x2e, 0xbe, 0xf6, 0x80, 0x36, 0xfb, 0xbc, 0x5d, 0xc5, 0x2a, - 0xd1, 0x1d, 0x4d, 0xf6, 0xf5, 0x93, 0x31, 0xad, 0x3f, 0x7f, 0xb0, 0x5f, 0x5d, 0x3c, 0x61, 0x25, - 0x3c, 0xe9, 0xa7, 0x91, 0xaf, 0x8e, 0xc1, 0x42, 0x40, 0x3f, 0xdf, 0x77, 0x8f, 0xdf, 0x1a, 0x62, - 0x19, 0xef, 0x8c, 0xb8, 0xdd, 0x9f, 0x88, 0x67, 0xfd, 0xea, 0xc1, 0x7e, 0xf5, 0x84, 0x75, 0xf0, - 0x84, 0xdf, 0x65, 0xaf, 0x43, 0xa5, 0xd6, 0x73, 0x43, 0xf7, 0x01, 0xfa, 0xfd, 0x88, 0x1e, 0xc3, - 0xa0, 0x51, 0x85, 0x62, 0xd0, 0xef, 0x50, 0xb1, 0xc0, 0x94, 0xeb, 0x65, 0xb6, 0x2c, 0x23, 0x2b, - 0x40, 0x51, 0x6e, 0x7f, 0x99, 0x6d, 0x41, 0x9c, 0x64, 0xca, 0x94, 0x75, 0x0f, 0x8a, 0x01, 0x63, - 0x22, 0x47, 0xd6, 0xa8, 0xa7, 0xfe, 0x58, 0x6a, 0x29, 0x04, 0xfb, 0x89, 0x82, 0x85, 0xfd, 0x9d, - 0x31, 0xb8, 0x54, 0xeb, 0xf5, 0xd6, 0x68, 0xb8, 0x9d, 0x92, 0xe2, 0x17, 0x2c, 0x98, 0xde, 0x75, - 0x83, 0xa8, 0xef, 0x74, 0x94, 0xb5, 0x52, 0xc8, 0xd3, 0x18, 0x55, 0x1e, 0xce, 0xed, 0x8d, 0x04, - 0xe9, 0x3a, 0x39, 0xd8, 0xaf, 0x4e, 0x27, 0xcb, 0x30, 0xc5, 0x9e, 0xfc, 0x5d, 0x0b, 0x66, 0x65, - 0xd1, 0x2d, 0xbf, 0x45, 0x4d, 0x6b, 0xf8, 0x9d, 0x3c, 0x65, 0xd2, 0xc4, 0x85, 0x15, 0x33, 0x5d, - 0x8a, 0x03, 0x42, 0xd8, 0xff, 0x63, 0x0c, 0x1e, 0x1d, 0x42, 0x83, 0xfc, 0x9a, 0x05, 0x17, 0x85, - 0x09, 0xdd, 0x00, 0x21, 0xdd, 0x92, 0xad, 0xf9, 0x93, 0x79, 0x4b, 0x8e, 0x6c, 0x8a, 0x53, 0xaf, - 0x49, 0xeb, 0x73, 0x6c, 0x49, 0x5e, 0xca, 0x60, 0x8d, 0x99, 0x02, 0x71, 0x49, 0x85, 0x51, 0x3d, - 0x25, 0xe9, 0xd8, 0x43, 0x91, 0xb4, 0x91, 0xc1, 0x1a, 0x33, 0x05, 0xb2, 0xff, 0x26, 0x3c, 0x7e, - 0x08, 0xb9, 0xa3, 0x27, 0xa7, 0xfd, 0xa6, 0x1e, 0xf5, 0xc9, 0x31, 0x77, 0x8c, 0x79, 0x6d, 0xc3, - 0x04, 0x9f, 0x3a, 0x6a, 0x62, 0x03, 0xdb, 0x83, 0xf9, 0x9c, 0x0a, 0x51, 0x42, 0xec, 0xef, 0x58, - 0x50, 0x3a, 0x81, 0xed, 0xb3, 0x9a, 0xb4, 0x7d, 0x96, 0x07, 0xec, 0x9e, 0xd1, 0xa0, 0xdd, 0xf3, - 0xd5, 0xd1, 0x7a, 0xe3, 0x38, 0xf6, 0xce, 0x1f, 0x5a, 0x70, 0x7e, 0xc0, 0x3e, 0x4a, 0xb6, 0xe1, - 0x62, 0xcf, 0x6f, 0xa9, 0xed, 0xf4, 0x86, 0x13, 0x6e, 0x73, 0x98, 0xfc, 0xbc, 0x17, 0x58, 0x4f, - 0xae, 0x67, 0xc0, 0xdf, 0xdb, 0xaf, 0xce, 0x69, 0x22, 0x29, 0x04, 0xcc, 0xa4, 0x48, 0x7a, 0x50, - 0xda, 0x72, 0x69, 0xa7, 0x15, 0x0f, 0xc1, 0x11, 0xb5, 0xb4, 0xeb, 0x92, 0x9a, 0xb8, 0x1a, 0x50, - 0xff, 0x50, 0x73, 0xb1, 0x7f, 0x64, 0xc1, 0x74, 0xad, 0x1f, 0x6d, 0x33, 0x1d, 0xa5, 0xc9, 0xad, - 0x71, 0xc4, 0x83, 0x62, 0xe8, 0xb6, 0x77, 0x5f, 0xc8, 0x67, 0x31, 0x6e, 0x30, 0x52, 0xf2, 0x8a, - 0x44, 0x2b, 0xeb, 0xbc, 0x10, 0x05, 0x1b, 0x12, 0xc0, 0x84, 0xef, 0xf4, 0xa3, 0xed, 0xab, 0xf2, - 0x93, 0x47, 0xb4, 0x4c, 0xdc, 0x66, 0x9f, 0x73, 0x55, 0x72, 0xd4, 0x2a, 0xa3, 0x28, 0x45, 0xc9, - 0xc9, 0xfe, 0x22, 0x4c, 0x27, 0xef, 0xdd, 0x8e, 0x31, 0x66, 0x9f, 0x84, 0x82, 0x13, 0x78, 0x72, - 0xc4, 0x56, 0x24, 0x42, 0xa1, 0x86, 0xb7, 0x90, 0x95, 0x93, 0xe7, 0xa0, 0xb4, 0xd5, 0xef, 0x74, - 0xf8, 0xb9, 0x42, 0x5c, 0x72, 0xe9, 0x63, 0xd1, 0x75, 0x59, 0x8e, 0x1a, 0xc3, 0xfe, 0x3f, 0xe3, - 0x30, 0x53, 0xef, 0xf4, 0xe9, 0xab, 0x01, 0xa5, 0xca, 0x16, 0x54, 0x83, 0x99, 0x5e, 0x40, 0x77, - 0x5d, 0x7a, 0xbf, 0x41, 0x3b, 0xb4, 0x19, 0xf9, 0x81, 0x94, 0xe6, 0x51, 0x49, 0x68, 0x66, 0x3d, - 0x09, 0xc6, 0x34, 0x3e, 0x79, 0x05, 0xa6, 0x9d, 0x66, 0xe4, 0xee, 0x52, 0x4d, 0x41, 0x88, 0xfb, - 0x88, 0xa4, 0x30, 0x5d, 0x4b, 0x40, 0x31, 0x85, 0x4d, 0x3e, 0x0b, 0x73, 0x61, 0xd3, 0xe9, 0xd0, - 0x3b, 0x3d, 0xc9, 0x6a, 0x69, 0x9b, 0x36, 0x77, 0xd6, 0x7d, 0xd7, 0x8b, 0xa4, 0xdd, 0xf1, 0x8a, - 0xa4, 0x34, 0xd7, 0x18, 0x82, 0x87, 0x43, 0x29, 0x90, 0x7f, 0x65, 0xc1, 0x93, 0xbd, 0x80, 0xae, - 0x07, 0x7e, 0xd7, 0x67, 0x43, 0x6d, 0xc0, 0x1c, 0x26, 0xcd, 0x42, 0x6f, 0x8c, 0xa8, 0x4b, 0x89, - 0x92, 0xc1, 0x3b, 0x9c, 0x0f, 0x1f, 0xec, 0x57, 0x9f, 0x5c, 0x3f, 0x4c, 0x00, 0x3c, 0x5c, 0x3e, - 0xf2, 0x6f, 0x2c, 0xb8, 0xdc, 0xf3, 0xc3, 0xe8, 0x90, 0x4f, 0x28, 0x9e, 0xe9, 0x27, 0xd8, 0x07, - 0xfb, 0xd5, 0xcb, 0xeb, 0x87, 0x4a, 0x80, 0x47, 0x48, 0x68, 0x1f, 0x54, 0xe0, 0xbc, 0x31, 0xf6, - 0xa4, 0x31, 0xe7, 0x65, 0x38, 0xa7, 0x06, 0x43, 0xac, 0xfb, 0x94, 0x63, 0xdb, 0x5e, 0xcd, 0x04, + 0x75, 0x98, 0x1e, 0x87, 0x43, 0xce, 0x9c, 0xe1, 0x92, 0xdc, 0xbb, 0xbb, 0x12, 0x45, 0x69, 0x77, + 0xd6, 0x4f, 0xa9, 0x2a, 0xc5, 0x32, 0x69, 0xaf, 0xa4, 0x56, 0xb6, 0x5c, 0xb5, 0x33, 0xe4, 0xae, + 0x96, 0x2b, 0x72, 0x97, 0x3a, 0xc3, 0xd5, 0x26, 0xb6, 0x95, 0xf8, 0x71, 0xe6, 0x72, 0xf8, 0x96, + 0x33, 0xef, 0x8d, 0xdf, 0x7b, 0xc3, 0x5d, 0xca, 0x42, 0x2c, 0xdb, 0x50, 0xe2, 0xb8, 0x36, 0xe2, + 0x26, 0x31, 0x8a, 0xa2, 0x45, 0xe1, 0x06, 0x29, 0xd2, 0x36, 0xf9, 0x51, 0x04, 0x29, 0xda, 0x1f, + 0x01, 0x5a, 0xd4, 0x4d, 0xe0, 0x00, 0x75, 0xe1, 0xfc, 0x68, 0x9d, 0x16, 0x08, 0x53, 0x33, 0xfd, + 0xd3, 0xa0, 0x85, 0xd1, 0xc2, 0x45, 0x50, 0xfd, 0x28, 0x8a, 0xfb, 0xf9, 0xee, 0x7b, 0xf3, 0x86, + 0x1f, 0x3b, 0x8f, 0x2b, 0xa5, 0xf5, 0xbf, 0x99, 0x7b, 0xce, 0x3d, 0xe7, 0xbc, 0xfb, 0x79, 0xee, + 0xb9, 0xe7, 0x9c, 0x0b, 0xab, 0x6d, 0x37, 0xda, 0xee, 0x6f, 0x2e, 0x34, 0xfd, 0xee, 0xa2, 0x13, + 0xb4, 0xfd, 0x5e, 0xe0, 0xdf, 0xe5, 0x3f, 0x3e, 0x12, 0xf8, 0x9d, 0x8e, 0xdf, 0x8f, 0xc2, 0xc5, + 0xde, 0x4e, 0x7b, 0xd1, 0xe9, 0xb9, 0xe1, 0xa2, 0x2e, 0xd9, 0xfd, 0x98, 0xd3, 0xe9, 0x6d, 0x3b, + 0x1f, 0x5b, 0x6c, 0x53, 0x8f, 0x06, 0x4e, 0x44, 0x5b, 0x0b, 0xbd, 0xc0, 0x8f, 0x7c, 0xf2, 0xc9, + 0x98, 0xda, 0x82, 0xa2, 0xc6, 0x7f, 0xfc, 0xac, 0xaa, 0xbb, 0xd0, 0xdb, 0x69, 0x2f, 0x30, 0x6a, + 0x0b, 0xba, 0x44, 0x51, 0x9b, 0xff, 0x88, 0x21, 0x4b, 0xdb, 0x6f, 0xfb, 0x8b, 0x9c, 0xe8, 0x66, + 0x7f, 0x8b, 0xff, 0xe3, 0x7f, 0xf8, 0x2f, 0xc1, 0x6c, 0xfe, 0xa9, 0x9d, 0x97, 0xc2, 0x05, 0xd7, + 0x67, 0xb2, 0x2d, 0x6e, 0x3a, 0x51, 0x73, 0x7b, 0x71, 0x77, 0x40, 0xa2, 0x79, 0xdb, 0x40, 0x6a, + 0xfa, 0x01, 0xcd, 0xc2, 0x79, 0x21, 0xc6, 0xe9, 0x3a, 0xcd, 0x6d, 0xd7, 0xa3, 0xc1, 0x5e, 0xfc, + 0xd5, 0x5d, 0x1a, 0x39, 0x59, 0xb5, 0x16, 0x87, 0xd5, 0x0a, 0xfa, 0x5e, 0xe4, 0x76, 0xe9, 0x40, + 0x85, 0xbf, 0x72, 0x54, 0x85, 0xb0, 0xb9, 0x4d, 0xbb, 0xce, 0x40, 0xbd, 0xe7, 0x87, 0xd5, 0xeb, + 0x47, 0x6e, 0x67, 0xd1, 0xf5, 0xa2, 0x30, 0x0a, 0xd2, 0x95, 0xec, 0x1f, 0x16, 0xa0, 0x5c, 0x5b, + 0xad, 0x37, 0x22, 0x27, 0xea, 0x87, 0xe4, 0xe7, 0x2d, 0x98, 0xea, 0xf8, 0x4e, 0xab, 0xee, 0x74, + 0x1c, 0xaf, 0x49, 0x83, 0x39, 0xeb, 0xb2, 0xf5, 0x4c, 0xe5, 0xca, 0xea, 0xc2, 0x28, 0xfd, 0xb5, + 0x50, 0xbb, 0x17, 0x22, 0x0d, 0xfd, 0x7e, 0xd0, 0xa4, 0x48, 0xb7, 0xea, 0xe7, 0xbf, 0xb3, 0x5f, + 0x7d, 0xe4, 0x60, 0xbf, 0x3a, 0xb5, 0x6a, 0x70, 0xc2, 0x04, 0x5f, 0xf2, 0x4d, 0x0b, 0xce, 0x36, + 0x1d, 0xcf, 0x09, 0xf6, 0x36, 0x9c, 0xa0, 0x4d, 0xa3, 0x57, 0x03, 0xbf, 0xdf, 0x9b, 0x1b, 0x3b, + 0x05, 0x69, 0x1e, 0x97, 0xd2, 0x9c, 0x5d, 0x4a, 0xb3, 0xc3, 0x41, 0x09, 0xb8, 0x5c, 0x61, 0xe4, + 0x6c, 0x76, 0xa8, 0x29, 0x57, 0xe1, 0x34, 0xe5, 0x6a, 0xa4, 0xd9, 0xe1, 0xa0, 0x04, 0xe4, 0x59, + 0x98, 0x74, 0xbd, 0x76, 0x40, 0xc3, 0x70, 0x6e, 0xfc, 0xb2, 0xf5, 0x4c, 0xb9, 0x3e, 0x23, 0xab, + 0x4f, 0xae, 0x88, 0x62, 0x54, 0x70, 0xfb, 0xb7, 0x0b, 0x70, 0xb6, 0xb6, 0x5a, 0xdf, 0x08, 0x9c, + 0xad, 0x2d, 0xb7, 0x89, 0x7e, 0x3f, 0x72, 0xbd, 0xb6, 0x49, 0xc0, 0x3a, 0x9c, 0x00, 0x79, 0x11, + 0x2a, 0x21, 0x0d, 0x76, 0xdd, 0x26, 0x5d, 0xf7, 0x83, 0x88, 0x77, 0x4a, 0xb1, 0x7e, 0x4e, 0xa2, + 0x57, 0x1a, 0x31, 0x08, 0x4d, 0x3c, 0x56, 0x2d, 0xf0, 0xfd, 0x48, 0xc2, 0x79, 0x9b, 0x95, 0xe3, + 0x6a, 0x18, 0x83, 0xd0, 0xc4, 0x23, 0xcb, 0x30, 0xeb, 0x78, 0x9e, 0x1f, 0x39, 0x91, 0xeb, 0x7b, + 0xeb, 0x01, 0xdd, 0x72, 0xef, 0xcb, 0x4f, 0x9c, 0x93, 0x75, 0x67, 0x6b, 0x29, 0x38, 0x0e, 0xd4, + 0x20, 0xdf, 0xb0, 0x60, 0x36, 0x8c, 0xdc, 0xe6, 0x8e, 0xeb, 0xd1, 0x30, 0x5c, 0xf2, 0xbd, 0x2d, + 0xb7, 0x3d, 0x57, 0xe4, 0xdd, 0x76, 0x73, 0xb4, 0x6e, 0x6b, 0xa4, 0xa8, 0xd6, 0xcf, 0x33, 0x91, + 0xd2, 0xa5, 0x38, 0xc0, 0x9d, 0x7c, 0x18, 0xca, 0xb2, 0x45, 0x69, 0x38, 0x37, 0x71, 0xb9, 0xf0, + 0x4c, 0xb9, 0x7e, 0xe6, 0x60, 0xbf, 0x5a, 0x5e, 0x51, 0x85, 0x18, 0xc3, 0xed, 0x65, 0x98, 0xab, + 0x75, 0x37, 0x9d, 0x30, 0x74, 0x5a, 0x7e, 0x90, 0xea, 0xba, 0x67, 0xa0, 0xd4, 0x75, 0x7a, 0x3d, + 0xd7, 0x6b, 0xb3, 0xbe, 0x63, 0x74, 0xa6, 0x0e, 0xf6, 0xab, 0xa5, 0x35, 0x59, 0x86, 0x1a, 0x6a, + 0xff, 0xc7, 0x31, 0xa8, 0xd4, 0x3c, 0xa7, 0xb3, 0x17, 0xba, 0x21, 0xf6, 0x3d, 0xf2, 0x59, 0x28, + 0xb1, 0x55, 0xab, 0xe5, 0x44, 0x8e, 0x9c, 0xe9, 0x1f, 0x5d, 0x10, 0x8b, 0xc8, 0x82, 0xb9, 0x88, + 0xc4, 0x9f, 0xcf, 0xb0, 0x17, 0x76, 0x3f, 0xb6, 0x70, 0x6b, 0xf3, 0x2e, 0x6d, 0x46, 0x6b, 0x34, + 0x72, 0xea, 0x44, 0xf6, 0x02, 0xc4, 0x65, 0xa8, 0xa9, 0x12, 0x1f, 0xc6, 0xc3, 0x1e, 0x6d, 0xca, + 0x99, 0xbb, 0x36, 0xe2, 0x0c, 0x89, 0x45, 0x6f, 0xf4, 0x68, 0xb3, 0x3e, 0x25, 0x59, 0x8f, 0xb3, + 0x7f, 0xc8, 0x19, 0x91, 0x7b, 0x30, 0x11, 0xf2, 0xb5, 0x4c, 0x4e, 0xca, 0x5b, 0xf9, 0xb1, 0xe4, + 0x64, 0xeb, 0xd3, 0x92, 0xe9, 0x84, 0xf8, 0x8f, 0x92, 0x9d, 0xfd, 0x9f, 0x2c, 0x38, 0x67, 0x60, + 0xd7, 0x82, 0x76, 0xbf, 0x4b, 0xbd, 0x88, 0x5c, 0x86, 0x71, 0xcf, 0xe9, 0x52, 0x39, 0xab, 0xb4, + 0xc8, 0x37, 0x9d, 0x2e, 0x45, 0x0e, 0x21, 0x4f, 0x41, 0x71, 0xd7, 0xe9, 0xf4, 0x29, 0x6f, 0xa4, + 0x72, 0xfd, 0x8c, 0x44, 0x29, 0xbe, 0xc1, 0x0a, 0x51, 0xc0, 0xc8, 0xdb, 0x50, 0xe6, 0x3f, 0xae, + 0x05, 0x7e, 0x37, 0xa7, 0x4f, 0x93, 0x12, 0xbe, 0xa1, 0xc8, 0x8a, 0xe1, 0xa7, 0xff, 0x62, 0xcc, + 0xd0, 0xfe, 0x13, 0x0b, 0x66, 0x8c, 0x8f, 0x5b, 0x75, 0xc3, 0x88, 0x7c, 0x66, 0x60, 0xf0, 0x2c, + 0x1c, 0x6f, 0xf0, 0xb0, 0xda, 0x7c, 0xe8, 0xcc, 0xca, 0x2f, 0x2d, 0xa9, 0x12, 0x63, 0xe0, 0x78, + 0x50, 0x74, 0x23, 0xda, 0x0d, 0xe7, 0xc6, 0x2e, 0x17, 0x9e, 0xa9, 0x5c, 0x59, 0xc9, 0xad, 0x1b, + 0xe3, 0xf6, 0x5d, 0x61, 0xf4, 0x51, 0xb0, 0xb1, 0x7f, 0xa7, 0x90, 0xe8, 0xbe, 0x35, 0x25, 0xc7, + 0xbb, 0x16, 0x4c, 0x74, 0x9c, 0x4d, 0xda, 0x11, 0x73, 0xab, 0x72, 0xe5, 0xcd, 0xdc, 0x24, 0x51, + 0x3c, 0x16, 0x56, 0x39, 0xfd, 0xab, 0x5e, 0x14, 0xec, 0xc5, 0xc3, 0x4b, 0x14, 0xa2, 0x64, 0x4e, + 0xfe, 0x8e, 0x05, 0x95, 0x78, 0x55, 0x53, 0xcd, 0xb2, 0x99, 0xbf, 0x30, 0xf1, 0x62, 0x2a, 0x25, + 0xd2, 0x4b, 0xb4, 0x01, 0x41, 0x53, 0x96, 0xf9, 0x8f, 0x43, 0xc5, 0xf8, 0x04, 0x32, 0x0b, 0x85, + 0x1d, 0xba, 0x27, 0x06, 0x3c, 0xb2, 0x9f, 0xe4, 0x7c, 0x62, 0x84, 0xcb, 0x21, 0xfd, 0x89, 0xb1, + 0x97, 0xac, 0xf9, 0x57, 0x60, 0x36, 0xcd, 0xf0, 0x24, 0xf5, 0xed, 0x7f, 0x5a, 0x4c, 0x0c, 0x4c, + 0xb6, 0x10, 0x10, 0x1f, 0x26, 0xbb, 0x34, 0x0a, 0xdc, 0xa6, 0xea, 0xb2, 0xe5, 0xd1, 0x5a, 0x69, + 0x8d, 0x13, 0x8b, 0x37, 0x44, 0xf1, 0x3f, 0x44, 0xc5, 0x85, 0x6c, 0xc3, 0xb8, 0x13, 0xb4, 0x55, + 0x9f, 0x5c, 0xcb, 0x67, 0x5a, 0xc6, 0x4b, 0x45, 0x2d, 0x68, 0x87, 0xc8, 0x39, 0x90, 0x45, 0x28, + 0x47, 0x34, 0xe8, 0xba, 0x9e, 0x13, 0x89, 0x1d, 0xb4, 0x54, 0x3f, 0x2b, 0xd1, 0xca, 0x1b, 0x0a, + 0x80, 0x31, 0x0e, 0xe9, 0xc0, 0x44, 0x2b, 0xd8, 0xc3, 0xbe, 0x37, 0x37, 0x9e, 0x47, 0x53, 0x2c, + 0x73, 0x5a, 0xf1, 0x20, 0x15, 0xff, 0x51, 0xf2, 0x20, 0xbf, 0x6e, 0xc1, 0xf9, 0x2e, 0x75, 0xc2, + 0x7e, 0x40, 0xd9, 0x27, 0x20, 0x8d, 0xa8, 0xc7, 0x3a, 0x76, 0xae, 0xc8, 0x99, 0xe3, 0xa8, 0xfd, + 0x30, 0x48, 0xb9, 0xfe, 0xa4, 0x14, 0xe5, 0x7c, 0x16, 0x14, 0x33, 0xa5, 0x21, 0x6f, 0x43, 0x25, + 0x8a, 0x3a, 0x8d, 0x88, 0xe9, 0xc1, 0xed, 0xbd, 0xb9, 0x09, 0xbe, 0x78, 0x8d, 0xb8, 0xc2, 0x6c, + 0x6c, 0xac, 0x2a, 0x82, 0xf5, 0x19, 0x36, 0x5b, 0x8c, 0x02, 0x34, 0xd9, 0xd9, 0xff, 0xa2, 0x08, + 0x67, 0x07, 0xb6, 0x15, 0xf2, 0x02, 0x14, 0x7b, 0xdb, 0x4e, 0xa8, 0xf6, 0x89, 0x4b, 0x6a, 0x91, + 0x5a, 0x67, 0x85, 0xef, 0xed, 0x57, 0xcf, 0xa8, 0x2a, 0xbc, 0x00, 0x05, 0x32, 0xd3, 0xda, 0xba, + 0x34, 0x0c, 0x9d, 0xb6, 0xda, 0x3c, 0x8c, 0x41, 0xca, 0x8b, 0x51, 0xc1, 0xc9, 0x2f, 0x58, 0x70, + 0x46, 0x0c, 0x58, 0xa4, 0x61, 0xbf, 0x13, 0xb1, 0x0d, 0x92, 0x75, 0xca, 0x8d, 0x3c, 0x26, 0x87, + 0x20, 0x59, 0xbf, 0x20, 0xb9, 0x9f, 0x31, 0x4b, 0x43, 0x4c, 0xf2, 0x25, 0x77, 0xa0, 0x1c, 0x46, + 0x4e, 0x10, 0xd1, 0x56, 0x2d, 0xe2, 0xaa, 0x5c, 0xe5, 0xca, 0x4f, 0x1e, 0x6f, 0xe7, 0xd8, 0x70, + 0xbb, 0x54, 0xec, 0x52, 0x0d, 0x45, 0x00, 0x63, 0x5a, 0xe4, 0x6d, 0x80, 0xa0, 0xef, 0x35, 0xfa, + 0xdd, 0xae, 0x13, 0xec, 0x49, 0xed, 0xee, 0xfa, 0x68, 0x9f, 0x87, 0x9a, 0x5e, 0xac, 0xe8, 0xc4, + 0x65, 0x68, 0xf0, 0x23, 0x5f, 0xb4, 0xe0, 0x8c, 0x98, 0x07, 0x4a, 0x82, 0x89, 0x9c, 0x25, 0x38, + 0xcb, 0x9a, 0x76, 0xd9, 0x64, 0x81, 0x49, 0x8e, 0xe4, 0x4d, 0xa8, 0x34, 0xfd, 0x6e, 0xaf, 0x43, + 0x45, 0xe3, 0x4e, 0x9e, 0xb8, 0x71, 0xf9, 0xd0, 0x5d, 0x8a, 0x49, 0xa0, 0x49, 0xcf, 0xfe, 0xf7, + 0x49, 0x1d, 0x47, 0x0d, 0x69, 0xf2, 0x69, 0x78, 0x3c, 0xec, 0x37, 0x9b, 0x34, 0x0c, 0xb7, 0xfa, + 0x1d, 0xec, 0x7b, 0xd7, 0xdd, 0x30, 0xf2, 0x83, 0xbd, 0x55, 0xb7, 0xeb, 0x46, 0x7c, 0x40, 0x17, + 0xeb, 0x17, 0x0f, 0xf6, 0xab, 0x8f, 0x37, 0x86, 0x21, 0xe1, 0xf0, 0xfa, 0xc4, 0x81, 0x27, 0xfa, + 0xde, 0x70, 0xf2, 0xe2, 0xf8, 0x51, 0x3d, 0xd8, 0xaf, 0x3e, 0x71, 0x7b, 0x38, 0x1a, 0x1e, 0x46, + 0xc3, 0xfe, 0x33, 0x8b, 0x6d, 0x43, 0xe2, 0xbb, 0x36, 0x68, 0xb7, 0xd7, 0x61, 0x4b, 0xe7, 0xe9, + 0x2b, 0xc7, 0x51, 0x42, 0x39, 0xc6, 0x7c, 0xf6, 0x72, 0x25, 0xff, 0x30, 0x0d, 0xd9, 0xfe, 0xaf, + 0x16, 0x9c, 0x4f, 0x23, 0x3f, 0x04, 0x85, 0x2e, 0x4c, 0x2a, 0x74, 0x37, 0xf3, 0xfd, 0xda, 0x21, + 0x5a, 0xdd, 0x2f, 0x1a, 0x03, 0x56, 0xa1, 0x22, 0xdd, 0x22, 0x2f, 0xc1, 0x54, 0x24, 0xff, 0xde, + 0x8c, 0x95, 0x73, 0x6d, 0x98, 0xd8, 0x30, 0x60, 0x98, 0xc0, 0x64, 0x35, 0x9b, 0x9d, 0x7e, 0x18, + 0xd1, 0xa0, 0xd1, 0xf4, 0x7b, 0x62, 0xd9, 0x2d, 0xc5, 0x35, 0x97, 0x0c, 0x18, 0x26, 0x30, 0xed, + 0xbf, 0x59, 0x1c, 0x6c, 0xf7, 0xff, 0xd7, 0xf5, 0x95, 0x58, 0xfd, 0x28, 0xbc, 0x9f, 0xea, 0xc7, + 0xf8, 0x07, 0x4a, 0xfd, 0xf8, 0x92, 0xc5, 0xb4, 0x38, 0x31, 0x00, 0x42, 0xa9, 0x1a, 0xbd, 0x9e, + 0xef, 0x74, 0x40, 0xba, 0x65, 0x2a, 0x86, 0x92, 0x17, 0xc6, 0x6c, 0xed, 0x7f, 0x34, 0x0e, 0x53, + 0x35, 0x2f, 0x72, 0x6b, 0x5b, 0x5b, 0xae, 0xe7, 0x46, 0x7b, 0xe4, 0x6b, 0x63, 0xb0, 0xd8, 0x0b, + 0xe8, 0x16, 0x0d, 0x02, 0xda, 0x5a, 0xee, 0x07, 0xae, 0xd7, 0x6e, 0x34, 0xb7, 0x69, 0xab, 0xdf, + 0x71, 0xbd, 0xf6, 0x4a, 0xdb, 0xf3, 0x75, 0xf1, 0xd5, 0xfb, 0xb4, 0xd9, 0xe7, 0xed, 0x2a, 0x56, + 0x89, 0xee, 0x68, 0xb2, 0xaf, 0x9f, 0x8c, 0x69, 0xfd, 0xf9, 0x83, 0xfd, 0xea, 0xe2, 0x09, 0x2b, + 0xe1, 0x49, 0x3f, 0x8d, 0x7c, 0x65, 0x0c, 0x16, 0x02, 0xfa, 0xb9, 0xbe, 0x7b, 0xfc, 0xd6, 0x10, + 0xcb, 0x78, 0x67, 0xc4, 0xed, 0xfe, 0x44, 0x3c, 0xeb, 0x57, 0x0e, 0xf6, 0xab, 0x27, 0xac, 0x83, + 0x27, 0xfc, 0x2e, 0x7b, 0x1d, 0x2a, 0xb5, 0x9e, 0x1b, 0xba, 0xf7, 0xd1, 0xef, 0x47, 0xf4, 0x18, + 0x06, 0x8d, 0x2a, 0x14, 0x83, 0x7e, 0x87, 0x8a, 0x05, 0xa6, 0x5c, 0x2f, 0xb3, 0x65, 0x19, 0x59, + 0x01, 0x8a, 0x72, 0xfb, 0x4b, 0x6c, 0x0b, 0xe2, 0x24, 0x53, 0xa6, 0xac, 0xbb, 0x50, 0x0c, 0x18, + 0x13, 0x39, 0xb2, 0x46, 0x3d, 0xf5, 0xc7, 0x52, 0x4b, 0x21, 0xd8, 0x4f, 0x14, 0x2c, 0xec, 0x6f, + 0x8f, 0xc1, 0x85, 0x5a, 0xaf, 0xb7, 0x46, 0xc3, 0xed, 0x94, 0x14, 0xbf, 0x64, 0xc1, 0xf4, 0xae, + 0x1b, 0x44, 0x7d, 0xa7, 0xa3, 0xac, 0x95, 0x42, 0x9e, 0xc6, 0xa8, 0xf2, 0x70, 0x6e, 0x6f, 0x24, + 0x48, 0xd7, 0xc9, 0xc1, 0x7e, 0x75, 0x3a, 0x59, 0x86, 0x29, 0xf6, 0xe4, 0x6f, 0x5b, 0x30, 0x2b, + 0x8b, 0x6e, 0xfa, 0x2d, 0x6a, 0x5a, 0xc3, 0x6f, 0xe7, 0x29, 0x93, 0x26, 0x2e, 0xac, 0x98, 0xe9, + 0x52, 0x1c, 0x10, 0xc2, 0xfe, 0xef, 0x63, 0xf0, 0xd8, 0x10, 0x1a, 0xe4, 0x37, 0x2c, 0x38, 0x2f, + 0x4c, 0xe8, 0x06, 0x08, 0xe9, 0x96, 0x6c, 0xcd, 0x9f, 0xce, 0x5b, 0x72, 0x64, 0x53, 0x9c, 0x7a, + 0x4d, 0x5a, 0x9f, 0x63, 0x4b, 0xf2, 0x52, 0x06, 0x6b, 0xcc, 0x14, 0x88, 0x4b, 0x2a, 0x8c, 0xea, + 0x29, 0x49, 0xc7, 0x1e, 0x8a, 0xa4, 0x8d, 0x0c, 0xd6, 0x98, 0x29, 0x90, 0xfd, 0xd7, 0xe1, 0x89, + 0x43, 0xc8, 0x1d, 0x3d, 0x39, 0xed, 0x37, 0xf5, 0xa8, 0x4f, 0x8e, 0xb9, 0x63, 0xcc, 0x6b, 0x1b, + 0x26, 0xf8, 0xd4, 0x51, 0x13, 0x1b, 0xd8, 0x1e, 0xcc, 0xe7, 0x54, 0x88, 0x12, 0x62, 0x7f, 0xdb, + 0x82, 0xd2, 0x09, 0x6c, 0x9f, 0xd5, 0xa4, 0xed, 0xb3, 0x3c, 0x60, 0xf7, 0x8c, 0x06, 0xed, 0x9e, + 0xaf, 0x8e, 0xd6, 0x1b, 0xc7, 0xb1, 0x77, 0xfe, 0xd0, 0x82, 0xb3, 0x03, 0xf6, 0x51, 0xb2, 0x0d, + 0xe7, 0x7b, 0x7e, 0x4b, 0x6d, 0xa7, 0xd7, 0x9d, 0x70, 0x9b, 0xc3, 0xe4, 0xe7, 0xbd, 0xc0, 0x7a, + 0x72, 0x3d, 0x03, 0xfe, 0xde, 0x7e, 0x75, 0x4e, 0x13, 0x49, 0x21, 0x60, 0x26, 0x45, 0xd2, 0x83, + 0xd2, 0x96, 0x4b, 0x3b, 0xad, 0x78, 0x08, 0x8e, 0xa8, 0xa5, 0x5d, 0x93, 0xd4, 0xc4, 0xd5, 0x80, + 0xfa, 0x87, 0x9a, 0x8b, 0xfd, 0x23, 0x0b, 0xa6, 0x6b, 0xfd, 0x68, 0x9b, 0xe9, 0x28, 0x4d, 0x6e, + 0x8d, 0x23, 0x1e, 0x14, 0x43, 0xb7, 0xbd, 0xfb, 0x42, 0x3e, 0x8b, 0x71, 0x83, 0x91, 0x92, 0x57, + 0x24, 0x5a, 0x59, 0xe7, 0x85, 0x28, 0xd8, 0x90, 0x00, 0x26, 0x7c, 0xa7, 0x1f, 0x6d, 0x5f, 0x91, + 0x9f, 0x3c, 0xa2, 0x65, 0xe2, 0x16, 0xfb, 0x9c, 0x2b, 0x92, 0xa3, 0x56, 0x19, 0x45, 0x29, 0x4a, + 0x4e, 0xf6, 0x17, 0x60, 0x3a, 0x79, 0xef, 0x76, 0x8c, 0x31, 0x7b, 0x11, 0x0a, 0x4e, 0xe0, 0xc9, + 0x11, 0x5b, 0x91, 0x08, 0x85, 0x1a, 0xde, 0x44, 0x56, 0x4e, 0x9e, 0x83, 0xd2, 0x56, 0xbf, 0xd3, + 0xe1, 0xe7, 0x0a, 0x71, 0xc9, 0xa5, 0x8f, 0x45, 0xd7, 0x64, 0x39, 0x6a, 0x0c, 0xfb, 0x7f, 0x8f, + 0xc3, 0x4c, 0xbd, 0xd3, 0xa7, 0xaf, 0x06, 0x94, 0x2a, 0x5b, 0x50, 0x0d, 0x66, 0x7a, 0x01, 0xdd, + 0x75, 0xe9, 0xbd, 0x06, 0xed, 0xd0, 0x66, 0xe4, 0x07, 0x52, 0x9a, 0xc7, 0x24, 0xa1, 0x99, 0xf5, + 0x24, 0x18, 0xd3, 0xf8, 0xe4, 0x15, 0x98, 0x76, 0x9a, 0x91, 0xbb, 0x4b, 0x35, 0x05, 0x21, 0xee, + 0xa3, 0x92, 0xc2, 0x74, 0x2d, 0x01, 0xc5, 0x14, 0x36, 0xf9, 0x0c, 0xcc, 0x85, 0x4d, 0xa7, 0x43, + 0x6f, 0xf7, 0x24, 0xab, 0xa5, 0x6d, 0xda, 0xdc, 0x59, 0xf7, 0x5d, 0x2f, 0x92, 0x76, 0xc7, 0xcb, + 0x92, 0xd2, 0x5c, 0x63, 0x08, 0x1e, 0x0e, 0xa5, 0x40, 0xfe, 0xa5, 0x05, 0x17, 0x7b, 0x01, 0x5d, + 0x0f, 0xfc, 0xae, 0xcf, 0x86, 0xda, 0x80, 0x39, 0x4c, 0x9a, 0x85, 0xde, 0x18, 0x51, 0x97, 0x12, + 0x25, 0x83, 0x77, 0x38, 0x1f, 0x3a, 0xd8, 0xaf, 0x5e, 0x5c, 0x3f, 0x4c, 0x00, 0x3c, 0x5c, 0x3e, + 0xf2, 0xaf, 0x2d, 0xb8, 0xd4, 0xf3, 0xc3, 0xe8, 0x90, 0x4f, 0x28, 0x9e, 0xea, 0x27, 0xd8, 0x07, + 0xfb, 0xd5, 0x4b, 0xeb, 0x87, 0x4a, 0x80, 0x47, 0x48, 0x68, 0x1f, 0x54, 0xe0, 0xac, 0x31, 0xf6, + 0xa4, 0x31, 0xe7, 0x65, 0x38, 0xa3, 0x06, 0x43, 0xac, 0xfb, 0x94, 0x63, 0xdb, 0x5e, 0xcd, 0x04, 0x62, 0x12, 0x97, 0x8d, 0x3b, 0x3d, 0x14, 0x45, 0xed, 0xd4, 0xb8, 0x5b, 0x4f, 0x40, 0x31, 0x85, - 0x4d, 0x56, 0xe0, 0x82, 0x2c, 0x41, 0xda, 0xeb, 0xb8, 0x4d, 0x67, 0xc9, 0xef, 0xcb, 0x21, 0x57, - 0xac, 0x3f, 0x7a, 0xb0, 0x5f, 0xbd, 0xb0, 0x3e, 0x08, 0xc6, 0xac, 0x3a, 0x64, 0x15, 0x2e, 0x3a, - 0xfd, 0xc8, 0xd7, 0xdf, 0x7f, 0xcd, 0x63, 0xdb, 0x69, 0x8b, 0x0f, 0xad, 0x92, 0xd8, 0x77, 0x6b, + 0x4d, 0x56, 0xe0, 0x9c, 0x2c, 0x41, 0xda, 0xeb, 0xb8, 0x4d, 0x67, 0xc9, 0xef, 0xcb, 0x21, 0x57, + 0xac, 0x3f, 0x76, 0xb0, 0x5f, 0x3d, 0xb7, 0x3e, 0x08, 0xc6, 0xac, 0x3a, 0x64, 0x15, 0xce, 0x3b, + 0xfd, 0xc8, 0xd7, 0xdf, 0x7f, 0xd5, 0x63, 0xdb, 0x69, 0x8b, 0x0f, 0xad, 0x92, 0xd8, 0x77, 0x6b, 0x19, 0x70, 0xcc, 0xac, 0x45, 0xd6, 0x53, 0xd4, 0x1a, 0xb4, 0xe9, 0x7b, 0x2d, 0xd1, 0xcb, 0xc5, - 0xf8, 0x18, 0x58, 0xcb, 0xc0, 0xc1, 0xcc, 0x9a, 0xa4, 0x03, 0xd3, 0x5d, 0xe7, 0xc1, 0x1d, 0xcf, + 0xf8, 0x18, 0x58, 0xcb, 0xc0, 0xc1, 0xcc, 0x9a, 0xa4, 0x03, 0xd3, 0x5d, 0xe7, 0xfe, 0x6d, 0xcf, 0xd9, 0x75, 0xdc, 0x0e, 0x63, 0x22, 0xed, 0x85, 0xc3, 0xad, 0x4c, 0xfd, 0xc8, 0xed, 0x2c, 0x08, - 0x3f, 0x8e, 0x85, 0x15, 0x2f, 0xba, 0x1d, 0x34, 0x22, 0xa6, 0xa9, 0x0b, 0x0d, 0x72, 0x2d, 0x41, - 0x0b, 0x53, 0xb4, 0xc9, 0x6d, 0xb8, 0xc4, 0xa7, 0xe3, 0xb2, 0x7f, 0xdf, 0x5b, 0xa6, 0x1d, 0x67, - 0x4f, 0x7d, 0xc0, 0x24, 0xff, 0x80, 0xc7, 0x0e, 0xf6, 0xab, 0x97, 0x1a, 0x59, 0x08, 0x98, 0x5d, - 0x8f, 0x38, 0xf0, 0x78, 0x12, 0x80, 0x74, 0xd7, 0x0d, 0x5d, 0xdf, 0x13, 0x66, 0xb9, 0x52, 0x6c, - 0x96, 0x6b, 0x0c, 0x47, 0xc3, 0xc3, 0x68, 0x90, 0xbf, 0x6f, 0xc1, 0xc5, 0xac, 0x69, 0x38, 0x57, + 0x3f, 0x8e, 0x85, 0x15, 0x2f, 0xba, 0x15, 0x34, 0x22, 0xa6, 0xa9, 0x0b, 0x0d, 0x72, 0x2d, 0x41, + 0x0b, 0x53, 0xb4, 0xc9, 0x2d, 0xb8, 0xc0, 0xa7, 0xe3, 0xb2, 0x7f, 0xcf, 0x5b, 0xa6, 0x1d, 0x67, + 0x4f, 0x7d, 0xc0, 0x24, 0xff, 0x80, 0xc7, 0x0f, 0xf6, 0xab, 0x17, 0x1a, 0x59, 0x08, 0x98, 0x5d, + 0x8f, 0x38, 0xf0, 0x44, 0x12, 0x80, 0x74, 0xd7, 0x0d, 0x5d, 0xdf, 0x13, 0x66, 0xb9, 0x52, 0x6c, + 0x96, 0x6b, 0x0c, 0x47, 0xc3, 0xc3, 0x68, 0x90, 0xbf, 0x6b, 0xc1, 0xf9, 0xac, 0x69, 0x38, 0x57, 0xce, 0xe3, 0x36, 0x39, 0x35, 0xb5, 0xc4, 0x88, 0xc8, 0x5c, 0x14, 0x32, 0x85, 0x20, 0xef, 0x58, 0x30, 0xe5, 0x18, 0x27, 0xe8, 0x39, 0xc8, 0x63, 0xd7, 0x32, 0xcf, 0xe4, 0xf5, 0xd9, 0x83, 0xfd, - 0x6a, 0xe2, 0x94, 0x8e, 0x09, 0x8e, 0xe4, 0x1f, 0x5a, 0x70, 0x29, 0x73, 0x8e, 0xcf, 0x55, 0xce, - 0xa2, 0x85, 0xf8, 0x20, 0xc9, 0x5e, 0x73, 0xb2, 0xc5, 0x20, 0xdf, 0xb4, 0xf4, 0x56, 0xa6, 0x2e, - 0x18, 0xe7, 0xa6, 0xb8, 0x68, 0x23, 0x1a, 0x3c, 0x0c, 0x35, 0x4a, 0x11, 0xae, 0x5f, 0x30, 0x76, - 0x46, 0x55, 0x88, 0x69, 0xf6, 0xe4, 0x1b, 0x96, 0xda, 0x1a, 0xb5, 0x44, 0xe7, 0xce, 0x4a, 0x22, - 0x12, 0xef, 0xb4, 0x5a, 0xa0, 0x14, 0x73, 0xf2, 0x53, 0x30, 0xef, 0x6c, 0xfa, 0x41, 0x94, 0x39, - 0xf9, 0xe6, 0xa6, 0xf9, 0x34, 0xba, 0x7c, 0xb0, 0x5f, 0x9d, 0xaf, 0x0d, 0xc5, 0xc2, 0x43, 0x28, - 0xd8, 0xbf, 0x51, 0x84, 0x29, 0x71, 0x12, 0x92, 0x5b, 0xd7, 0x6f, 0x5b, 0xf0, 0x44, 0xb3, 0x1f, - 0x04, 0xd4, 0x8b, 0x1a, 0x11, 0xed, 0x0d, 0x6e, 0x5c, 0xd6, 0x99, 0x6e, 0x5c, 0x57, 0x0e, 0xf6, - 0xab, 0x4f, 0x2c, 0x1d, 0xc2, 0x1f, 0x0f, 0x95, 0x8e, 0xfc, 0x7b, 0x0b, 0x6c, 0x89, 0x50, 0x77, - 0x9a, 0x3b, 0xed, 0xc0, 0xef, 0x7b, 0xad, 0xc1, 0x8f, 0x18, 0x3b, 0xd3, 0x8f, 0x78, 0xfa, 0x60, - 0xbf, 0x6a, 0x2f, 0x1d, 0x29, 0x05, 0x1e, 0x43, 0x52, 0xf2, 0x2a, 0x9c, 0x97, 0x58, 0xd7, 0x1e, - 0xf4, 0x68, 0xe0, 0xb2, 0x33, 0x87, 0x54, 0x1c, 0x63, 0xdf, 0xb4, 0x34, 0x02, 0x0e, 0xd6, 0x21, - 0x21, 0x4c, 0xde, 0xa7, 0x6e, 0x7b, 0x3b, 0x52, 0xea, 0xd3, 0x88, 0x0e, 0x69, 0xd2, 0x2a, 0x72, - 0x57, 0xd0, 0xac, 0x57, 0x0e, 0xf6, 0xab, 0x93, 0xf2, 0x0f, 0x2a, 0x4e, 0xe4, 0x16, 0x4c, 0x8b, + 0x6a, 0xe2, 0x94, 0x8e, 0x09, 0x8e, 0xe4, 0xef, 0x5b, 0x70, 0x21, 0x73, 0x8e, 0xcf, 0x55, 0x4e, + 0xa3, 0x85, 0xf8, 0x20, 0xc9, 0x5e, 0x73, 0xb2, 0xc5, 0x20, 0xdf, 0xb0, 0xf4, 0x56, 0xa6, 0x2e, + 0x18, 0xe7, 0xa6, 0xb8, 0x68, 0x23, 0x1a, 0x3c, 0x0c, 0x35, 0x4a, 0x11, 0xae, 0x9f, 0x33, 0x76, + 0x46, 0x55, 0x88, 0x69, 0xf6, 0xe4, 0xeb, 0x96, 0xda, 0x1a, 0xb5, 0x44, 0x67, 0x4e, 0x4b, 0x22, + 0x12, 0xef, 0xb4, 0x5a, 0xa0, 0x14, 0x73, 0xf2, 0x33, 0x30, 0xef, 0x6c, 0xfa, 0x41, 0x94, 0x39, + 0xf9, 0xe6, 0xa6, 0xf9, 0x34, 0xba, 0x74, 0xb0, 0x5f, 0x9d, 0xaf, 0x0d, 0xc5, 0xc2, 0x43, 0x28, + 0xd8, 0xbf, 0x55, 0x84, 0x29, 0x71, 0x12, 0x92, 0x5b, 0xd7, 0xef, 0x5a, 0xf0, 0x64, 0xb3, 0x1f, + 0x04, 0xd4, 0x8b, 0x1a, 0x11, 0xed, 0x0d, 0x6e, 0x5c, 0xd6, 0xa9, 0x6e, 0x5c, 0x97, 0x0f, 0xf6, + 0xab, 0x4f, 0x2e, 0x1d, 0xc2, 0x1f, 0x0f, 0x95, 0x8e, 0xfc, 0x3b, 0x0b, 0x6c, 0x89, 0x50, 0x77, + 0x9a, 0x3b, 0xed, 0xc0, 0xef, 0x7b, 0xad, 0xc1, 0x8f, 0x18, 0x3b, 0xd5, 0x8f, 0x78, 0xfa, 0x60, + 0xbf, 0x6a, 0x2f, 0x1d, 0x29, 0x05, 0x1e, 0x43, 0x52, 0xf2, 0x2a, 0x9c, 0x95, 0x58, 0x57, 0xef, + 0xf7, 0x68, 0xe0, 0xb2, 0x33, 0x87, 0x54, 0x1c, 0x63, 0xdf, 0xb4, 0x34, 0x02, 0x0e, 0xd6, 0x21, + 0x21, 0x4c, 0xde, 0xa3, 0x6e, 0x7b, 0x3b, 0x52, 0xea, 0xd3, 0x88, 0x0e, 0x69, 0xd2, 0x2a, 0x72, + 0x47, 0xd0, 0xac, 0x57, 0x0e, 0xf6, 0xab, 0x93, 0xf2, 0x0f, 0x2a, 0x4e, 0xe4, 0x26, 0x4c, 0x8b, 0x73, 0xea, 0xba, 0xeb, 0xb5, 0xd7, 0x7d, 0x4f, 0x78, 0x55, 0x95, 0xeb, 0x4f, 0xab, 0x0d, 0xbf, 0x91, 0x80, 0xbe, 0xb7, 0x5f, 0x9d, 0x52, 0xbf, 0x37, 0xf6, 0x7a, 0x14, 0x53, 0xb5, 0xed, 0xdf, - 0x9d, 0x00, 0x50, 0xc3, 0x95, 0xf6, 0xc8, 0x47, 0xa0, 0x1c, 0xd2, 0x48, 0x70, 0x95, 0x37, 0x49, + 0x9f, 0x00, 0x50, 0xc3, 0x95, 0xf6, 0xc8, 0x87, 0xa1, 0x1c, 0xd2, 0x48, 0x70, 0x95, 0x37, 0x49, 0xe2, 0xfe, 0x4f, 0x15, 0x62, 0x0c, 0x27, 0x3b, 0x50, 0xec, 0x39, 0xfd, 0x90, 0xe6, 0x73, 0x7e, - 0x90, 0x9d, 0xbf, 0xce, 0x28, 0x8a, 0x83, 0x29, 0xff, 0x89, 0x82, 0x07, 0xf9, 0x8a, 0x05, 0x40, + 0x90, 0x9d, 0xbf, 0xce, 0x28, 0x8a, 0x83, 0x29, 0xff, 0x89, 0x82, 0x07, 0xf9, 0xb2, 0x05, 0x40, 0x93, 0x1d, 0x36, 0xb2, 0x81, 0x48, 0xb2, 0x8c, 0xfb, 0x94, 0xb5, 0x41, 0x7d, 0xfa, 0x60, 0xbf, - 0x0a, 0x46, 0xd7, 0x1b, 0x6c, 0xc9, 0x7d, 0x28, 0x39, 0x6a, 0xcd, 0x1f, 0x3f, 0x8b, 0x35, 0x9f, - 0x9f, 0x17, 0xf5, 0xa0, 0xd5, 0xcc, 0xc8, 0x57, 0x2d, 0x98, 0x0e, 0x69, 0x24, 0xbb, 0x8a, 0xad, + 0x0a, 0x46, 0xd7, 0x1b, 0x6c, 0xc9, 0x3d, 0x28, 0x39, 0x6a, 0xcd, 0x1f, 0x3f, 0x8d, 0x35, 0x9f, + 0x9f, 0x17, 0xf5, 0xa0, 0xd5, 0xcc, 0xc8, 0x57, 0x2c, 0x98, 0x0e, 0x69, 0x24, 0xbb, 0x8a, 0xad, 0x3c, 0x52, 0xe1, 0x1d, 0x71, 0xd0, 0x35, 0x12, 0x34, 0xc5, 0x0a, 0x9a, 0x2c, 0xc3, 0x14, 0x5f, - 0x25, 0xca, 0x0d, 0xea, 0xb4, 0x68, 0xc0, 0xcd, 0x11, 0x52, 0x93, 0x1a, 0x5d, 0x14, 0x83, 0xa6, + 0x25, 0xca, 0x75, 0xea, 0xb4, 0x68, 0xc0, 0xcd, 0x11, 0x52, 0x93, 0x1a, 0x5d, 0x14, 0x83, 0xa6, 0x16, 0xc5, 0x28, 0xc3, 0x14, 0x5f, 0x25, 0xca, 0x9a, 0x1b, 0x04, 0xbe, 0x14, 0xa5, 0x94, 0x93, - 0x28, 0x06, 0x4d, 0x2d, 0x8a, 0x51, 0x86, 0x29, 0xbe, 0xf6, 0xb7, 0xcf, 0xc1, 0xb4, 0x9a, 0x48, + 0x28, 0x06, 0x4d, 0x2d, 0x8a, 0x51, 0x86, 0x29, 0xbe, 0xf6, 0xb7, 0xce, 0xc0, 0xb4, 0x9a, 0x48, 0xb1, 0x66, 0x2f, 0xac, 0x5f, 0x43, 0x34, 0xfb, 0x25, 0x13, 0x88, 0x49, 0x5c, 0x56, 0x59, 0x4c, 0xd5, 0xa4, 0x62, 0xaf, 0x2b, 0x37, 0x4c, 0x20, 0x26, 0x71, 0x49, 0x17, 0x8a, 0x61, 0x44, 0x7b, 0xca, 0xe7, 0x60, 0xc4, 0x2b, 0xf1, 0x78, 0x7d, 0x30, 0x2c, 0x09, 0x8c, 0x3c, 0x0a, 0x2e, 0xdc, 0x80, 0x1b, 0x25, 0x6c, 0xba, 0x72, 0x72, 0xe4, 0x33, 0x3f, 0x93, 0xe6, 0x62, 0xd1, 0x1b, 0xc9, - 0x32, 0x4c, 0xb1, 0xcf, 0x50, 0xf6, 0x8b, 0x67, 0xa8, 0xec, 0x7f, 0x1a, 0x4a, 0x5d, 0xe7, 0x41, - 0xa3, 0x1f, 0xb4, 0x4f, 0x7f, 0xa8, 0x90, 0x3e, 0xa4, 0x82, 0x0a, 0x6a, 0x7a, 0xe4, 0x4b, 0x96, - 0xb1, 0xe4, 0x08, 0x07, 0x83, 0xbb, 0xf9, 0x2e, 0x39, 0x7a, 0xaf, 0x1c, 0xba, 0xf8, 0x0c, 0xa8, - 0xde, 0xa5, 0x87, 0xae, 0x7a, 0x33, 0x35, 0x52, 0x4c, 0x10, 0xad, 0x46, 0x96, 0xcf, 0x54, 0x8d, - 0x5c, 0x4a, 0x30, 0xc3, 0x14, 0x73, 0x2e, 0x8f, 0x98, 0x73, 0x5a, 0x1e, 0x38, 0x53, 0x79, 0x1a, - 0x09, 0x66, 0x98, 0x62, 0x3e, 0xfc, 0xbc, 0x59, 0x39, 0x9b, 0xf3, 0xe6, 0x54, 0x0e, 0xe7, 0xcd, - 0xc3, 0x55, 0xf1, 0x73, 0xa3, 0xaa, 0xe2, 0xe4, 0x26, 0x90, 0xd6, 0x9e, 0xe7, 0x74, 0xdd, 0xa6, - 0x5c, 0x2c, 0xf9, 0xb6, 0x39, 0xcd, 0xed, 0x11, 0xf3, 0x72, 0x21, 0x23, 0xcb, 0x03, 0x18, 0x98, - 0x51, 0x8b, 0x44, 0x50, 0xea, 0x29, 0x8d, 0x6b, 0x26, 0x8f, 0xd1, 0xaf, 0x34, 0x30, 0xe1, 0x37, - 0xc2, 0x26, 0x9e, 0x2a, 0x41, 0xcd, 0x89, 0xac, 0xc2, 0xc5, 0xae, 0xeb, 0xad, 0xfb, 0xad, 0x70, - 0x9d, 0x06, 0xd2, 0xda, 0xd2, 0xa0, 0xd1, 0xdc, 0x2c, 0x6f, 0x1b, 0x7e, 0x82, 0x5e, 0xcb, 0x80, - 0x63, 0x66, 0x2d, 0xfb, 0x7f, 0x5b, 0x30, 0xbb, 0xd4, 0xf1, 0xfb, 0xad, 0xbb, 0x4e, 0xd4, 0xdc, - 0x16, 0x6e, 0x0a, 0xe4, 0x15, 0x28, 0xb9, 0x5e, 0x44, 0x83, 0x5d, 0xa7, 0x23, 0xf7, 0x27, 0x5b, - 0x99, 0x4f, 0x57, 0x64, 0xf9, 0x7b, 0xfb, 0xd5, 0xe9, 0xe5, 0x7e, 0xc0, 0xad, 0xd4, 0x62, 0xb5, - 0x42, 0x5d, 0x87, 0x7c, 0xdb, 0x82, 0xf3, 0xc2, 0xd1, 0x61, 0xd9, 0x89, 0x9c, 0xd7, 0xfb, 0x34, - 0x70, 0xa9, 0x72, 0x75, 0x18, 0x71, 0xa1, 0x4a, 0xcb, 0xaa, 0x18, 0xec, 0xc5, 0x8a, 0xfa, 0x5a, - 0x9a, 0x33, 0x0e, 0x0a, 0x63, 0xff, 0x52, 0x01, 0x1e, 0x1b, 0x4a, 0x8b, 0xcc, 0xc3, 0x98, 0xdb, - 0x92, 0x9f, 0x0e, 0x92, 0xee, 0xd8, 0x4a, 0x0b, 0xc7, 0xdc, 0x16, 0x59, 0xe0, 0x3a, 0x67, 0x40, - 0xc3, 0x50, 0x5d, 0x38, 0x97, 0xb5, 0x7a, 0x28, 0x4b, 0xd1, 0xc0, 0x20, 0x55, 0x28, 0x72, 0xff, - 0x61, 0x79, 0x9e, 0xe0, 0x5a, 0x2c, 0x77, 0xd5, 0x45, 0x51, 0x4e, 0xbe, 0x6c, 0x01, 0x08, 0x01, - 0xd9, 0x69, 0x44, 0xee, 0x92, 0x98, 0x6f, 0x33, 0x31, 0xca, 0x42, 0xca, 0xf8, 0x3f, 0x1a, 0x5c, - 0xc9, 0x06, 0x4c, 0x30, 0x85, 0xd6, 0x6f, 0x9d, 0x7a, 0x53, 0xe4, 0x37, 0x51, 0xeb, 0x9c, 0x06, - 0x4a, 0x5a, 0xac, 0xad, 0x02, 0x1a, 0xf5, 0x03, 0x8f, 0x35, 0x2d, 0xdf, 0x06, 0x4b, 0x42, 0x0a, - 0xd4, 0xa5, 0x68, 0x60, 0xd8, 0xff, 0x62, 0x0c, 0x2e, 0x66, 0x89, 0xce, 0x76, 0x9b, 0x09, 0x21, - 0xad, 0x3c, 0x1a, 0xff, 0x44, 0xfe, 0xed, 0x23, 0x7d, 0x76, 0xf4, 0x35, 0x85, 0x74, 0xa0, 0x94, - 0x7c, 0xc9, 0x4f, 0xe8, 0x16, 0x1a, 0x3b, 0x65, 0x0b, 0x69, 0xca, 0xa9, 0x56, 0xba, 0x02, 0xe3, - 0x21, 0xeb, 0xf9, 0x42, 0xf2, 0xba, 0x83, 0xf7, 0x11, 0x87, 0x30, 0x8c, 0xbe, 0xe7, 0x46, 0x32, - 0xe8, 0x46, 0x63, 0xdc, 0xf1, 0xdc, 0x08, 0x39, 0xc4, 0xfe, 0xd6, 0x18, 0xcc, 0x0f, 0xff, 0x28, - 0xf2, 0x2d, 0x0b, 0xa0, 0xc5, 0x8e, 0x2b, 0x21, 0xf7, 0x5c, 0x17, 0x3e, 0x4e, 0xce, 0x59, 0xb5, - 0xe1, 0xb2, 0xe2, 0x14, 0x3b, 0xdf, 0xe9, 0xa2, 0x10, 0x0d, 0x41, 0xc8, 0x55, 0x35, 0xf4, 0xf9, - 0x55, 0x8d, 0x98, 0x4c, 0xba, 0xce, 0x9a, 0x86, 0xa0, 0x81, 0xc5, 0xce, 0xa3, 0x9e, 0xd3, 0xa5, - 0x61, 0xcf, 0xd1, 0x21, 0x4c, 0xfc, 0x3c, 0x7a, 0x4b, 0x15, 0x62, 0x0c, 0xb7, 0x3b, 0xf0, 0xd4, - 0x31, 0xe4, 0xcc, 0x29, 0x42, 0xc4, 0xfe, 0x9f, 0x16, 0x3c, 0x2a, 0xdd, 0xcf, 0xfe, 0xc2, 0xf8, - 0x32, 0xfe, 0x99, 0x05, 0x8f, 0x0f, 0xf9, 0xe6, 0x87, 0xe0, 0xd2, 0xf8, 0x56, 0xd2, 0xa5, 0xf1, - 0xce, 0xa8, 0x43, 0x3a, 0xf3, 0x3b, 0x86, 0x78, 0x36, 0xfe, 0x5e, 0x01, 0xce, 0xb1, 0x65, 0xab, - 0xe5, 0xb7, 0x73, 0xda, 0x38, 0x9f, 0x82, 0xe2, 0xe7, 0xd9, 0x06, 0x94, 0x1e, 0x64, 0x7c, 0x57, - 0x42, 0x01, 0x23, 0x5f, 0xb1, 0x60, 0xf2, 0xf3, 0x72, 0x4f, 0x15, 0x67, 0xb9, 0x11, 0x17, 0xc3, - 0xc4, 0x37, 0x2c, 0xc8, 0x1d, 0x52, 0x04, 0x9e, 0x68, 0x07, 0x46, 0xb5, 0x95, 0x2a, 0xce, 0xe4, - 0x59, 0x98, 0xdc, 0xf2, 0x83, 0x6e, 0xbf, 0xe3, 0xa4, 0xa3, 0x1d, 0xaf, 0x8b, 0x62, 0x54, 0x70, - 0x36, 0xc9, 0x9d, 0x9e, 0xfb, 0x06, 0x0d, 0x42, 0x11, 0x87, 0x90, 0x98, 0xe4, 0x35, 0x0d, 0x41, - 0x03, 0x8b, 0xd7, 0x69, 0xb7, 0x03, 0xda, 0x76, 0x22, 0x3f, 0xe0, 0x3b, 0x87, 0x59, 0x47, 0x43, - 0xd0, 0xc0, 0x9a, 0xff, 0x24, 0x4c, 0x99, 0xc2, 0x9f, 0x28, 0x88, 0xe5, 0x53, 0x20, 0x3d, 0x19, - 0x53, 0x4b, 0x92, 0x75, 0x9c, 0x25, 0xc9, 0xfe, 0x8f, 0x63, 0x60, 0x58, 0x87, 0x1e, 0xc2, 0x54, - 0xf7, 0x12, 0x53, 0x7d, 0x44, 0xcb, 0x86, 0x61, 0xeb, 0x1a, 0x16, 0xd2, 0xb7, 0x9b, 0x0a, 0xe9, - 0xbb, 0x95, 0x1b, 0xc7, 0xc3, 0x23, 0xfa, 0xbe, 0x6f, 0xc1, 0xe3, 0x31, 0xf2, 0xa0, 0xe1, 0xf6, - 0xe8, 0x75, 0xfb, 0x45, 0xa8, 0x38, 0x71, 0x35, 0x39, 0xb1, 0x8c, 0x78, 0x2a, 0x0d, 0x42, 0x13, - 0x2f, 0x8e, 0x05, 0x29, 0x9c, 0x32, 0x16, 0x64, 0xfc, 0xf0, 0x58, 0x10, 0xfb, 0x47, 0x63, 0xf0, - 0xe4, 0xe0, 0x97, 0x99, 0x0e, 0xd2, 0x47, 0x7f, 0x5b, 0xda, 0x85, 0x7a, 0xec, 0xd4, 0x2e, 0xd4, - 0x85, 0xe3, 0xba, 0x50, 0x6b, 0xc7, 0xe5, 0xf1, 0x33, 0x77, 0x5c, 0x6e, 0xc0, 0x25, 0xe5, 0x25, - 0x79, 0xdd, 0x0f, 0x64, 0x40, 0x84, 0x5a, 0x41, 0x4a, 0xf5, 0x27, 0x65, 0x95, 0x4b, 0x98, 0x85, - 0x84, 0xd9, 0x75, 0xed, 0xef, 0x17, 0xe0, 0x42, 0xdc, 0xec, 0x4b, 0xbe, 0xd7, 0x72, 0xb9, 0xa3, - 0xcd, 0xcb, 0x30, 0x1e, 0xed, 0xf5, 0x54, 0x63, 0xff, 0x55, 0x25, 0xce, 0xc6, 0x5e, 0x8f, 0xf5, - 0xf6, 0xa3, 0x19, 0x55, 0xb8, 0xe9, 0x9c, 0x57, 0x22, 0xab, 0x7a, 0x76, 0x88, 0x1e, 0x78, 0x21, - 0x39, 0x9a, 0xdf, 0xdb, 0xaf, 0x66, 0xa4, 0x36, 0x58, 0xd0, 0x94, 0x92, 0x63, 0x9e, 0xdc, 0x83, - 0xe9, 0x8e, 0x13, 0x46, 0x77, 0x7a, 0x2d, 0x27, 0xa2, 0x1b, 0xae, 0x74, 0x61, 0x39, 0x59, 0x0c, - 0x89, 0xbe, 0xeb, 0x5f, 0x4d, 0x50, 0xc2, 0x14, 0x65, 0xb2, 0x0b, 0x84, 0x95, 0x6c, 0x04, 0x8e, - 0x17, 0x8a, 0xaf, 0x62, 0xfc, 0x4e, 0x1e, 0x10, 0xa4, 0x8f, 0xce, 0xab, 0x03, 0xd4, 0x30, 0x83, - 0x03, 0x79, 0x1a, 0x26, 0x02, 0xea, 0x84, 0x7a, 0x3b, 0xd0, 0xf3, 0x1f, 0x79, 0x29, 0x4a, 0xa8, - 0x39, 0xa1, 0x26, 0x8e, 0x98, 0x50, 0x7f, 0x64, 0xc1, 0x74, 0xdc, 0x4d, 0x0f, 0x41, 0xf5, 0xe8, - 0x26, 0x55, 0x8f, 0x1b, 0x79, 0x2d, 0x89, 0x43, 0xb4, 0x8d, 0x3f, 0x9d, 0x34, 0xbf, 0x8f, 0x47, - 0x2d, 0x7c, 0xc1, 0x74, 0x62, 0xb7, 0xf2, 0x08, 0x25, 0x4b, 0x68, 0x7b, 0x87, 0x7a, 0xaf, 0x33, - 0x5d, 0xa7, 0x25, 0xf5, 0x18, 0x39, 0xec, 0xb5, 0xae, 0xa3, 0xf4, 0x9b, 0x2c, 0x5d, 0x47, 0xd5, - 0x21, 0x77, 0xe0, 0xd1, 0x5e, 0xe0, 0xf3, 0xe0, 0xfa, 0x65, 0xea, 0xb4, 0x3a, 0xae, 0x47, 0x95, - 0x99, 0x47, 0xb8, 0x9a, 0x3c, 0x7e, 0xb0, 0x5f, 0x7d, 0x74, 0x3d, 0x1b, 0x05, 0x87, 0xd5, 0x4d, - 0x86, 0x67, 0x8e, 0x1f, 0x23, 0x3c, 0xf3, 0xe7, 0xb5, 0x31, 0x55, 0x47, 0x02, 0x7c, 0x26, 0xaf, - 0xae, 0xcc, 0x8a, 0x09, 0xd0, 0x43, 0xaa, 0x26, 0x99, 0xa2, 0x66, 0x3f, 0xdc, 0x62, 0x37, 0x71, - 0x4a, 0x8b, 0x5d, 0x1c, 0xfc, 0x31, 0xf9, 0x7e, 0x06, 0x7f, 0x94, 0x3e, 0x50, 0xc1, 0x1f, 0xdf, - 0xb6, 0xe0, 0x82, 0x33, 0x18, 0x76, 0x9d, 0x8f, 0xf1, 0x38, 0x23, 0x9e, 0xbb, 0xfe, 0xb8, 0x14, - 0x32, 0x2b, 0xba, 0x1d, 0xb3, 0x44, 0xb1, 0xdf, 0x2d, 0xc2, 0x6c, 0x5a, 0x49, 0x3a, 0xfb, 0xf8, - 0xd4, 0x5f, 0xb4, 0x60, 0x56, 0x4d, 0x70, 0xc1, 0x53, 0x1f, 0x31, 0x56, 0x73, 0x5a, 0x57, 0x84, - 0xba, 0xa7, 0xd3, 0x86, 0x6c, 0xa4, 0xb8, 0xe1, 0x00, 0x7f, 0xf2, 0x26, 0x54, 0xf4, 0xad, 0xca, - 0xa9, 0x82, 0x55, 0x79, 0x3c, 0x65, 0x2d, 0x26, 0x81, 0x26, 0x3d, 0xf2, 0xae, 0x05, 0xd0, 0x54, - 0x3b, 0x71, 0x4e, 0xa1, 0x40, 0x19, 0xda, 0x42, 0xac, 0xcf, 0xeb, 0xa2, 0x10, 0x0d, 0xc6, 0xe4, - 0x97, 0xf8, 0x7d, 0x8a, 0x1e, 0x09, 0x22, 0x1d, 0xc9, 0xc8, 0x6e, 0xef, 0x87, 0xe8, 0xce, 0xb1, - 0xb6, 0x67, 0x80, 0x42, 0x4c, 0x08, 0x61, 0xbf, 0x0c, 0xda, 0x51, 0x99, 0xad, 0xac, 0xdc, 0x55, - 0x79, 0xdd, 0x89, 0xb6, 0xe5, 0x10, 0xd4, 0x2b, 0xeb, 0x75, 0x05, 0xc0, 0x18, 0xc7, 0xfe, 0x1c, - 0x4c, 0xbf, 0x1a, 0x38, 0xbd, 0x6d, 0x97, 0xdf, 0x5b, 0xb0, 0xf3, 0xf1, 0xb3, 0x30, 0xe9, 0xb4, - 0x5a, 0x59, 0x19, 0x6e, 0x6a, 0xa2, 0x18, 0x15, 0xfc, 0x58, 0x47, 0x61, 0xfb, 0x77, 0x2d, 0x20, - 0xf1, 0xdd, 0xaf, 0xeb, 0xb5, 0xd7, 0x9c, 0xa8, 0xb9, 0xcd, 0x8e, 0x70, 0xdb, 0xbc, 0x34, 0xeb, - 0x08, 0x77, 0x43, 0x43, 0xd0, 0xc0, 0x22, 0x6f, 0x43, 0x45, 0xfc, 0x7b, 0x43, 0x1f, 0x10, 0x47, - 0xf7, 0xb7, 0xe6, 0x7b, 0x1e, 0x97, 0x49, 0x8c, 0xc2, 0x1b, 0x31, 0x07, 0x34, 0xd9, 0xb1, 0xa6, - 0x5a, 0xf1, 0xb6, 0x3a, 0xfd, 0x07, 0xad, 0xcd, 0xb8, 0xa9, 0x7a, 0x81, 0xbf, 0xe5, 0x76, 0x68, - 0xba, 0xa9, 0xd6, 0x45, 0x31, 0x2a, 0xf8, 0xf1, 0x9a, 0xea, 0xdf, 0x5a, 0x70, 0x71, 0x25, 0x8c, - 0x5c, 0x7f, 0x99, 0x86, 0x11, 0xdb, 0xf9, 0xd8, 0xfa, 0xd8, 0xef, 0x1c, 0x27, 0xe6, 0x60, 0x19, - 0x66, 0xe5, 0x3d, 0x74, 0x7f, 0x33, 0xa4, 0x91, 0x71, 0xd4, 0xd0, 0xf3, 0x78, 0x29, 0x05, 0xc7, - 0x81, 0x1a, 0x8c, 0x8a, 0xbc, 0x90, 0x8e, 0xa9, 0x14, 0x92, 0x54, 0x1a, 0x29, 0x38, 0x0e, 0xd4, - 0xb0, 0xbf, 0x57, 0x80, 0x0b, 0xfc, 0x33, 0x52, 0xf1, 0x42, 0xdf, 0x18, 0x16, 0x2f, 0x34, 0xe2, - 0x54, 0xe6, 0xbc, 0x4e, 0x11, 0x2d, 0xf4, 0x77, 0x2c, 0x98, 0x69, 0x25, 0x5b, 0x3a, 0x1f, 0xbb, - 0x5c, 0x56, 0x1f, 0x0a, 0xb7, 0xbb, 0x54, 0x21, 0xa6, 0xf9, 0x93, 0x5f, 0xb6, 0x60, 0x26, 0x29, - 0xa6, 0x5a, 0xdd, 0xcf, 0xa0, 0x91, 0xb4, 0x9f, 0x7c, 0xb2, 0x3c, 0xc4, 0xb4, 0x08, 0xf6, 0xef, - 0x8f, 0xc9, 0x2e, 0x3d, 0x8b, 0x60, 0x18, 0x72, 0x1f, 0xca, 0x51, 0x27, 0x14, 0x85, 0xf2, 0x6b, - 0x47, 0x3c, 0xb4, 0x6e, 0xac, 0x36, 0x84, 0x0b, 0x48, 0xac, 0x57, 0xca, 0x12, 0xa6, 0x1f, 0x2b, - 0x5e, 0x9c, 0x71, 0xb3, 0x27, 0x19, 0xe7, 0x72, 0x5a, 0xde, 0x58, 0x5a, 0x4f, 0x33, 0x96, 0x25, - 0x8c, 0xb1, 0xe2, 0x65, 0xff, 0xba, 0x05, 0xe5, 0x9b, 0xbe, 0x5a, 0x47, 0x7e, 0x2a, 0x07, 0x5b, - 0x94, 0x56, 0x59, 0xb5, 0xd2, 0x12, 0x9f, 0x82, 0x5e, 0x49, 0x58, 0xa2, 0x9e, 0x30, 0x68, 0x2f, - 0xf0, 0x44, 0x7f, 0x8c, 0xd4, 0x4d, 0x7f, 0x73, 0xa8, 0xf9, 0xf8, 0x57, 0x8a, 0x70, 0xee, 0x35, - 0x67, 0x8f, 0x7a, 0x91, 0x73, 0xf2, 0x4d, 0xe2, 0x45, 0xa8, 0x38, 0x3d, 0x7e, 0x97, 0x69, 0x1c, - 0x43, 0x62, 0xe3, 0x4e, 0x0c, 0x42, 0x13, 0x2f, 0x5e, 0xd0, 0x44, 0x64, 0x4a, 0xd6, 0x52, 0xb4, - 0x94, 0x82, 0xe3, 0x40, 0x0d, 0x72, 0x13, 0x88, 0x8c, 0xe6, 0xae, 0x35, 0x9b, 0x7e, 0xdf, 0x13, - 0x4b, 0x9a, 0xb0, 0xfb, 0xe8, 0xf3, 0xf0, 0xda, 0x00, 0x06, 0x66, 0xd4, 0x22, 0x9f, 0x85, 0xb9, - 0x26, 0xa7, 0x2c, 0x4f, 0x47, 0x26, 0x45, 0x71, 0x42, 0xd6, 0xb1, 0x1e, 0x4b, 0x43, 0xf0, 0x70, - 0x28, 0x05, 0x26, 0x69, 0x18, 0xf9, 0x81, 0xd3, 0xa6, 0x26, 0xdd, 0x89, 0xa4, 0xa4, 0x8d, 0x01, - 0x0c, 0xcc, 0xa8, 0x45, 0xbe, 0x08, 0xe5, 0x68, 0x3b, 0xa0, 0xe1, 0xb6, 0xdf, 0x69, 0x49, 0xdf, - 0x93, 0x11, 0x8d, 0x81, 0xb2, 0xf7, 0x37, 0x14, 0x55, 0x63, 0x78, 0xab, 0x22, 0x8c, 0x79, 0x92, - 0x00, 0x26, 0xc2, 0xa6, 0xdf, 0xa3, 0xa1, 0x3c, 0x55, 0xdc, 0xcc, 0x85, 0x3b, 0x37, 0x6e, 0x19, - 0x66, 0x48, 0xce, 0x01, 0x25, 0x27, 0xfb, 0x77, 0xc6, 0x60, 0xca, 0x44, 0x3c, 0xc6, 0xda, 0xf4, - 0x15, 0x0b, 0xa6, 0x9a, 0xbe, 0x17, 0x05, 0x7e, 0x27, 0xce, 0x52, 0x30, 0xba, 0x46, 0xc1, 0x48, - 0x2d, 0xd3, 0xc8, 0x71, 0x3b, 0x86, 0xb5, 0xce, 0x60, 0x83, 0x09, 0xa6, 0xe4, 0xeb, 0x16, 0xcc, - 0xc4, 0xae, 0x8a, 0xb1, 0xad, 0x2f, 0x57, 0x41, 0xf4, 0x52, 0x7f, 0x2d, 0xc9, 0x09, 0xd3, 0xac, - 0xed, 0x4d, 0x98, 0x4d, 0xf7, 0x36, 0x6b, 0xca, 0x9e, 0x23, 0xe7, 0x7a, 0x21, 0x6e, 0xca, 0x75, - 0x27, 0x0c, 0x91, 0x43, 0xc8, 0x73, 0x50, 0xea, 0x3a, 0x41, 0xdb, 0xf5, 0x9c, 0x0e, 0x6f, 0xc5, - 0x82, 0xb1, 0x20, 0xc9, 0x72, 0xd4, 0x18, 0xf6, 0xc7, 0x60, 0x6a, 0xcd, 0xf1, 0xda, 0xb4, 0x25, - 0xd7, 0xe1, 0xa3, 0xc3, 0x31, 0xff, 0x64, 0x1c, 0x2a, 0xc6, 0xf1, 0xf1, 0xec, 0xcf, 0x59, 0x89, - 0xec, 0x3b, 0x85, 0x1c, 0xb3, 0xef, 0x7c, 0x1a, 0x60, 0xcb, 0xf5, 0xdc, 0x70, 0xfb, 0x94, 0x79, - 0x7d, 0xf8, 0xdd, 0xfc, 0x75, 0x4d, 0x01, 0x0d, 0x6a, 0xf1, 0x05, 0x68, 0xf1, 0x90, 0x14, 0x79, - 0xef, 0x5a, 0xc6, 0x76, 0x33, 0x91, 0x87, 0xc3, 0x87, 0xd1, 0x31, 0x0b, 0x6a, 0xfb, 0x11, 0x77, - 0x53, 0x87, 0xed, 0x4a, 0x1b, 0x50, 0x0a, 0x68, 0xd8, 0xef, 0xd2, 0x53, 0x65, 0xe0, 0xe1, 0xae, - 0x37, 0x28, 0xeb, 0xa3, 0xa6, 0x34, 0xff, 0x32, 0x9c, 0x4b, 0x88, 0x70, 0xa2, 0x1b, 0x26, 0x1f, - 0x32, 0x6d, 0x14, 0xa7, 0xb9, 0x6f, 0x62, 0x7d, 0xd1, 0x31, 0x32, 0xef, 0xe8, 0xbe, 0x10, 0x0e, - 0x56, 0x02, 0x66, 0xff, 0x68, 0x02, 0xa4, 0x0f, 0xc3, 0x31, 0x96, 0x2b, 0xf3, 0xe6, 0x72, 0xec, - 0x14, 0x37, 0x97, 0x37, 0x61, 0xca, 0xf5, 0xdc, 0xc8, 0x75, 0x3a, 0xdc, 0xfe, 0x24, 0xb7, 0x53, - 0xe5, 0x81, 0x3e, 0xb5, 0x62, 0xc0, 0x32, 0xe8, 0x24, 0xea, 0x92, 0xd7, 0xa1, 0xc8, 0xf7, 0x1b, - 0x39, 0x80, 0x4f, 0xee, 0x68, 0xc1, 0x7d, 0x6c, 0x44, 0x58, 0x9a, 0xa0, 0xc4, 0x0f, 0x1f, 0x22, - 0xf5, 0x90, 0x3e, 0x7e, 0xcb, 0x71, 0x1c, 0x1f, 0x3e, 0x52, 0x70, 0x1c, 0xa8, 0xc1, 0xa8, 0x6c, - 0x39, 0x6e, 0xa7, 0x1f, 0xd0, 0x98, 0xca, 0x44, 0x92, 0xca, 0xf5, 0x14, 0x1c, 0x07, 0x6a, 0x90, - 0x2d, 0x98, 0x92, 0x65, 0xc2, 0x6d, 0x6e, 0xf2, 0x94, 0x5f, 0xc9, 0xdd, 0x23, 0xaf, 0x1b, 0x94, - 0x30, 0x41, 0x97, 0xf4, 0xe1, 0xbc, 0xeb, 0x35, 0x7d, 0xaf, 0xd9, 0xe9, 0x87, 0xee, 0x2e, 0x8d, - 0x63, 0xc2, 0x4e, 0xc3, 0xec, 0xd2, 0xc1, 0x7e, 0xf5, 0xfc, 0x4a, 0x9a, 0x1c, 0x0e, 0x72, 0x20, - 0x5f, 0xb2, 0xe0, 0x52, 0xd3, 0xf7, 0x42, 0x9e, 0xba, 0x62, 0x97, 0x5e, 0x0b, 0x02, 0x3f, 0x10, - 0xbc, 0xcb, 0xa7, 0xe4, 0xcd, 0xcd, 0x9e, 0x4b, 0x59, 0x24, 0x31, 0x9b, 0x13, 0x79, 0x0b, 0x4a, - 0xbd, 0xc0, 0xdf, 0x75, 0x5b, 0x34, 0x90, 0x2e, 0x98, 0xab, 0x79, 0xe4, 0xf3, 0x59, 0x97, 0x34, - 0xe3, 0xa5, 0x47, 0x95, 0xa0, 0xe6, 0x67, 0xff, 0xdf, 0x0a, 0x4c, 0x27, 0xd1, 0xc9, 0xcf, 0x00, - 0xf4, 0x02, 0xbf, 0x4b, 0xa3, 0x6d, 0xaa, 0x63, 0x7b, 0x6e, 0x8d, 0x9a, 0xb1, 0x45, 0xd1, 0x53, - 0x6e, 0x4b, 0x6c, 0xb9, 0x88, 0x4b, 0xd1, 0xe0, 0x48, 0x02, 0x98, 0xdc, 0x11, 0xdb, 0xae, 0xd4, - 0x42, 0x5e, 0xcb, 0x45, 0x67, 0x92, 0x9c, 0x79, 0x50, 0x8a, 0x2c, 0x42, 0xc5, 0x88, 0x6c, 0x42, - 0xe1, 0x3e, 0xdd, 0xcc, 0x27, 0x5d, 0xc0, 0x5d, 0x2a, 0x4f, 0x33, 0xf5, 0xc9, 0x83, 0xfd, 0x6a, - 0xe1, 0x2e, 0xdd, 0x44, 0x46, 0x9c, 0x7d, 0x57, 0x4b, 0xf8, 0x2e, 0xc8, 0xa5, 0xe2, 0xb5, 0x1c, - 0x1d, 0x21, 0xc4, 0x77, 0xc9, 0x22, 0x54, 0x8c, 0xc8, 0x5b, 0x50, 0xbe, 0xef, 0xec, 0xd2, 0xad, - 0xc0, 0xf7, 0x22, 0xe9, 0x2b, 0x37, 0x62, 0xb8, 0xc7, 0x5d, 0x45, 0x4e, 0xf2, 0xe5, 0xdb, 0xbb, - 0x2e, 0xc4, 0x98, 0x1d, 0xd9, 0x85, 0x92, 0x47, 0xef, 0x23, 0xed, 0xb8, 0xcd, 0x7c, 0xc2, 0x2b, - 0x6e, 0x49, 0x6a, 0x92, 0x33, 0xdf, 0xf7, 0x54, 0x19, 0x6a, 0x5e, 0xac, 0x2f, 0xef, 0xf9, 0x9b, - 0x72, 0xa1, 0x1a, 0xb1, 0x2f, 0xf5, 0xc9, 0x54, 0xf4, 0xe5, 0x4d, 0x7f, 0x13, 0x19, 0x71, 0x36, - 0x47, 0x9a, 0xda, 0x51, 0x4b, 0x2e, 0x53, 0xb7, 0xf2, 0x75, 0x50, 0x13, 0x73, 0x24, 0x2e, 0x45, - 0x83, 0x23, 0x6b, 0xdb, 0xb6, 0x34, 0x56, 0xca, 0x85, 0x6a, 0xc4, 0xb6, 0x4d, 0x9a, 0x3e, 0x45, - 0xdb, 0xaa, 0x32, 0xd4, 0xbc, 0x18, 0x5f, 0x57, 0x5a, 0xfe, 0xf2, 0x59, 0xaa, 0x92, 0x76, 0x44, - 0xc1, 0x57, 0x95, 0xa1, 0xe6, 0xc5, 0xda, 0x3b, 0xdc, 0xd9, 0xbb, 0xef, 0x74, 0x76, 0x5c, 0xaf, - 0x2d, 0x63, 0x55, 0x47, 0x4d, 0xc3, 0xbd, 0xb3, 0x77, 0x57, 0xd0, 0x33, 0xdb, 0x3b, 0x2e, 0x45, - 0x83, 0x23, 0xf9, 0x07, 0x16, 0x4c, 0xf4, 0x3a, 0xfd, 0xb6, 0xeb, 0xcd, 0x4d, 0xe5, 0xe1, 0xc4, - 0x94, 0x5c, 0x72, 0x17, 0xd6, 0x39, 0x69, 0xa1, 0x28, 0xfe, 0xb8, 0xf6, 0xbb, 0xe4, 0x85, 0x5f, - 0xfb, 0xe3, 0xea, 0x1c, 0xf5, 0x9a, 0x7e, 0xcb, 0xf5, 0xda, 0x8b, 0xf7, 0x42, 0xdf, 0x5b, 0x40, - 0xe7, 0xbe, 0xd2, 0xd1, 0xa5, 0x4c, 0xf3, 0x9f, 0x80, 0x8a, 0x41, 0xe2, 0x28, 0x45, 0x6f, 0xca, - 0x54, 0xf4, 0x7e, 0x7d, 0x02, 0xa6, 0xcc, 0xe4, 0x9b, 0xc7, 0xd0, 0xbe, 0xf4, 0x89, 0x63, 0xec, - 0x24, 0x27, 0x0e, 0x76, 0xc4, 0x34, 0x2e, 0xb8, 0x94, 0x79, 0x6b, 0x25, 0x37, 0x85, 0x3b, 0x3e, - 0x62, 0x1a, 0x85, 0x21, 0x26, 0x98, 0x9e, 0xc0, 0xe7, 0x85, 0xa9, 0xad, 0x42, 0xb1, 0x2b, 0x26, - 0xd5, 0xd6, 0x84, 0xaa, 0x76, 0x15, 0x20, 0xce, 0x12, 0x29, 0x2f, 0x3e, 0xb5, 0x3e, 0x6c, 0x64, - 0xaf, 0x34, 0xb0, 0xc8, 0xd3, 0x30, 0xc1, 0x54, 0x1f, 0xda, 0x92, 0xa1, 0xf4, 0xfa, 0x1c, 0x7f, - 0x9d, 0x97, 0xa2, 0x84, 0x92, 0x97, 0x98, 0x96, 0x1a, 0x2b, 0x2c, 0x32, 0x42, 0xfe, 0x62, 0xac, - 0xa5, 0xc6, 0x30, 0x4c, 0x60, 0x32, 0xd1, 0x29, 0xd3, 0x2f, 0xf8, 0xda, 0x60, 0x88, 0xce, 0x95, - 0x0e, 0x14, 0x30, 0x6e, 0x57, 0x4a, 0xe9, 0x23, 0x7c, 0x4e, 0x17, 0x0d, 0xbb, 0x52, 0x0a, 0x8e, - 0x03, 0x35, 0xd8, 0xc7, 0xc8, 0x3b, 0xdb, 0x8a, 0x70, 0x98, 0x1e, 0x72, 0xdb, 0xfa, 0xb3, 0xe6, - 0x59, 0x2b, 0xc7, 0x39, 0x24, 0x46, 0xed, 0xf1, 0x0f, 0x5b, 0xa3, 0x1d, 0x8b, 0x3e, 0x07, 0xd3, - 0xc9, 0x5d, 0x28, 0xf7, 0x9b, 0x8f, 0xaf, 0x8e, 0xc3, 0x85, 0x5b, 0x6d, 0xd7, 0x4b, 0x27, 0x3a, - 0xcb, 0x7a, 0xd5, 0xc0, 0x3a, 0xf1, 0xab, 0x06, 0x3a, 0x26, 0x4f, 0xbe, 0x19, 0x90, 0x1d, 0x93, - 0xa7, 0x1e, 0x70, 0x48, 0xe2, 0x92, 0x3f, 0xb2, 0xe0, 0x09, 0xa7, 0x25, 0xce, 0x05, 0x4e, 0x47, - 0x96, 0x1a, 0xc9, 0xb8, 0xe5, 0x8c, 0x0e, 0x47, 0xdc, 0xe5, 0x07, 0x3f, 0x7e, 0xa1, 0x76, 0x08, - 0x57, 0xd1, 0xe3, 0x3f, 0x26, 0xbf, 0xe0, 0x89, 0xc3, 0x50, 0xf1, 0x50, 0xf1, 0xc9, 0xdf, 0x80, - 0x99, 0xc4, 0x07, 0x4b, 0x4b, 0x78, 0x59, 0x5c, 0x58, 0x34, 0x92, 0x20, 0x4c, 0xe3, 0xce, 0xdf, - 0x86, 0x0f, 0x1f, 0x29, 0xe7, 0x89, 0x06, 0xdb, 0x77, 0x2d, 0x98, 0x32, 0x73, 0x12, 0x91, 0xe7, - 0xa0, 0x14, 0xf9, 0x3b, 0xd4, 0xbb, 0x13, 0x28, 0x87, 0x5d, 0x3d, 0xd0, 0x37, 0x78, 0x39, 0xae, - 0xa2, 0xc6, 0x60, 0xd8, 0xcd, 0x8e, 0x4b, 0xbd, 0x68, 0xa5, 0x25, 0xbb, 0x59, 0x63, 0x2f, 0x89, - 0xf2, 0x65, 0xd4, 0x18, 0xc2, 0xc7, 0x8e, 0xfd, 0x6e, 0xd0, 0x66, 0x40, 0x95, 0x7b, 0xbf, 0xe1, - 0x63, 0x17, 0xc3, 0x30, 0x81, 0x49, 0x6c, 0x6d, 0xe2, 0x1c, 0x8f, 0xef, 0x35, 0x52, 0x26, 0xc9, - 0xdf, 0xb2, 0xa0, 0x2c, 0x4c, 0xf4, 0x48, 0xb7, 0x52, 0x2e, 0xb6, 0x29, 0x23, 0x42, 0x6d, 0x7d, - 0x25, 0xcb, 0xc5, 0xf6, 0x0a, 0x8c, 0xef, 0xb8, 0x9e, 0xfa, 0x12, 0xbd, 0x2d, 0xbd, 0xe6, 0x7a, - 0x2d, 0xe4, 0x10, 0xbd, 0x71, 0x15, 0x86, 0x6e, 0x5c, 0x8b, 0x50, 0xd6, 0x8e, 0x27, 0x72, 0xf9, - 0xd7, 0xd6, 0x5b, 0xed, 0xa8, 0x82, 0x31, 0x8e, 0xfd, 0xab, 0x16, 0x4c, 0xf3, 0x18, 0xee, 0xf8, - 0x3c, 0xfc, 0xa2, 0xf6, 0x05, 0x13, 0x72, 0x3f, 0x99, 0xf4, 0x05, 0x7b, 0x6f, 0xbf, 0x5a, 0x11, - 0x51, 0xdf, 0x49, 0xd7, 0xb0, 0xcf, 0x48, 0x23, 0x1a, 0xf7, 0x58, 0x1b, 0x3b, 0xb1, 0x8d, 0x27, - 0x16, 0x53, 0x11, 0xc1, 0x98, 0x9e, 0xfd, 0x36, 0x4c, 0x99, 0xc1, 0x58, 0xe4, 0x45, 0xa8, 0xf4, - 0x5c, 0xaf, 0x9d, 0x0c, 0xda, 0xd5, 0x17, 0x0d, 0xeb, 0x31, 0x08, 0x4d, 0x3c, 0x5e, 0xcd, 0x8f, - 0xab, 0xa5, 0xee, 0x27, 0xd6, 0x7d, 0xb3, 0x5a, 0xfc, 0x87, 0x3f, 0x84, 0x90, 0x11, 0xf4, 0x97, - 0xfb, 0x43, 0x08, 0x19, 0x3c, 0xde, 0xbf, 0x87, 0x10, 0xb2, 0x84, 0xf9, 0xf3, 0xf5, 0x10, 0xc2, - 0x4f, 0xc2, 0x49, 0x73, 0xa2, 0xb2, 0xbd, 0xfe, 0xbe, 0x99, 0x58, 0x41, 0xb7, 0xb8, 0xcc, 0xac, - 0x20, 0xa1, 0xf6, 0xef, 0x8d, 0xc3, 0x6c, 0xfa, 0xc8, 0x9f, 0xb7, 0x37, 0x05, 0xf9, 0xba, 0x05, - 0xd3, 0x4e, 0x22, 0xff, 0x5c, 0x4e, 0xaf, 0x2a, 0x25, 0x68, 0x1a, 0xf9, 0xcf, 0x12, 0xe5, 0x98, - 0xe2, 0x4d, 0xfe, 0x0a, 0x4c, 0x46, 0x6e, 0x97, 0xfa, 0x7d, 0x61, 0x08, 0x2c, 0x88, 0x03, 0xf9, - 0x86, 0x28, 0x42, 0x05, 0x63, 0x8b, 0xb2, 0xcb, 0x35, 0xa8, 0x80, 0x4a, 0xcf, 0xe0, 0xd9, 0xd8, - 0x72, 0x29, 0xca, 0x51, 0x63, 0x90, 0x07, 0x30, 0x29, 0xfc, 0x2e, 0x94, 0x83, 0xcd, 0x5a, 0x4e, - 0xa6, 0x09, 0xe1, 0xda, 0x11, 0x77, 0x81, 0xf8, 0x1f, 0xa2, 0x62, 0xc7, 0xd4, 0x35, 0x08, 0x1c, - 0xaf, 0x4d, 0x79, 0x9b, 0xcb, 0xc3, 0xf4, 0x1b, 0x79, 0x59, 0x81, 0x50, 0x53, 0xae, 0x05, 0xed, - 0x50, 0x06, 0xd9, 0xe9, 0x32, 0x34, 0x38, 0xdb, 0xbf, 0x68, 0xc1, 0xdc, 0xb0, 0x8a, 0x6c, 0xa0, - 0xf0, 0x55, 0x50, 0x8e, 0x28, 0x23, 0xb6, 0xdf, 0x09, 0x22, 0x14, 0x30, 0xf2, 0x24, 0x14, 0xa8, - 0xde, 0x38, 0x74, 0xf6, 0xbd, 0x6b, 0x5e, 0x0b, 0x59, 0x39, 0xb9, 0x0a, 0xe3, 0x61, 0x44, 0x7b, - 0x29, 0xd7, 0xf9, 0xf1, 0x46, 0x44, 0x7b, 0x19, 0xb6, 0x5f, 0x8e, 0x6b, 0x7f, 0x0c, 0x4e, 0x98, - 0x42, 0xd7, 0xbe, 0x06, 0x04, 0xfd, 0x4e, 0x67, 0xd3, 0x69, 0xee, 0xdc, 0x75, 0xbd, 0x96, 0x7f, - 0x9f, 0x2f, 0xd4, 0x8b, 0x50, 0x0e, 0x64, 0x40, 0x71, 0x28, 0xe7, 0x94, 0x5e, 0xe9, 0x55, 0xa4, - 0x71, 0x88, 0x31, 0x8e, 0xfd, 0xfb, 0x63, 0x30, 0x29, 0xa3, 0xdf, 0x1f, 0x42, 0xdc, 0xc6, 0x4e, - 0xe2, 0xb6, 0x7c, 0x25, 0x97, 0xa0, 0xfd, 0xa1, 0x41, 0x1b, 0x61, 0x2a, 0x68, 0xe3, 0xb5, 0x7c, - 0xd8, 0x1d, 0x1e, 0xb1, 0xf1, 0x9d, 0x22, 0xcc, 0xa4, 0xb2, 0x09, 0xa4, 0xb2, 0x6d, 0x5b, 0xef, - 0x4b, 0xb6, 0x6d, 0x12, 0x26, 0x32, 0xae, 0xe7, 0xe7, 0xe5, 0xf9, 0x97, 0xc9, 0xd7, 0xf3, 0xf2, - 0xbf, 0x2d, 0x7e, 0x70, 0xfc, 0x6f, 0xff, 0xab, 0x05, 0x8f, 0x0d, 0xcd, 0x89, 0xc1, 0x53, 0xaa, - 0x05, 0x49, 0xa8, 0x5c, 0x2f, 0x72, 0xce, 0xfc, 0xa3, 0x6f, 0xd6, 0xd3, 0x59, 0xb0, 0xd2, 0xec, - 0xc9, 0x0b, 0x30, 0xc5, 0xd7, 0x66, 0xb6, 0x72, 0xb2, 0xb5, 0x57, 0x5c, 0x0c, 0xf2, 0x2b, 0xa2, - 0x86, 0x51, 0x8e, 0x09, 0x2c, 0xfb, 0xdb, 0x16, 0xcc, 0x0d, 0x4b, 0xb0, 0x75, 0x0c, 0xb3, 0xd5, - 0x5f, 0x4f, 0xc5, 0xbd, 0x54, 0x07, 0xe2, 0x5e, 0x52, 0x86, 0x2b, 0x15, 0xe2, 0x62, 0xd8, 0x8c, - 0x0a, 0x47, 0x84, 0x75, 0xfc, 0x41, 0x01, 0x66, 0xa5, 0x88, 0xf1, 0x91, 0xe1, 0xa5, 0x44, 0xb4, - 0xce, 0x8f, 0xa5, 0xa2, 0x75, 0x2e, 0xa6, 0xf1, 0xff, 0x32, 0x54, 0xe7, 0x83, 0x15, 0xaa, 0xf3, - 0xb5, 0x22, 0x5c, 0xca, 0xcc, 0xb3, 0x45, 0xbe, 0x9a, 0xb1, 0x53, 0xdc, 0xcd, 0x39, 0xa1, 0x97, - 0x8e, 0xea, 0x3d, 0xdb, 0xf8, 0x96, 0x5f, 0x36, 0xe3, 0x4a, 0xc4, 0xea, 0xbf, 0x75, 0x06, 0xa9, - 0xc9, 0x4e, 0x1a, 0x62, 0xf2, 0x70, 0x5f, 0x23, 0xfb, 0x73, 0xb0, 0xd4, 0x7f, 0xad, 0x00, 0xcf, - 0x1c, 0xb7, 0x65, 0x3f, 0xa0, 0x31, 0x99, 0x61, 0x22, 0x26, 0xf3, 0x21, 0xa9, 0x36, 0x67, 0x12, - 0x9e, 0xf9, 0x8f, 0xc6, 0xf5, 0xbe, 0x3b, 0x38, 0x61, 0x8f, 0xe5, 0xc6, 0x32, 0xc9, 0x54, 0x5f, - 0x95, 0xb3, 0x3d, 0xde, 0x1b, 0x26, 0x1b, 0xa2, 0xf8, 0xbd, 0xfd, 0xea, 0xf9, 0x38, 0xfd, 0x8d, - 0x2c, 0x44, 0x55, 0x89, 0x3c, 0x03, 0xa5, 0x40, 0x40, 0x55, 0x14, 0x9a, 0xf4, 0x05, 0x12, 0x65, - 0xa8, 0xa1, 0xe4, 0x8b, 0xc6, 0x59, 0x61, 0xfc, 0xac, 0xb2, 0x3c, 0x1d, 0xe6, 0xe2, 0xf4, 0x26, - 0x94, 0x42, 0x95, 0x58, 0x5c, 0x4c, 0xa7, 0xe7, 0x8f, 0x19, 0xdc, 0xe8, 0x6c, 0xd2, 0x8e, 0xca, - 0x32, 0x2e, 0xbe, 0x4f, 0xe7, 0x20, 0xd7, 0x24, 0x89, 0xad, 0x2d, 0x13, 0xe2, 0x0a, 0x06, 0x06, - 0xad, 0x12, 0x24, 0x82, 0x49, 0xf9, 0xba, 0xb0, 0x3c, 0xce, 0xae, 0xe5, 0x14, 0x25, 0x24, 0x7d, - 0xc8, 0xf9, 0x81, 0x5f, 0x59, 0xc8, 0x14, 0x2b, 0xfb, 0xfb, 0x16, 0x54, 0xe4, 0x18, 0x79, 0x08, - 0x51, 0x9e, 0xf7, 0x92, 0x51, 0x9e, 0xd7, 0x72, 0x59, 0xc2, 0x87, 0x84, 0x78, 0xde, 0x83, 0x29, - 0x33, 0xe3, 0x25, 0xf9, 0xb4, 0xb1, 0x05, 0x59, 0xa3, 0xe4, 0x90, 0x53, 0x9b, 0x54, 0xbc, 0x3d, - 0xd9, 0xbf, 0x51, 0xd6, 0xad, 0xc8, 0x0f, 0xce, 0xe6, 0xc8, 0xb7, 0x0e, 0x1d, 0xf9, 0xe6, 0xc0, - 0x1b, 0xcb, 0x7f, 0xe0, 0xbd, 0x0e, 0x25, 0xb5, 0x2c, 0x4a, 0x6d, 0xea, 0x29, 0xd3, 0xa9, 0x9c, - 0xa9, 0x64, 0x8c, 0x98, 0x31, 0x5d, 0xf8, 0x01, 0x38, 0xb6, 0xdb, 0xab, 0xe5, 0x5a, 0x93, 0x21, - 0x6f, 0x41, 0xe5, 0xbe, 0x1f, 0xec, 0x74, 0x7c, 0x87, 0xbf, 0xe6, 0x00, 0x79, 0xf8, 0x31, 0x68, - 0xdb, 0xbb, 0x88, 0xec, 0xb9, 0x1b, 0xd3, 0x47, 0x93, 0x19, 0xa9, 0xc1, 0x4c, 0xd7, 0xf5, 0x90, - 0x3a, 0x2d, 0x1d, 0xcc, 0x39, 0x2e, 0x32, 0xa9, 0x2b, 0xdd, 0x7e, 0x2d, 0x09, 0xc6, 0x34, 0x3e, - 0xb7, 0xcb, 0x05, 0x09, 0x53, 0x87, 0x4c, 0x97, 0xbc, 0x3e, 0xfa, 0x60, 0x4c, 0x9a, 0x4f, 0x44, - 0x68, 0x4b, 0xb2, 0x1c, 0x53, 0xbc, 0xc9, 0x17, 0xa0, 0x14, 0xaa, 0x77, 0x3b, 0x8b, 0x39, 0x9e, - 0x7a, 0xf4, 0xdb, 0x9d, 0xba, 0x2b, 0xf5, 0xe3, 0x9d, 0x9a, 0x21, 0x59, 0x85, 0x8b, 0xca, 0x76, - 0x93, 0x78, 0x82, 0x70, 0x22, 0xce, 0x7e, 0x86, 0x19, 0x70, 0xcc, 0xac, 0xc5, 0x74, 0x5b, 0x9e, - 0x49, 0x56, 0xdc, 0x1b, 0x1b, 0x57, 0xad, 0x7c, 0xfe, 0xb5, 0x50, 0x42, 0x0f, 0x8b, 0x55, 0x2e, - 0x8d, 0x10, 0xab, 0xdc, 0x80, 0x4b, 0x69, 0x10, 0x4f, 0x6b, 0xc7, 0x33, 0xe9, 0x19, 0x5b, 0xe8, - 0x7a, 0x16, 0x12, 0x66, 0xd7, 0x25, 0x77, 0xa1, 0x1c, 0x50, 0x7e, 0xca, 0xab, 0x29, 0x97, 0xbb, - 0x13, 0x3b, 0x17, 0xa3, 0x22, 0x80, 0x31, 0x2d, 0xd6, 0xef, 0x4e, 0x32, 0xb7, 0xf9, 0xeb, 0x39, - 0x3e, 0xec, 0x2d, 0xfb, 0x7e, 0x48, 0xba, 0x49, 0xfb, 0xdf, 0xcd, 0xc0, 0xb9, 0x84, 0x01, 0x8a, - 0x3c, 0x05, 0x45, 0x9e, 0xe7, 0x8f, 0xaf, 0x56, 0xa5, 0x78, 0x45, 0x15, 0x8d, 0x23, 0x60, 0xe4, - 0x17, 0x2c, 0x98, 0xe9, 0x25, 0xae, 0x9b, 0xd4, 0x42, 0x3e, 0xa2, 0x4d, 0x3b, 0x79, 0x87, 0x65, - 0xbc, 0x0a, 0x92, 0x64, 0x86, 0x69, 0xee, 0x6c, 0x3d, 0x90, 0x1e, 0xfa, 0x1d, 0x1a, 0x70, 0x6c, - 0xa9, 0xe8, 0x69, 0x12, 0x4b, 0x49, 0x30, 0xa6, 0xf1, 0x59, 0x0f, 0xf3, 0xaf, 0x1b, 0xe5, 0xf1, - 0xd6, 0x9a, 0x22, 0x80, 0x31, 0x2d, 0xf2, 0x0a, 0x4c, 0xcb, 0x94, 0xd6, 0xeb, 0x7e, 0xeb, 0x86, - 0x13, 0x6e, 0xcb, 0x23, 0x9f, 0x3e, 0xa2, 0x2e, 0x25, 0xa0, 0x98, 0xc2, 0xe6, 0xdf, 0x16, 0xe7, - 0x0d, 0xe7, 0x04, 0x26, 0x92, 0x8f, 0xa6, 0x2c, 0x25, 0xc1, 0x98, 0xc6, 0x27, 0xcf, 0x19, 0xdb, - 0x90, 0xf0, 0xe5, 0xd0, 0xab, 0x41, 0xc6, 0x56, 0x54, 0x83, 0x99, 0x3e, 0x3f, 0x21, 0xb7, 0x14, - 0x50, 0xce, 0x47, 0xcd, 0xf0, 0x4e, 0x12, 0x8c, 0x69, 0x7c, 0xf2, 0x32, 0x9c, 0x0b, 0xd8, 0x62, - 0xab, 0x09, 0x08, 0x07, 0x0f, 0x7d, 0x7f, 0x8f, 0x26, 0x10, 0x93, 0xb8, 0xe4, 0x55, 0x38, 0x1f, - 0x67, 0x80, 0x55, 0x04, 0x84, 0xc7, 0x87, 0x4e, 0x47, 0x58, 0x4b, 0x23, 0xe0, 0x60, 0x1d, 0xf2, - 0xb7, 0x60, 0xd6, 0x68, 0x89, 0x15, 0xaf, 0x45, 0x1f, 0xc8, 0x2c, 0x9d, 0xfc, 0x11, 0xb0, 0xa5, - 0x14, 0x0c, 0x07, 0xb0, 0xc9, 0x27, 0x61, 0xba, 0xe9, 0x77, 0x3a, 0x7c, 0x8d, 0x13, 0x0f, 0x76, - 0x88, 0x74, 0x9c, 0x22, 0x71, 0x69, 0x02, 0x82, 0x29, 0x4c, 0x72, 0x13, 0x88, 0xbf, 0xc9, 0xd4, - 0x2b, 0xda, 0x7a, 0x95, 0x7a, 0x54, 0x6a, 0x1c, 0xe7, 0x92, 0xf1, 0x41, 0xb7, 0x07, 0x30, 0x30, - 0xa3, 0x16, 0xcf, 0x66, 0x68, 0xc4, 0x53, 0x4f, 0xe7, 0xf1, 0xd2, 0x68, 0xda, 0x9e, 0x73, 0x64, - 0x30, 0x75, 0x00, 0x13, 0x22, 0x5c, 0x2b, 0x9f, 0xbc, 0x9c, 0x66, 0xee, 0xfe, 0x78, 0x8f, 0x10, - 0xa5, 0x28, 0x39, 0x91, 0x9f, 0x81, 0xf2, 0xa6, 0x7a, 0xc8, 0x85, 0x27, 0xe3, 0x1c, 0x79, 0x5f, - 0x4c, 0xbd, 0x49, 0x14, 0xdb, 0x2b, 0x34, 0x00, 0x63, 0x96, 0xe4, 0x69, 0xa8, 0xdc, 0x58, 0xaf, - 0xe9, 0x51, 0x78, 0x9e, 0xf7, 0xfe, 0x38, 0xab, 0x82, 0x26, 0x80, 0xcd, 0x30, 0xad, 0xbe, 0x91, - 0xa4, 0x13, 0x43, 0x86, 0x36, 0xc6, 0xb0, 0xb9, 0x57, 0x06, 0x36, 0xe6, 0x2e, 0xa4, 0xb0, 0x65, - 0x39, 0x6a, 0x0c, 0xf2, 0x26, 0x54, 0xe4, 0x7e, 0xc1, 0xd7, 0xa6, 0x8b, 0xa7, 0x8b, 0xd5, 0xc7, - 0x98, 0x04, 0x9a, 0xf4, 0xf8, 0x75, 0x3a, 0x7f, 0xdf, 0x82, 0x5e, 0xef, 0x77, 0x3a, 0x73, 0x97, - 0xf8, 0xba, 0x19, 0x5f, 0xa7, 0xc7, 0x20, 0x34, 0xf1, 0xc8, 0xf3, 0xca, 0xbb, 0xee, 0x91, 0x84, - 0x7f, 0x81, 0xf6, 0xae, 0xd3, 0x4a, 0xf7, 0x90, 0x70, 0x9e, 0x47, 0x8f, 0x70, 0x6b, 0xdb, 0x84, - 0x79, 0xa5, 0xf1, 0x0d, 0x4e, 0x92, 0xb9, 0xb9, 0x84, 0xed, 0x68, 0xfe, 0xee, 0x50, 0x4c, 0x3c, - 0x84, 0x0a, 0xd9, 0x84, 0x82, 0xd3, 0xd9, 0x9c, 0x7b, 0x2c, 0x0f, 0xd5, 0xb5, 0xb6, 0x5a, 0x97, - 0x23, 0x8a, 0xbb, 0xe0, 0xd6, 0x56, 0xeb, 0xc8, 0x88, 0x13, 0x17, 0xc6, 0x9d, 0xce, 0x66, 0x38, - 0x37, 0xcf, 0xe7, 0x6c, 0x6e, 0x4c, 0x62, 0xe3, 0xc1, 0x6a, 0x3d, 0x44, 0xce, 0xc2, 0xfe, 0xd2, - 0x98, 0xbe, 0x25, 0xd2, 0xa9, 0xd1, 0xdf, 0x36, 0x27, 0x90, 0x38, 0xee, 0xdc, 0xce, 0x6d, 0x02, - 0x49, 0xf5, 0xe2, 0xdc, 0xd0, 0xe9, 0xd3, 0xd3, 0x4b, 0x46, 0x2e, 0x39, 0xd5, 0x92, 0x69, 0xdf, - 0xc5, 0xe9, 0x39, 0xb9, 0x60, 0xd8, 0x5f, 0xae, 0x68, 0x2b, 0x68, 0xca, 0x33, 0x2d, 0x80, 0xa2, - 0x1b, 0x46, 0xae, 0x9f, 0x63, 0x08, 0x7b, 0x2a, 0x5f, 0x3a, 0x8f, 0x90, 0xe1, 0x00, 0x14, 0xac, - 0x18, 0x4f, 0xaf, 0xed, 0x7a, 0x0f, 0xe4, 0xe7, 0xbf, 0x9e, 0xbb, 0xcb, 0x99, 0xe0, 0xc9, 0x01, - 0x28, 0x58, 0x91, 0x7b, 0x62, 0x50, 0x17, 0xf2, 0xe8, 0xeb, 0xda, 0x6a, 0x3d, 0xc5, 0x2f, 0x39, - 0xb8, 0xef, 0x41, 0x21, 0xec, 0xba, 0x52, 0x5d, 0x1a, 0x91, 0x57, 0x63, 0x6d, 0x25, 0x8b, 0x57, - 0x63, 0x6d, 0x05, 0x19, 0x13, 0x7e, 0xd5, 0xef, 0x74, 0x37, 0x9d, 0x30, 0x74, 0x5a, 0xda, 0x3a, - 0x33, 0xe2, 0x55, 0x7f, 0x4d, 0xd3, 0x4b, 0xb1, 0xe6, 0x57, 0xfd, 0x31, 0x14, 0x0d, 0xce, 0xe4, - 0x2d, 0x98, 0x74, 0xc4, 0x43, 0x93, 0x32, 0x5e, 0x20, 0x9f, 0xd7, 0x53, 0x53, 0x12, 0x70, 0x33, - 0x8d, 0x04, 0xa1, 0x62, 0xc8, 0x78, 0x47, 0x81, 0x43, 0xb7, 0xdc, 0x1d, 0x69, 0x1c, 0x6a, 0x8c, - 0xfc, 0x14, 0x0a, 0x23, 0x96, 0xc5, 0x5b, 0x82, 0x50, 0x31, 0x24, 0x3f, 0x67, 0xc1, 0xb9, 0xae, - 0xe3, 0x39, 0x3a, 0x0a, 0x34, 0x9f, 0x58, 0x61, 0x33, 0xae, 0x34, 0xd6, 0x10, 0xd7, 0x4c, 0x46, - 0x98, 0xe4, 0x4b, 0x76, 0x61, 0xc2, 0xe1, 0x4f, 0xe0, 0xca, 0xa3, 0x18, 0xe6, 0xf1, 0x9c, 0x6e, - 0xaa, 0x0d, 0xf8, 0xe2, 0x22, 0x1f, 0xda, 0x95, 0xdc, 0xc8, 0xaf, 0x59, 0x30, 0x29, 0x5c, 0xd9, - 0x99, 0x42, 0xca, 0xbe, 0xfd, 0x73, 0x67, 0xf0, 0xee, 0x82, 0x74, 0xb3, 0x97, 0xce, 0x59, 0x1f, - 0xd1, 0x7e, 0xba, 0xa2, 0xf4, 0x50, 0x47, 0x7b, 0x25, 0x1d, 0x53, 0x7d, 0xbb, 0xce, 0x83, 0xc4, - 0x43, 0x37, 0xa6, 0xea, 0xbb, 0x96, 0x82, 0xe1, 0x00, 0xf6, 0xfc, 0x27, 0x61, 0xca, 0x94, 0xe3, - 0x44, 0xce, 0xfa, 0x3f, 0x2c, 0x00, 0xf0, 0xae, 0x12, 0x99, 0x63, 0xba, 0x3c, 0xcd, 0xf4, 0xb6, - 0xdf, 0xca, 0xe9, 0xc1, 0x4d, 0x23, 0x01, 0x0c, 0xc8, 0x9c, 0xd2, 0xdb, 0x7e, 0x0b, 0x25, 0x13, - 0xd2, 0x86, 0xf1, 0x9e, 0x13, 0x6d, 0xe7, 0x9f, 0x6d, 0xa6, 0x24, 0x42, 0xa8, 0xa3, 0x6d, 0xe4, - 0x0c, 0xc8, 0x3b, 0x56, 0xec, 0xf7, 0x54, 0xc8, 0x23, 0x53, 0x6e, 0xdc, 0x66, 0x0b, 0xd2, 0xd3, - 0x29, 0x95, 0x30, 0x36, 0xed, 0xff, 0x34, 0xff, 0xae, 0x05, 0x53, 0x26, 0x6a, 0x46, 0x37, 0xfd, - 0xb4, 0xd9, 0x4d, 0x79, 0xb6, 0x87, 0xd9, 0xe3, 0xff, 0xdd, 0x02, 0xc0, 0xbe, 0xd7, 0xe8, 0x77, - 0xbb, 0x4c, 0x6d, 0xd7, 0x31, 0x09, 0xd6, 0xb1, 0x63, 0x12, 0xc6, 0x4e, 0x18, 0x93, 0x50, 0x38, - 0x51, 0x4c, 0xc2, 0xf8, 0xc9, 0x63, 0x12, 0x8a, 0xc3, 0x63, 0x12, 0xec, 0x6f, 0x5a, 0x70, 0x7e, - 0x60, 0xbf, 0x62, 0x9a, 0x74, 0xe0, 0xfb, 0xd1, 0x10, 0x7f, 0x56, 0x8c, 0x41, 0x68, 0xe2, 0x91, - 0x65, 0x98, 0x95, 0x8f, 0xaa, 0x34, 0x7a, 0x1d, 0x37, 0x33, 0x13, 0xd0, 0x46, 0x0a, 0x8e, 0x03, - 0x35, 0xec, 0x7f, 0x6d, 0x41, 0xc5, 0xc8, 0x1f, 0xc0, 0x7d, 0xce, 0xf8, 0x8d, 0x57, 0xda, 0xe7, - 0x8c, 0x5f, 0x75, 0x09, 0x98, 0xb8, 0x86, 0x6e, 0x1b, 0x29, 0xf7, 0xe3, 0x6b, 0x68, 0x56, 0x8a, - 0x12, 0x2a, 0x92, 0xa9, 0x4b, 0xe7, 0xb3, 0x82, 0x99, 0x4c, 0x9d, 0xf6, 0x84, 0xab, 0x59, 0xec, - 0xe2, 0x36, 0x7e, 0xb4, 0x8b, 0x5b, 0x31, 0xdb, 0xc5, 0xcd, 0xbe, 0x0d, 0x53, 0xc2, 0x57, 0xfb, - 0x35, 0xba, 0x77, 0xec, 0x17, 0x6b, 0xd9, 0x68, 0x4f, 0xf9, 0xcc, 0xb1, 0xea, 0xac, 0xdc, 0xfe, - 0xa7, 0x16, 0xa4, 0xde, 0x58, 0x32, 0x6e, 0x60, 0xac, 0xa1, 0x37, 0x30, 0xa6, 0xd5, 0x7e, 0xec, - 0x50, 0xab, 0xfd, 0x4d, 0x20, 0x5d, 0x36, 0x15, 0x92, 0x0b, 0x6d, 0x21, 0xf9, 0xf0, 0xc5, 0xda, - 0x00, 0x06, 0x66, 0xd4, 0xb2, 0xff, 0x89, 0x10, 0xd6, 0x7c, 0x75, 0xe9, 0xe8, 0x06, 0xe8, 0x43, - 0x91, 0x93, 0x92, 0xf6, 0xb7, 0x11, 0x6d, 0xd7, 0x83, 0x59, 0xbf, 0xe2, 0x8e, 0x94, 0x53, 0x9e, - 0x73, 0xb3, 0xff, 0x40, 0xc8, 0x6a, 0x3c, 0xcb, 0x74, 0x0c, 0x59, 0xbb, 0x49, 0x59, 0x6f, 0xe4, - 0xb5, 0x56, 0x66, 0xcb, 0x48, 0x16, 0x00, 0x7a, 0x34, 0x68, 0x52, 0x2f, 0x52, 0x51, 0x54, 0x45, - 0x19, 0xcf, 0xab, 0x4b, 0xd1, 0xc0, 0xb0, 0xbf, 0xc1, 0x26, 0x50, 0xfc, 0x96, 0x33, 0x79, 0x26, - 0xed, 0x08, 0x9c, 0x9e, 0x1c, 0xda, 0x0f, 0xd8, 0x88, 0xad, 0x19, 0x3b, 0x22, 0xb6, 0xe6, 0x59, - 0x98, 0x0c, 0xfc, 0x0e, 0xad, 0x05, 0x5e, 0xda, 0x47, 0x07, 0x59, 0x31, 0xde, 0x42, 0x05, 0xb7, - 0x7f, 0xc5, 0x82, 0xd9, 0x74, 0xf0, 0x5f, 0xee, 0xde, 0xc9, 0x66, 0x86, 0x82, 0xc2, 0xc9, 0x33, - 0x14, 0xd8, 0xef, 0x30, 0x21, 0x23, 0xb7, 0xb9, 0xe3, 0x7a, 0x22, 0xa8, 0x9f, 0xb5, 0xdc, 0xb3, - 0x30, 0x49, 0xe5, 0x9b, 0xb4, 0xc2, 0x8c, 0xac, 0x85, 0x54, 0x4f, 0xd1, 0x2a, 0x38, 0xa9, 0xc1, - 0x8c, 0xba, 0x3c, 0x53, 0xb6, 0x7f, 0x91, 0x8c, 0x44, 0xdb, 0x1a, 0x97, 0x93, 0x60, 0x4c, 0xe3, - 0xdb, 0x5f, 0x84, 0x8a, 0xb1, 0x29, 0xf1, 0xf5, 0xfb, 0x81, 0xd3, 0x1c, 0xf0, 0xb5, 0xbd, 0xc6, - 0x0a, 0x51, 0xc0, 0xf8, 0x15, 0x85, 0x88, 0x4d, 0x4a, 0xad, 0x7b, 0x32, 0x22, 0x49, 0x42, 0x19, - 0xb1, 0x80, 0xb6, 0xe9, 0x03, 0xf5, 0x22, 0x82, 0x22, 0x86, 0xac, 0x10, 0x05, 0xcc, 0x7e, 0x0e, - 0x4a, 0x2a, 0x65, 0x14, 0xcf, 0xbb, 0xa2, 0xcc, 0xe7, 0x66, 0xde, 0x15, 0x3f, 0x88, 0x90, 0x43, - 0xec, 0x37, 0xa0, 0xa4, 0x32, 0x5b, 0x1d, 0x8d, 0xcd, 0x96, 0xa2, 0xd0, 0x73, 0x6f, 0xf8, 0x61, - 0xa4, 0xd2, 0x71, 0x89, 0x1b, 0xbe, 0x5b, 0x2b, 0xbc, 0x0c, 0x35, 0xd4, 0xfe, 0x33, 0x0b, 0x2a, - 0x1b, 0x1b, 0xab, 0xfa, 0xe0, 0x8f, 0xf0, 0x48, 0x28, 0x5a, 0xa8, 0xb6, 0x15, 0x51, 0xd3, 0x95, - 0x40, 0x2c, 0x7c, 0xf3, 0x07, 0xfb, 0xd5, 0x47, 0x1a, 0x99, 0x18, 0x38, 0xa4, 0x26, 0x59, 0x81, - 0x0b, 0x26, 0x44, 0xa6, 0x49, 0x90, 0x6b, 0x24, 0x7f, 0xc4, 0xb8, 0x31, 0x08, 0xc6, 0xac, 0x3a, - 0x69, 0x52, 0x72, 0xbb, 0x37, 0xdf, 0x43, 0x6e, 0x0c, 0x82, 0x31, 0xab, 0x8e, 0xfd, 0x3c, 0xcc, - 0xa4, 0xee, 0xb8, 0x8f, 0x91, 0x9e, 0xe6, 0x77, 0x0a, 0x30, 0x65, 0x5e, 0x75, 0x1e, 0x63, 0xfd, - 0x3a, 0xfe, 0xb6, 0x90, 0x71, 0x3d, 0x59, 0x38, 0xe1, 0xf5, 0xa4, 0x79, 0x1f, 0x3c, 0x7e, 0xb6, - 0xf7, 0xc1, 0xc5, 0x7c, 0xee, 0x83, 0x0d, 0xbf, 0x85, 0x89, 0x87, 0xe7, 0xb7, 0xf0, 0xdb, 0x45, - 0x98, 0x4e, 0xe6, 0x3b, 0x3d, 0x46, 0x4f, 0x3e, 0x37, 0xd0, 0x93, 0x27, 0xbc, 0x0f, 0x29, 0x8c, - 0x7a, 0x1f, 0x32, 0x3e, 0xea, 0x7d, 0x48, 0xf1, 0x14, 0xf7, 0x21, 0x83, 0xb7, 0x19, 0x13, 0xc7, - 0xbe, 0xcd, 0xf8, 0x94, 0x76, 0xf1, 0x9c, 0x4c, 0xb8, 0x00, 0xc5, 0x2e, 0x9e, 0x24, 0xd9, 0x0d, - 0x4b, 0x7e, 0x2b, 0xd3, 0x35, 0xb5, 0x74, 0x84, 0xdd, 0x37, 0xc8, 0xf4, 0xc8, 0x3c, 0xf9, 0x95, - 0xeb, 0x23, 0x27, 0xf0, 0xc6, 0x7c, 0x11, 0x2a, 0x72, 0x3c, 0x71, 0xe5, 0x1b, 0x92, 0x8a, 0x7b, - 0x23, 0x06, 0xa1, 0x89, 0xc7, 0x06, 0x46, 0x2f, 0x9e, 0x20, 0xfc, 0x66, 0xae, 0x92, 0xbc, 0x99, - 0x5b, 0x4f, 0x82, 0x31, 0x8d, 0x6f, 0x7f, 0x01, 0x2e, 0x65, 0x9a, 0x60, 0xb8, 0xf9, 0x9b, 0xeb, - 0x85, 0xb4, 0x25, 0x11, 0x0c, 0x31, 0x52, 0xcf, 0xa0, 0xcc, 0xdf, 0x1d, 0x8a, 0x89, 0x87, 0x50, - 0xb1, 0x7f, 0xb3, 0x00, 0xd3, 0xc9, 0xb7, 0x70, 0xc9, 0x7d, 0x6d, 0xb0, 0xcd, 0xc5, 0x56, 0x2c, - 0xc8, 0x1a, 0x39, 0x34, 0x87, 0x5e, 0xf4, 0xdc, 0xe7, 0xe3, 0x6b, 0x53, 0x27, 0xf4, 0x3c, 0x3b, - 0xc6, 0xf2, 0x86, 0x45, 0xb2, 0xe3, 0xcf, 0xdd, 0xc6, 0xe1, 0xb6, 0xf2, 0x1c, 0x9f, 0x3b, 0xf7, - 0x38, 0x6c, 0x54, 0xb3, 0x42, 0x83, 0x2d, 0xdb, 0x5b, 0x76, 0x69, 0xe0, 0x6e, 0xb9, 0xfa, 0x1d, - 0x7f, 0xbe, 0x72, 0xbf, 0x21, 0xcb, 0x50, 0x43, 0xed, 0x77, 0xc6, 0xa0, 0xcc, 0xb3, 0x83, 0x5d, - 0x0f, 0xfc, 0x2e, 0x7f, 0x30, 0x32, 0x34, 0xce, 0x4c, 0xb2, 0xdb, 0x6e, 0x8e, 0xfa, 0x2a, 0x6b, - 0x4c, 0x51, 0xba, 0xbb, 0x1b, 0x25, 0x98, 0xe0, 0x48, 0x7a, 0x50, 0xda, 0x92, 0xd9, 0x8c, 0x65, - 0xdf, 0x8d, 0x98, 0x91, 0x53, 0xe5, 0x46, 0x16, 0x4d, 0xa0, 0xfe, 0xa1, 0xe6, 0x62, 0x3b, 0x30, - 0x93, 0x4a, 0xef, 0x92, 0x7b, 0x0e, 0xe4, 0xff, 0x35, 0x0e, 0x65, 0x1d, 0x85, 0x46, 0x3e, 0x91, - 0x30, 0x60, 0x95, 0xeb, 0x1f, 0x36, 0x5e, 0x33, 0xdb, 0xf6, 0x5b, 0xef, 0xed, 0x57, 0x67, 0x34, - 0x72, 0xca, 0x18, 0xf5, 0x24, 0x14, 0xfa, 0x41, 0x27, 0x7d, 0x42, 0xbd, 0x83, 0xab, 0xc8, 0xca, - 0xcd, 0xc8, 0xb9, 0xc2, 0xc3, 0x8d, 0x9c, 0xbb, 0x02, 0xe3, 0x9b, 0x7e, 0x6b, 0x2f, 0xfd, 0xfa, - 0x59, 0xdd, 0x6f, 0xed, 0x21, 0x87, 0x90, 0x57, 0x60, 0x5a, 0x86, 0x03, 0x2a, 0x25, 0xa6, 0xc8, - 0xf5, 0x54, 0xed, 0xb8, 0xb0, 0x91, 0x80, 0x62, 0x0a, 0x9b, 0xed, 0xb2, 0xf7, 0x42, 0xdf, 0xe3, - 0x99, 0xad, 0x27, 0x92, 0xb7, 0x9c, 0x37, 0x1b, 0xb7, 0x6f, 0x71, 0x43, 0x9a, 0xc6, 0x48, 0x44, - 0x1c, 0x4e, 0x1e, 0x19, 0x71, 0xb8, 0x2c, 0x68, 0x33, 0x69, 0xf9, 0x8e, 0x32, 0x55, 0x7f, 0x46, - 0xd1, 0x65, 0x65, 0xef, 0xed, 0x1f, 0x62, 0x24, 0xd5, 0x35, 0xb3, 0x62, 0x33, 0xcb, 0xef, 0x5f, - 0x6c, 0xa6, 0x7d, 0x07, 0x66, 0x52, 0xfd, 0xa7, 0x0c, 0x1c, 0x56, 0xb6, 0x81, 0xe3, 0x78, 0xef, - 0xa7, 0xfd, 0x73, 0x0b, 0xce, 0x0f, 0xac, 0x48, 0xc7, 0x0d, 0x92, 0x4d, 0xef, 0x8d, 0x63, 0xa7, - 0xdf, 0x1b, 0x0b, 0x27, 0xdb, 0x1b, 0xeb, 0x9b, 0xdf, 0xfd, 0xc1, 0xe5, 0x0f, 0x7d, 0xef, 0x07, - 0x97, 0x3f, 0xf4, 0x87, 0x3f, 0xb8, 0xfc, 0xa1, 0x77, 0x0e, 0x2e, 0x5b, 0xdf, 0x3d, 0xb8, 0x6c, - 0x7d, 0xef, 0xe0, 0xb2, 0xf5, 0x87, 0x07, 0x97, 0xad, 0xff, 0x72, 0x70, 0xd9, 0xfa, 0xe6, 0x9f, - 0x5c, 0xfe, 0xd0, 0xa7, 0x3f, 0x15, 0xf7, 0xd4, 0xa2, 0xea, 0x29, 0xfe, 0xe3, 0xa3, 0xaa, 0x5f, - 0x16, 0x7b, 0x3b, 0xed, 0x45, 0xd6, 0x53, 0x8b, 0xba, 0x44, 0xf5, 0xd4, 0xff, 0x0b, 0x00, 0x00, - 0xff, 0xff, 0xbc, 0x60, 0x61, 0x0a, 0xfe, 0xa7, 0x00, 0x00, + 0x32, 0x4c, 0xb1, 0xcf, 0x50, 0xf6, 0x8b, 0xa7, 0xa8, 0xec, 0x7f, 0x0a, 0x4a, 0x5d, 0xe7, 0x7e, + 0xa3, 0x1f, 0xb4, 0x1f, 0xfc, 0x50, 0x21, 0x7d, 0x48, 0x05, 0x15, 0xd4, 0xf4, 0xc8, 0x17, 0x2d, + 0x63, 0xc9, 0x11, 0x0e, 0x06, 0x77, 0xf2, 0x5d, 0x72, 0xf4, 0x5e, 0x39, 0x74, 0xf1, 0x19, 0x50, + 0xbd, 0x4b, 0x0f, 0x5d, 0xf5, 0x66, 0x6a, 0xa4, 0x98, 0x20, 0x5a, 0x8d, 0x2c, 0x9f, 0xaa, 0x1a, + 0xb9, 0x94, 0x60, 0x86, 0x29, 0xe6, 0x5c, 0x1e, 0x31, 0xe7, 0xb4, 0x3c, 0x70, 0xaa, 0xf2, 0x34, + 0x12, 0xcc, 0x30, 0xc5, 0x7c, 0xf8, 0x79, 0xb3, 0x72, 0x3a, 0xe7, 0xcd, 0xa9, 0x1c, 0xce, 0x9b, + 0x87, 0xab, 0xe2, 0x67, 0x46, 0x55, 0xc5, 0xc9, 0x0d, 0x20, 0xad, 0x3d, 0xcf, 0xe9, 0xba, 0x4d, + 0xb9, 0x58, 0xf2, 0x6d, 0x73, 0x9a, 0xdb, 0x23, 0xe6, 0xe5, 0x42, 0x46, 0x96, 0x07, 0x30, 0x30, + 0xa3, 0x16, 0x89, 0xa0, 0xd4, 0x53, 0x1a, 0xd7, 0x4c, 0x1e, 0xa3, 0x5f, 0x69, 0x60, 0xc2, 0x6f, + 0x84, 0x4d, 0x3c, 0x55, 0x82, 0x9a, 0x13, 0x59, 0x85, 0xf3, 0x5d, 0xd7, 0x5b, 0xf7, 0x5b, 0xe1, + 0x3a, 0x0d, 0xa4, 0xb5, 0xa5, 0x41, 0xa3, 0xb9, 0x59, 0xde, 0x36, 0xfc, 0x04, 0xbd, 0x96, 0x01, + 0xc7, 0xcc, 0x5a, 0xf6, 0xff, 0xb2, 0x60, 0x76, 0xa9, 0xe3, 0xf7, 0x5b, 0x77, 0x9c, 0xa8, 0xb9, + 0x2d, 0xdc, 0x14, 0xc8, 0x2b, 0x50, 0x72, 0xbd, 0x88, 0x06, 0xbb, 0x4e, 0x47, 0xee, 0x4f, 0xb6, + 0x32, 0x9f, 0xae, 0xc8, 0xf2, 0xf7, 0xf6, 0xab, 0xd3, 0xcb, 0xfd, 0x80, 0x5b, 0xa9, 0xc5, 0x6a, + 0x85, 0xba, 0x0e, 0xf9, 0x96, 0x05, 0x67, 0x85, 0xa3, 0xc3, 0xb2, 0x13, 0x39, 0xaf, 0xf7, 0x69, + 0xe0, 0x52, 0xe5, 0xea, 0x30, 0xe2, 0x42, 0x95, 0x96, 0x55, 0x31, 0xd8, 0x8b, 0x15, 0xf5, 0xb5, + 0x34, 0x67, 0x1c, 0x14, 0xc6, 0xfe, 0x95, 0x02, 0x3c, 0x3e, 0x94, 0x16, 0x99, 0x87, 0x31, 0xb7, + 0x25, 0x3f, 0x1d, 0x24, 0xdd, 0xb1, 0x95, 0x16, 0x8e, 0xb9, 0x2d, 0xb2, 0xc0, 0x75, 0xce, 0x80, + 0x86, 0xa1, 0xba, 0x70, 0x2e, 0x6b, 0xf5, 0x50, 0x96, 0xa2, 0x81, 0x41, 0xaa, 0x50, 0xe4, 0xfe, + 0xc3, 0xf2, 0x3c, 0xc1, 0xb5, 0x58, 0xee, 0xaa, 0x8b, 0xa2, 0x9c, 0x7c, 0xc9, 0x02, 0x10, 0x02, + 0xb2, 0xd3, 0x88, 0xdc, 0x25, 0x31, 0xdf, 0x66, 0x62, 0x94, 0x85, 0x94, 0xf1, 0x7f, 0x34, 0xb8, + 0x92, 0x0d, 0x98, 0x60, 0x0a, 0xad, 0xdf, 0x7a, 0xe0, 0x4d, 0x91, 0xdf, 0x44, 0xad, 0x73, 0x1a, + 0x28, 0x69, 0xb1, 0xb6, 0x0a, 0x68, 0xd4, 0x0f, 0x3c, 0xd6, 0xb4, 0x7c, 0x1b, 0x2c, 0x09, 0x29, + 0x50, 0x97, 0xa2, 0x81, 0x61, 0xff, 0xf3, 0x31, 0x38, 0x9f, 0x25, 0x3a, 0xdb, 0x6d, 0x26, 0x84, + 0xb4, 0xf2, 0x68, 0xfc, 0x53, 0xf9, 0xb7, 0x8f, 0xf4, 0xd9, 0xd1, 0xd7, 0x14, 0xd2, 0x81, 0x52, + 0xf2, 0x25, 0x3f, 0xa5, 0x5b, 0x68, 0xec, 0x01, 0x5b, 0x48, 0x53, 0x4e, 0xb5, 0xd2, 0x65, 0x18, + 0x0f, 0x59, 0xcf, 0x17, 0x92, 0xd7, 0x1d, 0xbc, 0x8f, 0x38, 0x84, 0x61, 0xf4, 0x3d, 0x37, 0x92, + 0x41, 0x37, 0x1a, 0xe3, 0xb6, 0xe7, 0x46, 0xc8, 0x21, 0xf6, 0x37, 0xc7, 0x60, 0x7e, 0xf8, 0x47, + 0x91, 0x6f, 0x5a, 0x00, 0x2d, 0x76, 0x5c, 0x09, 0xb9, 0xe7, 0xba, 0xf0, 0x71, 0x72, 0x4e, 0xab, + 0x0d, 0x97, 0x15, 0xa7, 0xd8, 0xf9, 0x4e, 0x17, 0x85, 0x68, 0x08, 0x42, 0xae, 0xa8, 0xa1, 0xcf, + 0xaf, 0x6a, 0xc4, 0x64, 0xd2, 0x75, 0xd6, 0x34, 0x04, 0x0d, 0x2c, 0x76, 0x1e, 0xf5, 0x9c, 0x2e, + 0x0d, 0x7b, 0x8e, 0x0e, 0x61, 0xe2, 0xe7, 0xd1, 0x9b, 0xaa, 0x10, 0x63, 0xb8, 0xdd, 0x81, 0xa7, + 0x8e, 0x21, 0x67, 0x4e, 0x11, 0x22, 0xf6, 0xff, 0xb0, 0xe0, 0x31, 0xe9, 0x7e, 0xf6, 0xff, 0x8d, + 0x2f, 0xe3, 0x9f, 0x5b, 0xf0, 0xc4, 0x90, 0x6f, 0x7e, 0x08, 0x2e, 0x8d, 0x6f, 0x25, 0x5d, 0x1a, + 0x6f, 0x8f, 0x3a, 0xa4, 0x33, 0xbf, 0x63, 0x88, 0x67, 0xe3, 0x1f, 0x14, 0xe0, 0x0c, 0x5b, 0xb6, + 0x5a, 0x7e, 0x3b, 0xa7, 0x8d, 0xf3, 0x29, 0x28, 0x7e, 0x8e, 0x6d, 0x40, 0xe9, 0x41, 0xc6, 0x77, + 0x25, 0x14, 0x30, 0xf2, 0x65, 0x0b, 0x26, 0x3f, 0x27, 0xf7, 0x54, 0x71, 0x96, 0x1b, 0x71, 0x31, + 0x4c, 0x7c, 0xc3, 0x82, 0xdc, 0x21, 0x45, 0xe0, 0x89, 0x76, 0x60, 0x54, 0x5b, 0xa9, 0xe2, 0x4c, + 0x9e, 0x85, 0xc9, 0x2d, 0x3f, 0xe8, 0xf6, 0x3b, 0x4e, 0x3a, 0xda, 0xf1, 0x9a, 0x28, 0x46, 0x05, + 0x67, 0x93, 0xdc, 0xe9, 0xb9, 0x6f, 0xd0, 0x20, 0x14, 0x71, 0x08, 0x89, 0x49, 0x5e, 0xd3, 0x10, + 0x34, 0xb0, 0x78, 0x9d, 0x76, 0x3b, 0xa0, 0x6d, 0x27, 0xf2, 0x03, 0xbe, 0x73, 0x98, 0x75, 0x34, + 0x04, 0x0d, 0xac, 0xf9, 0x4f, 0xc0, 0x94, 0x29, 0xfc, 0x89, 0x82, 0x58, 0x3e, 0x09, 0xd2, 0x93, + 0x31, 0xb5, 0x24, 0x59, 0xc7, 0x59, 0x92, 0xec, 0xff, 0x30, 0x06, 0x86, 0x75, 0xe8, 0x21, 0x4c, + 0x75, 0x2f, 0x31, 0xd5, 0x47, 0xb4, 0x6c, 0x18, 0xb6, 0xae, 0x61, 0x21, 0x7d, 0xbb, 0xa9, 0x90, + 0xbe, 0x9b, 0xb9, 0x71, 0x3c, 0x3c, 0xa2, 0xef, 0xfb, 0x16, 0x3c, 0x11, 0x23, 0x0f, 0x1a, 0x6e, + 0x8f, 0x5e, 0xb7, 0x5f, 0x84, 0x8a, 0x13, 0x57, 0x93, 0x13, 0xcb, 0x88, 0xa7, 0xd2, 0x20, 0x34, + 0xf1, 0xe2, 0x58, 0x90, 0xc2, 0x03, 0xc6, 0x82, 0x8c, 0x1f, 0x1e, 0x0b, 0x62, 0xff, 0x68, 0x0c, + 0x2e, 0x0e, 0x7e, 0x99, 0xe9, 0x20, 0x7d, 0xf4, 0xb7, 0xa5, 0x5d, 0xa8, 0xc7, 0x1e, 0xd8, 0x85, + 0xba, 0x70, 0x5c, 0x17, 0x6a, 0xed, 0xb8, 0x3c, 0x7e, 0xea, 0x8e, 0xcb, 0x0d, 0xb8, 0xa0, 0xbc, + 0x24, 0xaf, 0xf9, 0x81, 0x0c, 0x88, 0x50, 0x2b, 0x48, 0xa9, 0x7e, 0x51, 0x56, 0xb9, 0x80, 0x59, + 0x48, 0x98, 0x5d, 0xd7, 0xfe, 0x7e, 0x01, 0xce, 0xc5, 0xcd, 0xbe, 0xe4, 0x7b, 0x2d, 0x97, 0x3b, + 0xda, 0xbc, 0x0c, 0xe3, 0xd1, 0x5e, 0x4f, 0x35, 0xf6, 0x5f, 0x56, 0xe2, 0x6c, 0xec, 0xf5, 0x58, + 0x6f, 0x3f, 0x96, 0x51, 0x85, 0x9b, 0xce, 0x79, 0x25, 0xb2, 0xaa, 0x67, 0x87, 0xe8, 0x81, 0x17, + 0x92, 0xa3, 0xf9, 0xbd, 0xfd, 0x6a, 0x46, 0x6a, 0x83, 0x05, 0x4d, 0x29, 0x39, 0xe6, 0xc9, 0x5d, + 0x98, 0xee, 0x38, 0x61, 0x74, 0xbb, 0xd7, 0x72, 0x22, 0xba, 0xe1, 0x4a, 0x17, 0x96, 0x93, 0xc5, + 0x90, 0xe8, 0xbb, 0xfe, 0xd5, 0x04, 0x25, 0x4c, 0x51, 0x26, 0xbb, 0x40, 0x58, 0xc9, 0x46, 0xe0, + 0x78, 0xa1, 0xf8, 0x2a, 0xc6, 0xef, 0xe4, 0x01, 0x41, 0xfa, 0xe8, 0xbc, 0x3a, 0x40, 0x0d, 0x33, + 0x38, 0x90, 0xa7, 0x61, 0x22, 0xa0, 0x4e, 0xa8, 0xb7, 0x03, 0x3d, 0xff, 0x91, 0x97, 0xa2, 0x84, + 0x9a, 0x13, 0x6a, 0xe2, 0x88, 0x09, 0xf5, 0xc7, 0x16, 0x4c, 0xc7, 0xdd, 0xf4, 0x10, 0x54, 0x8f, + 0x6e, 0x52, 0xf5, 0xb8, 0x9e, 0xd7, 0x92, 0x38, 0x44, 0xdb, 0xf8, 0xb3, 0x49, 0xf3, 0xfb, 0x78, + 0xd4, 0xc2, 0xe7, 0x4d, 0x27, 0x76, 0x2b, 0x8f, 0x50, 0xb2, 0x84, 0xb6, 0x77, 0xa8, 0xf7, 0x3a, + 0xd3, 0x75, 0x5a, 0x52, 0x8f, 0x91, 0xc3, 0x5e, 0xeb, 0x3a, 0x4a, 0xbf, 0xc9, 0xd2, 0x75, 0x54, + 0x1d, 0x72, 0x1b, 0x1e, 0xeb, 0x05, 0x3e, 0x0f, 0xae, 0x5f, 0xa6, 0x4e, 0xab, 0xe3, 0x7a, 0x54, + 0x99, 0x79, 0x84, 0xab, 0xc9, 0x13, 0x07, 0xfb, 0xd5, 0xc7, 0xd6, 0xb3, 0x51, 0x70, 0x58, 0xdd, + 0x64, 0x78, 0xe6, 0xf8, 0x31, 0xc2, 0x33, 0x7f, 0x51, 0x1b, 0x53, 0x75, 0x24, 0xc0, 0xa7, 0xf3, + 0xea, 0xca, 0xac, 0x98, 0x00, 0x3d, 0xa4, 0x6a, 0x92, 0x29, 0x6a, 0xf6, 0xc3, 0x2d, 0x76, 0x13, + 0x0f, 0x68, 0xb1, 0x8b, 0x83, 0x3f, 0x26, 0xdf, 0xcf, 0xe0, 0x8f, 0xd2, 0x07, 0x2a, 0xf8, 0xe3, + 0x5b, 0x16, 0x9c, 0x73, 0x06, 0xc3, 0xae, 0xf3, 0x31, 0x1e, 0x67, 0xc4, 0x73, 0xd7, 0x9f, 0x90, + 0x42, 0x66, 0x45, 0xb7, 0x63, 0x96, 0x28, 0xf6, 0xbb, 0x45, 0x98, 0x4d, 0x2b, 0x49, 0xa7, 0x1f, + 0x9f, 0xfa, 0xcb, 0x16, 0xcc, 0xaa, 0x09, 0x2e, 0x78, 0xea, 0x23, 0xc6, 0x6a, 0x4e, 0xeb, 0x8a, + 0x50, 0xf7, 0x74, 0xda, 0x90, 0x8d, 0x14, 0x37, 0x1c, 0xe0, 0x4f, 0xde, 0x84, 0x8a, 0xbe, 0x55, + 0x79, 0xa0, 0x60, 0x55, 0x1e, 0x4f, 0x59, 0x8b, 0x49, 0xa0, 0x49, 0x8f, 0xbc, 0x6b, 0x01, 0x34, + 0xd5, 0x4e, 0x9c, 0x53, 0x28, 0x50, 0x86, 0xb6, 0x10, 0xeb, 0xf3, 0xba, 0x28, 0x44, 0x83, 0x31, + 0xf9, 0x15, 0x7e, 0x9f, 0xa2, 0x47, 0x82, 0x48, 0x47, 0x32, 0xb2, 0xdb, 0xfb, 0x21, 0xba, 0x73, + 0xac, 0xed, 0x19, 0xa0, 0x10, 0x13, 0x42, 0xd8, 0x2f, 0x83, 0x76, 0x54, 0x66, 0x2b, 0x2b, 0x77, + 0x55, 0x5e, 0x77, 0xa2, 0x6d, 0x39, 0x04, 0xf5, 0xca, 0x7a, 0x4d, 0x01, 0x30, 0xc6, 0xb1, 0x3f, + 0x0b, 0xd3, 0xaf, 0x06, 0x4e, 0x6f, 0xdb, 0xe5, 0xf7, 0x16, 0xec, 0x7c, 0xfc, 0x2c, 0x4c, 0x3a, + 0xad, 0x56, 0x56, 0x86, 0x9b, 0x9a, 0x28, 0x46, 0x05, 0x3f, 0xd6, 0x51, 0xd8, 0xfe, 0x7d, 0x0b, + 0x48, 0x7c, 0xf7, 0xeb, 0x7a, 0xed, 0x35, 0x27, 0x6a, 0x6e, 0xb3, 0x23, 0xdc, 0x36, 0x2f, 0xcd, + 0x3a, 0xc2, 0x5d, 0xd7, 0x10, 0x34, 0xb0, 0xc8, 0xdb, 0x50, 0x11, 0xff, 0xde, 0xd0, 0x07, 0xc4, + 0xd1, 0xfd, 0xad, 0xf9, 0x9e, 0xc7, 0x65, 0x12, 0xa3, 0xf0, 0x7a, 0xcc, 0x01, 0x4d, 0x76, 0xac, + 0xa9, 0x56, 0xbc, 0xad, 0x4e, 0xff, 0x7e, 0x6b, 0x33, 0x6e, 0xaa, 0x5e, 0xe0, 0x6f, 0xb9, 0x1d, + 0x9a, 0x6e, 0xaa, 0x75, 0x51, 0x8c, 0x0a, 0x7e, 0xbc, 0xa6, 0xfa, 0x37, 0x16, 0x9c, 0x5f, 0x09, + 0x23, 0xd7, 0x5f, 0xa6, 0x61, 0xc4, 0x76, 0x3e, 0xb6, 0x3e, 0xf6, 0x3b, 0xc7, 0x89, 0x39, 0x58, + 0x86, 0x59, 0x79, 0x0f, 0xdd, 0xdf, 0x0c, 0x69, 0x64, 0x1c, 0x35, 0xf4, 0x3c, 0x5e, 0x4a, 0xc1, + 0x71, 0xa0, 0x06, 0xa3, 0x22, 0x2f, 0xa4, 0x63, 0x2a, 0x85, 0x24, 0x95, 0x46, 0x0a, 0x8e, 0x03, + 0x35, 0xec, 0xef, 0x15, 0xe0, 0x1c, 0xff, 0x8c, 0x54, 0xbc, 0xd0, 0xd7, 0x87, 0xc5, 0x0b, 0x8d, + 0x38, 0x95, 0x39, 0xaf, 0x07, 0x88, 0x16, 0xfa, 0x5b, 0x16, 0xcc, 0xb4, 0x92, 0x2d, 0x9d, 0x8f, + 0x5d, 0x2e, 0xab, 0x0f, 0x85, 0xdb, 0x5d, 0xaa, 0x10, 0xd3, 0xfc, 0xc9, 0xaf, 0x5a, 0x30, 0x93, + 0x14, 0x53, 0xad, 0xee, 0xa7, 0xd0, 0x48, 0xda, 0x4f, 0x3e, 0x59, 0x1e, 0x62, 0x5a, 0x04, 0xfb, + 0xbb, 0x63, 0xb2, 0x4b, 0x4f, 0x23, 0x18, 0x86, 0xdc, 0x83, 0x72, 0xd4, 0x09, 0x45, 0xa1, 0xfc, + 0xda, 0x11, 0x0f, 0xad, 0x1b, 0xab, 0x0d, 0xe1, 0x02, 0x12, 0xeb, 0x95, 0xb2, 0x84, 0xe9, 0xc7, + 0x8a, 0x17, 0x67, 0xdc, 0xec, 0x49, 0xc6, 0xb9, 0x9c, 0x96, 0x37, 0x96, 0xd6, 0xd3, 0x8c, 0x65, + 0x09, 0x63, 0xac, 0x78, 0xd9, 0xbf, 0x69, 0x41, 0xf9, 0x86, 0xaf, 0xd6, 0x91, 0x9f, 0xc9, 0xc1, + 0x16, 0xa5, 0x55, 0x56, 0xad, 0xb4, 0xc4, 0xa7, 0xa0, 0x57, 0x12, 0x96, 0xa8, 0x27, 0x0d, 0xda, + 0x0b, 0x3c, 0xd1, 0x1f, 0x23, 0x75, 0xc3, 0xdf, 0x1c, 0x6a, 0x3e, 0xfe, 0xb5, 0x22, 0x9c, 0x79, + 0xcd, 0xd9, 0xa3, 0x5e, 0xe4, 0x9c, 0x7c, 0x93, 0x78, 0x11, 0x2a, 0x4e, 0x8f, 0xdf, 0x65, 0x1a, + 0xc7, 0x90, 0xd8, 0xb8, 0x13, 0x83, 0xd0, 0xc4, 0x8b, 0x17, 0x34, 0x11, 0x99, 0x92, 0xb5, 0x14, + 0x2d, 0xa5, 0xe0, 0x38, 0x50, 0x83, 0xdc, 0x00, 0x22, 0xa3, 0xb9, 0x6b, 0xcd, 0xa6, 0xdf, 0xf7, + 0xc4, 0x92, 0x26, 0xec, 0x3e, 0xfa, 0x3c, 0xbc, 0x36, 0x80, 0x81, 0x19, 0xb5, 0xc8, 0x67, 0x60, + 0xae, 0xc9, 0x29, 0xcb, 0xd3, 0x91, 0x49, 0x51, 0x9c, 0x90, 0x75, 0xac, 0xc7, 0xd2, 0x10, 0x3c, + 0x1c, 0x4a, 0x81, 0x49, 0x1a, 0x46, 0x7e, 0xe0, 0xb4, 0xa9, 0x49, 0x77, 0x22, 0x29, 0x69, 0x63, + 0x00, 0x03, 0x33, 0x6a, 0x91, 0x2f, 0x40, 0x39, 0xda, 0x0e, 0x68, 0xb8, 0xed, 0x77, 0x5a, 0xd2, + 0xf7, 0x64, 0x44, 0x63, 0xa0, 0xec, 0xfd, 0x0d, 0x45, 0xd5, 0x18, 0xde, 0xaa, 0x08, 0x63, 0x9e, + 0x24, 0x80, 0x89, 0xb0, 0xe9, 0xf7, 0x68, 0x28, 0x4f, 0x15, 0x37, 0x72, 0xe1, 0xce, 0x8d, 0x5b, + 0x86, 0x19, 0x92, 0x73, 0x40, 0xc9, 0xc9, 0xfe, 0xbd, 0x31, 0x98, 0x32, 0x11, 0x8f, 0xb1, 0x36, + 0x7d, 0xd9, 0x82, 0xa9, 0xa6, 0xef, 0x45, 0x81, 0xdf, 0x89, 0xb3, 0x14, 0x8c, 0xae, 0x51, 0x30, + 0x52, 0xcb, 0x34, 0x72, 0xdc, 0x8e, 0x61, 0xad, 0x33, 0xd8, 0x60, 0x82, 0x29, 0xf9, 0x9a, 0x05, + 0x33, 0xb1, 0xab, 0x62, 0x6c, 0xeb, 0xcb, 0x55, 0x10, 0xbd, 0xd4, 0x5f, 0x4d, 0x72, 0xc2, 0x34, + 0x6b, 0x7b, 0x13, 0x66, 0xd3, 0xbd, 0xcd, 0x9a, 0xb2, 0xe7, 0xc8, 0xb9, 0x5e, 0x88, 0x9b, 0x72, + 0xdd, 0x09, 0x43, 0xe4, 0x10, 0xf2, 0x1c, 0x94, 0xba, 0x4e, 0xd0, 0x76, 0x3d, 0xa7, 0xc3, 0x5b, + 0xb1, 0x60, 0x2c, 0x48, 0xb2, 0x1c, 0x35, 0x86, 0xfd, 0x51, 0x98, 0x5a, 0x73, 0xbc, 0x36, 0x6d, + 0xc9, 0x75, 0xf8, 0xe8, 0x70, 0xcc, 0x3f, 0x1d, 0x87, 0x8a, 0x71, 0x7c, 0x3c, 0xfd, 0x73, 0x56, + 0x22, 0xfb, 0x4e, 0x21, 0xc7, 0xec, 0x3b, 0x9f, 0x02, 0xd8, 0x72, 0x3d, 0x37, 0xdc, 0x7e, 0xc0, + 0xbc, 0x3e, 0xfc, 0x6e, 0xfe, 0x9a, 0xa6, 0x80, 0x06, 0xb5, 0xf8, 0x02, 0xb4, 0x78, 0x48, 0x8a, + 0xbc, 0x77, 0x2d, 0x63, 0xbb, 0x99, 0xc8, 0xc3, 0xe1, 0xc3, 0xe8, 0x98, 0x05, 0xb5, 0xfd, 0x88, + 0xbb, 0xa9, 0xc3, 0x76, 0xa5, 0x0d, 0x28, 0x05, 0x34, 0xec, 0x77, 0xe9, 0x03, 0x65, 0xe0, 0xe1, + 0xae, 0x37, 0x28, 0xeb, 0xa3, 0xa6, 0x34, 0xff, 0x32, 0x9c, 0x49, 0x88, 0x70, 0xa2, 0x1b, 0x26, + 0x1f, 0x32, 0x6d, 0x14, 0x0f, 0x72, 0xdf, 0xc4, 0xfa, 0xa2, 0x63, 0x64, 0xde, 0xd1, 0x7d, 0x21, + 0x1c, 0xac, 0x04, 0xcc, 0xfe, 0xd1, 0x04, 0x48, 0x1f, 0x86, 0x63, 0x2c, 0x57, 0xe6, 0xcd, 0xe5, + 0xd8, 0x03, 0xdc, 0x5c, 0xde, 0x80, 0x29, 0xd7, 0x73, 0x23, 0xd7, 0xe9, 0x70, 0xfb, 0x93, 0xdc, + 0x4e, 0x95, 0x07, 0xfa, 0xd4, 0x8a, 0x01, 0xcb, 0xa0, 0x93, 0xa8, 0x4b, 0x5e, 0x87, 0x22, 0xdf, + 0x6f, 0xe4, 0x00, 0x3e, 0xb9, 0xa3, 0x05, 0xf7, 0xb1, 0x11, 0x61, 0x69, 0x82, 0x12, 0x3f, 0x7c, + 0x88, 0xd4, 0x43, 0xfa, 0xf8, 0x2d, 0xc7, 0x71, 0x7c, 0xf8, 0x48, 0xc1, 0x71, 0xa0, 0x06, 0xa3, + 0xb2, 0xe5, 0xb8, 0x9d, 0x7e, 0x40, 0x63, 0x2a, 0x13, 0x49, 0x2a, 0xd7, 0x52, 0x70, 0x1c, 0xa8, + 0x41, 0xb6, 0x60, 0x4a, 0x96, 0x09, 0xb7, 0xb9, 0xc9, 0x07, 0xfc, 0x4a, 0xee, 0x1e, 0x79, 0xcd, + 0xa0, 0x84, 0x09, 0xba, 0xa4, 0x0f, 0x67, 0x5d, 0xaf, 0xe9, 0x7b, 0xcd, 0x4e, 0x3f, 0x74, 0x77, + 0x69, 0x1c, 0x13, 0xf6, 0x20, 0xcc, 0x2e, 0x1c, 0xec, 0x57, 0xcf, 0xae, 0xa4, 0xc9, 0xe1, 0x20, + 0x07, 0xf2, 0x45, 0x0b, 0x2e, 0x34, 0x7d, 0x2f, 0xe4, 0xa9, 0x2b, 0x76, 0xe9, 0xd5, 0x20, 0xf0, + 0x03, 0xc1, 0xbb, 0xfc, 0x80, 0xbc, 0xb9, 0xd9, 0x73, 0x29, 0x8b, 0x24, 0x66, 0x73, 0x22, 0x6f, + 0x41, 0xa9, 0x17, 0xf8, 0xbb, 0x6e, 0x8b, 0x06, 0xd2, 0x05, 0x73, 0x35, 0x8f, 0x7c, 0x3e, 0xeb, + 0x92, 0x66, 0xbc, 0xf4, 0xa8, 0x12, 0xd4, 0xfc, 0xec, 0xff, 0x53, 0x81, 0xe9, 0x24, 0x3a, 0xf9, + 0x39, 0x80, 0x5e, 0xe0, 0x77, 0x69, 0xb4, 0x4d, 0x75, 0x6c, 0xcf, 0xcd, 0x51, 0x33, 0xb6, 0x28, + 0x7a, 0xca, 0x6d, 0x89, 0x2d, 0x17, 0x71, 0x29, 0x1a, 0x1c, 0x49, 0x00, 0x93, 0x3b, 0x62, 0xdb, + 0x95, 0x5a, 0xc8, 0x6b, 0xb9, 0xe8, 0x4c, 0x92, 0x33, 0x0f, 0x4a, 0x91, 0x45, 0xa8, 0x18, 0x91, + 0x4d, 0x28, 0xdc, 0xa3, 0x9b, 0xf9, 0xa4, 0x0b, 0xb8, 0x43, 0xe5, 0x69, 0xa6, 0x3e, 0x79, 0xb0, + 0x5f, 0x2d, 0xdc, 0xa1, 0x9b, 0xc8, 0x88, 0xb3, 0xef, 0x6a, 0x09, 0xdf, 0x05, 0xb9, 0x54, 0xbc, + 0x96, 0xa3, 0x23, 0x84, 0xf8, 0x2e, 0x59, 0x84, 0x8a, 0x11, 0x79, 0x0b, 0xca, 0xf7, 0x9c, 0x5d, + 0xba, 0x15, 0xf8, 0x5e, 0x24, 0x7d, 0xe5, 0x46, 0x0c, 0xf7, 0xb8, 0xa3, 0xc8, 0x49, 0xbe, 0x7c, + 0x7b, 0xd7, 0x85, 0x18, 0xb3, 0x23, 0xbb, 0x50, 0xf2, 0xe8, 0x3d, 0xa4, 0x1d, 0xb7, 0x99, 0x4f, + 0x78, 0xc5, 0x4d, 0x49, 0x4d, 0x72, 0xe6, 0xfb, 0x9e, 0x2a, 0x43, 0xcd, 0x8b, 0xf5, 0xe5, 0x5d, + 0x7f, 0x53, 0x2e, 0x54, 0x23, 0xf6, 0xa5, 0x3e, 0x99, 0x8a, 0xbe, 0xbc, 0xe1, 0x6f, 0x22, 0x23, + 0xce, 0xe6, 0x48, 0x53, 0x3b, 0x6a, 0xc9, 0x65, 0xea, 0x66, 0xbe, 0x0e, 0x6a, 0x62, 0x8e, 0xc4, + 0xa5, 0x68, 0x70, 0x64, 0x6d, 0xdb, 0x96, 0xc6, 0x4a, 0xb9, 0x50, 0x8d, 0xd8, 0xb6, 0x49, 0xd3, + 0xa7, 0x68, 0x5b, 0x55, 0x86, 0x9a, 0x17, 0xe3, 0xeb, 0x4a, 0xcb, 0x5f, 0x3e, 0x4b, 0x55, 0xd2, + 0x8e, 0x28, 0xf8, 0xaa, 0x32, 0xd4, 0xbc, 0x58, 0x7b, 0x87, 0x3b, 0x7b, 0xf7, 0x9c, 0xce, 0x8e, + 0xeb, 0xb5, 0x65, 0xac, 0xea, 0xa8, 0x69, 0xb8, 0x77, 0xf6, 0xee, 0x08, 0x7a, 0x66, 0x7b, 0xc7, + 0xa5, 0x68, 0x70, 0x24, 0x7f, 0xcf, 0x82, 0x89, 0x5e, 0xa7, 0xdf, 0x76, 0xbd, 0xb9, 0xa9, 0x3c, + 0x9c, 0x98, 0x92, 0x4b, 0xee, 0xc2, 0x3a, 0x27, 0x2d, 0x14, 0xc5, 0x9f, 0xd4, 0x7e, 0x97, 0xbc, + 0xf0, 0xab, 0x7f, 0x52, 0x9d, 0xa3, 0x5e, 0xd3, 0x6f, 0xb9, 0x5e, 0x7b, 0xf1, 0x6e, 0xe8, 0x7b, + 0x0b, 0xe8, 0xdc, 0x53, 0x3a, 0xba, 0x94, 0x69, 0xfe, 0xe3, 0x50, 0x31, 0x48, 0x1c, 0xa5, 0xe8, + 0x4d, 0x99, 0x8a, 0xde, 0x6f, 0x4e, 0xc0, 0x94, 0x99, 0x7c, 0xf3, 0x18, 0xda, 0x97, 0x3e, 0x71, + 0x8c, 0x9d, 0xe4, 0xc4, 0xc1, 0x8e, 0x98, 0xc6, 0x05, 0x97, 0x32, 0x6f, 0xad, 0xe4, 0xa6, 0x70, + 0xc7, 0x47, 0x4c, 0xa3, 0x30, 0xc4, 0x04, 0xd3, 0x13, 0xf8, 0xbc, 0x30, 0xb5, 0x55, 0x28, 0x76, + 0xc5, 0xa4, 0xda, 0x9a, 0x50, 0xd5, 0xae, 0x00, 0xc4, 0x59, 0x22, 0xe5, 0xc5, 0xa7, 0xd6, 0x87, + 0x8d, 0xec, 0x95, 0x06, 0x16, 0x79, 0x1a, 0x26, 0x98, 0xea, 0x43, 0x5b, 0x32, 0x94, 0x5e, 0x9f, + 0xe3, 0xaf, 0xf1, 0x52, 0x94, 0x50, 0xf2, 0x12, 0xd3, 0x52, 0x63, 0x85, 0x45, 0x46, 0xc8, 0x9f, + 0x8f, 0xb5, 0xd4, 0x18, 0x86, 0x09, 0x4c, 0x26, 0x3a, 0x65, 0xfa, 0x05, 0x5f, 0x1b, 0x0c, 0xd1, + 0xb9, 0xd2, 0x81, 0x02, 0xc6, 0xed, 0x4a, 0x29, 0x7d, 0x84, 0xcf, 0xe9, 0xa2, 0x61, 0x57, 0x4a, + 0xc1, 0x71, 0xa0, 0x06, 0xfb, 0x18, 0x79, 0x67, 0x5b, 0x11, 0x0e, 0xd3, 0x43, 0x6e, 0x5b, 0x7f, + 0xde, 0x3c, 0x6b, 0xe5, 0x38, 0x87, 0xc4, 0xa8, 0x3d, 0xfe, 0x61, 0x6b, 0xb4, 0x63, 0xd1, 0x67, + 0x61, 0x3a, 0xb9, 0x0b, 0xe5, 0x7e, 0xf3, 0xf1, 0x0f, 0x27, 0xe0, 0xdc, 0xcd, 0xb6, 0xeb, 0xa5, + 0x13, 0x9d, 0x65, 0xbd, 0x6a, 0x60, 0x9d, 0xf8, 0x55, 0x03, 0x1d, 0x93, 0x27, 0xdf, 0x0c, 0xc8, + 0x8e, 0xc9, 0x53, 0x0f, 0x38, 0x24, 0x71, 0xc9, 0x1f, 0x5b, 0xf0, 0xa4, 0xd3, 0x12, 0xe7, 0x02, + 0xa7, 0x23, 0x4b, 0x8d, 0x64, 0xdc, 0x72, 0x46, 0x87, 0x23, 0xee, 0xf2, 0x83, 0x1f, 0xbf, 0x50, + 0x3b, 0x84, 0xab, 0xe8, 0xf1, 0x9f, 0x90, 0x5f, 0xf0, 0xe4, 0x61, 0xa8, 0x78, 0xa8, 0xf8, 0xe4, + 0xaf, 0xc1, 0x4c, 0xe2, 0x83, 0xa5, 0x25, 0xbc, 0x2c, 0x2e, 0x2c, 0x1a, 0x49, 0x10, 0xa6, 0x71, + 0xc9, 0x77, 0x2d, 0x98, 0x13, 0x66, 0xd7, 0x8c, 0xa6, 0x11, 0x37, 0xb5, 0x7e, 0xfe, 0x4d, 0xb3, + 0x34, 0x84, 0xa3, 0x68, 0x96, 0xd8, 0x0e, 0x3b, 0x04, 0x0d, 0x87, 0x8a, 0x3c, 0x7f, 0x0b, 0x3e, + 0x74, 0x64, 0xbb, 0x9f, 0x28, 0x75, 0xfb, 0x6b, 0x70, 0xf1, 0x50, 0x69, 0x4f, 0x34, 0x13, 0xbf, + 0x63, 0xc1, 0x94, 0x99, 0xb0, 0x89, 0x3c, 0x07, 0xa5, 0xc8, 0xdf, 0xa1, 0xde, 0xed, 0x40, 0x79, + 0x33, 0xeb, 0x55, 0x60, 0x83, 0x97, 0xe3, 0x2a, 0x6a, 0x0c, 0x86, 0xdd, 0xec, 0xb8, 0xd4, 0x8b, + 0x56, 0x5a, 0x72, 0x0e, 0x68, 0xec, 0x25, 0x51, 0xbe, 0x8c, 0x1a, 0x43, 0x38, 0x20, 0xb2, 0xdf, + 0x0d, 0xda, 0x0c, 0xa8, 0x8a, 0x7d, 0x30, 0x1c, 0x10, 0x63, 0x18, 0x26, 0x30, 0x89, 0xad, 0xed, + 0xbf, 0xe3, 0xf1, 0xa5, 0x4f, 0xca, 0x5e, 0xfb, 0x3b, 0x16, 0x94, 0xc5, 0xfd, 0x05, 0xd2, 0xad, + 0x94, 0xff, 0x71, 0xca, 0xc2, 0x52, 0x5b, 0x5f, 0xc9, 0xf2, 0x3f, 0xbe, 0x0c, 0xe3, 0x3b, 0xae, + 0xa7, 0xbe, 0x44, 0xef, 0xd9, 0xaf, 0xb9, 0x5e, 0x0b, 0x39, 0x44, 0xef, 0xea, 0x85, 0xa1, 0xbb, + 0xfa, 0x22, 0x94, 0xb5, 0x57, 0x8e, 0xdc, 0x1b, 0xb5, 0x69, 0x5b, 0x7b, 0xf1, 0x60, 0x8c, 0x63, + 0xff, 0xba, 0x05, 0xd3, 0x3c, 0xc0, 0x3d, 0x36, 0x16, 0xbc, 0xa8, 0x1d, 0xe5, 0x84, 0xdc, 0x17, + 0x93, 0x8e, 0x72, 0xef, 0xed, 0x57, 0x2b, 0x22, 0x24, 0x3e, 0xe9, 0x37, 0xf7, 0x69, 0x69, 0x61, + 0xe4, 0xee, 0x7c, 0x63, 0x27, 0x36, 0x80, 0xc5, 0x62, 0x2a, 0x22, 0x18, 0xd3, 0xb3, 0xdf, 0x86, + 0x29, 0x33, 0x52, 0x8d, 0xbc, 0x08, 0x95, 0x9e, 0xeb, 0xb5, 0x93, 0x11, 0xcd, 0xfa, 0x16, 0x66, + 0x3d, 0x06, 0xa1, 0x89, 0xc7, 0xab, 0xf9, 0x71, 0xb5, 0xd4, 0xe5, 0xcd, 0xba, 0x6f, 0x56, 0x8b, + 0xff, 0xf0, 0x57, 0x22, 0x32, 0x22, 0x22, 0x73, 0x7f, 0x25, 0x22, 0x83, 0xc7, 0xfb, 0xf7, 0x4a, + 0x44, 0x96, 0x30, 0x7f, 0xb1, 0x5e, 0x89, 0xf8, 0x69, 0x38, 0x69, 0xc2, 0x58, 0xa6, 0x08, 0xdd, + 0x33, 0xb3, 0x4e, 0xe8, 0x16, 0x97, 0x69, 0x27, 0x24, 0xd4, 0xfe, 0x83, 0x71, 0x98, 0x4d, 0xdb, + 0x43, 0xf2, 0x76, 0x35, 0x21, 0x5f, 0xb3, 0x60, 0xda, 0x49, 0x24, 0xe7, 0xcb, 0xe9, 0xc9, 0xa9, + 0x04, 0x4d, 0x23, 0x39, 0x5c, 0xa2, 0x1c, 0x53, 0xbc, 0xc9, 0x5f, 0x82, 0xc9, 0xc8, 0xed, 0x52, + 0xbf, 0x2f, 0xac, 0xa4, 0x05, 0x61, 0xad, 0xd8, 0x10, 0x45, 0xa8, 0x60, 0x6c, 0x51, 0x76, 0xb9, + 0x7a, 0x19, 0x50, 0xe9, 0x36, 0x3d, 0x1b, 0x9b, 0x75, 0x45, 0x39, 0x6a, 0x0c, 0x72, 0x1f, 0x26, + 0x85, 0x53, 0x8a, 0xf2, 0x3e, 0x5a, 0xcb, 0xc9, 0x6e, 0x23, 0xfc, 0x5e, 0xe2, 0x2e, 0x10, 0xff, + 0x43, 0x54, 0xec, 0x98, 0x2e, 0x0b, 0x81, 0xe3, 0xb5, 0x29, 0x6f, 0x73, 0x69, 0x69, 0x78, 0x23, + 0x2f, 0x13, 0x19, 0x6a, 0xca, 0xb5, 0xa0, 0x1d, 0xca, 0x08, 0x44, 0x5d, 0x86, 0x06, 0x67, 0xfb, + 0x97, 0x2d, 0x98, 0x1b, 0x56, 0x91, 0x0d, 0x14, 0xbe, 0x0a, 0xca, 0x11, 0x65, 0x24, 0x3e, 0x70, + 0x82, 0x08, 0x05, 0x8c, 0x5c, 0x84, 0x02, 0xd5, 0x1b, 0x87, 0x4e, 0x4d, 0x78, 0xd5, 0x6b, 0x21, + 0x2b, 0x27, 0x57, 0x60, 0x3c, 0x8c, 0x68, 0x2f, 0x15, 0x57, 0x30, 0xde, 0x88, 0x68, 0x2f, 0xc3, + 0x30, 0xce, 0x71, 0xed, 0x8f, 0xc2, 0x09, 0xf3, 0x0b, 0xdb, 0x57, 0x81, 0xa0, 0xdf, 0xe9, 0x6c, + 0x3a, 0xcd, 0x9d, 0x3b, 0xae, 0xd7, 0xf2, 0xef, 0xf1, 0x85, 0x7a, 0x11, 0xca, 0x81, 0x8c, 0xb6, + 0x0e, 0xe5, 0x9c, 0xd2, 0x2b, 0xbd, 0x0a, 0xc3, 0x0e, 0x31, 0xc6, 0xb1, 0xbf, 0x3b, 0x06, 0x93, + 0x32, 0x35, 0xc0, 0x43, 0x08, 0x6a, 0xd9, 0x49, 0xb8, 0x12, 0xac, 0xe4, 0x92, 0xd1, 0x60, 0x68, + 0x44, 0x4b, 0x98, 0x8a, 0x68, 0x79, 0x2d, 0x1f, 0x76, 0x87, 0x87, 0xb3, 0x7c, 0xbb, 0x08, 0x33, + 0xa9, 0x54, 0x0b, 0xa9, 0x54, 0xe4, 0xd6, 0xfb, 0x92, 0x8a, 0x9c, 0x84, 0x89, 0x74, 0xf4, 0xf9, + 0xb9, 0xc0, 0xfe, 0x38, 0x33, 0x7d, 0x5e, 0xce, 0xc9, 0xc5, 0x0f, 0x8e, 0x73, 0xf2, 0x7f, 0xb1, + 0xe0, 0xf1, 0xa1, 0x09, 0x43, 0x78, 0xbe, 0xb9, 0x20, 0x09, 0x95, 0xeb, 0x45, 0xce, 0x69, 0x91, + 0xb4, 0xdb, 0x41, 0x3a, 0x45, 0x58, 0x9a, 0x3d, 0x79, 0x01, 0xa6, 0xf8, 0xda, 0xcc, 0x56, 0x4e, + 0xb6, 0xf6, 0x8a, 0x5b, 0x53, 0x7e, 0x7f, 0xd6, 0x30, 0xca, 0x31, 0x81, 0x65, 0x7f, 0xcb, 0x82, + 0xb9, 0x61, 0xd9, 0xc7, 0x8e, 0x61, 0xd3, 0xfb, 0xab, 0xa9, 0xa0, 0xa0, 0xea, 0x40, 0x50, 0x50, + 0xca, 0xaa, 0xa7, 0xe2, 0x7f, 0x0c, 0x83, 0x5a, 0xe1, 0x88, 0x98, 0x97, 0x3f, 0x2c, 0xc0, 0xac, + 0x14, 0x31, 0x3e, 0x32, 0xbc, 0x94, 0x08, 0x65, 0xfa, 0x89, 0x54, 0x28, 0xd3, 0xf9, 0x34, 0xfe, + 0x8f, 0xe3, 0x98, 0x3e, 0x58, 0x71, 0x4c, 0x5f, 0x2d, 0xc2, 0x85, 0xcc, 0x24, 0x64, 0xe4, 0x2b, + 0x19, 0x3b, 0xc5, 0x9d, 0x9c, 0xb3, 0x9d, 0xe9, 0x90, 0xe7, 0xd3, 0x0d, 0xfe, 0xf9, 0x55, 0x33, + 0xe8, 0x46, 0xac, 0xfe, 0x5b, 0xa7, 0x90, 0xb7, 0xed, 0xa4, 0xf1, 0x37, 0x0f, 0xf7, 0xa9, 0xb6, + 0xbf, 0x00, 0x4b, 0xfd, 0x57, 0x0b, 0xf0, 0xcc, 0x71, 0x5b, 0xf6, 0x03, 0x1a, 0xb0, 0x1a, 0x26, + 0x02, 0x56, 0x1f, 0x92, 0x6a, 0x73, 0x2a, 0xb1, 0xab, 0xff, 0x60, 0x5c, 0xef, 0xbb, 0x83, 0x13, + 0xf6, 0x58, 0x3e, 0x3e, 0x93, 0x4c, 0xf5, 0x55, 0x09, 0xed, 0xe3, 0xbd, 0x61, 0xb2, 0x21, 0x8a, + 0xdf, 0xdb, 0xaf, 0x9e, 0x8d, 0x73, 0x03, 0xc9, 0x42, 0x54, 0x95, 0xc8, 0x33, 0x50, 0x0a, 0x04, + 0x54, 0x85, 0xe8, 0x49, 0x47, 0x29, 0x51, 0x86, 0x1a, 0x4a, 0xbe, 0x60, 0x9c, 0x15, 0xc6, 0x4f, + 0x2b, 0x05, 0xd6, 0x61, 0xfe, 0x5f, 0x6f, 0x42, 0x29, 0x54, 0x59, 0xd7, 0xc5, 0x74, 0x7a, 0xfe, + 0x98, 0x91, 0x9f, 0xce, 0x26, 0xed, 0xa8, 0x14, 0xec, 0xe2, 0xfb, 0x74, 0x82, 0x76, 0x4d, 0x92, + 0xd8, 0xda, 0x32, 0x21, 0xee, 0xa7, 0x60, 0xd0, 0x2a, 0x41, 0x22, 0x98, 0x94, 0x4f, 0x2f, 0xcb, + 0xe3, 0xec, 0x5a, 0x4e, 0x21, 0x54, 0xd2, 0xc1, 0x9e, 0x1f, 0xf8, 0x95, 0x85, 0x4c, 0xb1, 0xb2, + 0xbf, 0x6f, 0x41, 0x45, 0x8e, 0x91, 0x87, 0x10, 0x02, 0x7b, 0x37, 0x19, 0x02, 0x7b, 0x35, 0x97, + 0x25, 0x7c, 0x48, 0xfc, 0xeb, 0x5d, 0x98, 0x32, 0xd3, 0x81, 0x92, 0x4f, 0x19, 0x5b, 0x90, 0x35, + 0x4a, 0x82, 0x3d, 0xb5, 0x49, 0xc5, 0xdb, 0x93, 0xfd, 0x5b, 0x65, 0xdd, 0x8a, 0xfc, 0xe0, 0x6c, + 0x8e, 0x7c, 0xeb, 0xd0, 0x91, 0x6f, 0x0e, 0xbc, 0xb1, 0xfc, 0x07, 0xde, 0xeb, 0x50, 0x52, 0xcb, + 0xa2, 0xd4, 0xa6, 0x9e, 0x32, 0x3d, 0xee, 0x99, 0x4a, 0xc6, 0x88, 0x19, 0xd3, 0x85, 0x1f, 0x80, + 0x63, 0xbb, 0xbd, 0x5a, 0xae, 0x35, 0x19, 0xf2, 0x16, 0x54, 0xee, 0xf9, 0xc1, 0x4e, 0xc7, 0x77, + 0xf8, 0x53, 0x17, 0x90, 0x87, 0x93, 0x87, 0xb6, 0xbd, 0x8b, 0xb0, 0xa7, 0x3b, 0x31, 0x7d, 0x34, + 0x99, 0x91, 0x1a, 0xcc, 0x74, 0x5d, 0x0f, 0xa9, 0xd3, 0xd2, 0x91, 0xae, 0xe3, 0x22, 0xcd, 0xbc, + 0xd2, 0xed, 0xd7, 0x92, 0x60, 0x4c, 0xe3, 0x73, 0xbb, 0x5c, 0x90, 0x30, 0x75, 0xc8, 0x5c, 0xd2, + 0xeb, 0xa3, 0x0f, 0xc6, 0xa4, 0xf9, 0x44, 0xc4, 0xfd, 0x24, 0xcb, 0x31, 0xc5, 0x9b, 0x7c, 0x1e, + 0x4a, 0xa1, 0x7a, 0xd4, 0xb4, 0x98, 0xe3, 0xa9, 0x47, 0x3f, 0x6c, 0xaa, 0xbb, 0x52, 0xbf, 0x6c, + 0xaa, 0x19, 0x92, 0x55, 0x38, 0xaf, 0x6c, 0x37, 0x89, 0xf7, 0x19, 0x27, 0xe2, 0xd4, 0x70, 0x98, + 0x01, 0xc7, 0xcc, 0x5a, 0x4c, 0xb7, 0xe5, 0x69, 0x76, 0xc5, 0xa5, 0xba, 0x71, 0x0f, 0xcd, 0xe7, + 0x5f, 0x0b, 0x25, 0xf4, 0xb0, 0x40, 0xee, 0xd2, 0x08, 0x81, 0xdc, 0x0d, 0xb8, 0x90, 0x06, 0xf1, + 0x9c, 0x7f, 0x3c, 0xcd, 0xa0, 0xb1, 0x85, 0xae, 0x67, 0x21, 0x61, 0x76, 0x5d, 0x72, 0x07, 0xca, + 0x01, 0xe5, 0xa7, 0xbc, 0x9a, 0xf2, 0x47, 0x3c, 0xb1, 0xe7, 0x35, 0x2a, 0x02, 0x18, 0xd3, 0x62, + 0xfd, 0xee, 0x24, 0x13, 0xbf, 0xbf, 0x9e, 0xe3, 0xab, 0xe7, 0xb2, 0xef, 0x87, 0xe4, 0xe2, 0xb4, + 0xff, 0xed, 0x0c, 0x9c, 0x49, 0x18, 0xa0, 0xc8, 0x53, 0x50, 0xe4, 0x49, 0x10, 0xf9, 0x6a, 0x55, + 0x8a, 0x57, 0x54, 0xd1, 0x38, 0x02, 0x46, 0x7e, 0xc9, 0x82, 0x99, 0x5e, 0xe2, 0xba, 0x49, 0x2d, + 0xe4, 0x23, 0xda, 0xb4, 0x93, 0x77, 0x58, 0xc6, 0x93, 0x29, 0x49, 0x66, 0x98, 0xe6, 0xce, 0xd6, + 0x03, 0x19, 0xbe, 0xd0, 0xa1, 0x01, 0xc7, 0x96, 0x8a, 0x9e, 0x26, 0xb1, 0x94, 0x04, 0x63, 0x1a, + 0x9f, 0xf5, 0x30, 0xff, 0xba, 0x51, 0x5e, 0xb6, 0xad, 0x29, 0x02, 0x18, 0xd3, 0x22, 0xaf, 0xc0, + 0xb4, 0xcc, 0xf7, 0xbd, 0xee, 0xb7, 0xae, 0x3b, 0xe1, 0xb6, 0x3c, 0xf2, 0xe9, 0x23, 0xea, 0x52, + 0x02, 0x8a, 0x29, 0x6c, 0xfe, 0x6d, 0x71, 0x52, 0x75, 0x4e, 0x60, 0x22, 0xf9, 0xa2, 0xcc, 0x52, + 0x12, 0x8c, 0x69, 0x7c, 0xf2, 0x9c, 0xb1, 0x0d, 0x09, 0x47, 0x17, 0xbd, 0x1a, 0x64, 0x6c, 0x45, + 0x35, 0x98, 0xe9, 0xf3, 0x13, 0x72, 0x4b, 0x01, 0xe5, 0x7c, 0xd4, 0x0c, 0x6f, 0x27, 0xc1, 0x98, + 0xc6, 0x27, 0x2f, 0xc3, 0x99, 0x80, 0x2d, 0xb6, 0x9a, 0x80, 0xf0, 0x7e, 0xd1, 0xce, 0x0d, 0x68, + 0x02, 0x31, 0x89, 0x4b, 0x5e, 0x85, 0xb3, 0x71, 0x7a, 0x5c, 0x45, 0x40, 0xb8, 0xc3, 0xe8, 0x5c, + 0x8d, 0xb5, 0x34, 0x02, 0x0e, 0xd6, 0x21, 0x7f, 0x03, 0x66, 0x8d, 0x96, 0x58, 0xf1, 0x5a, 0xf4, + 0xbe, 0x4c, 0x61, 0xca, 0x5f, 0x48, 0x5b, 0x4a, 0xc1, 0x70, 0x00, 0x9b, 0x7c, 0x02, 0xa6, 0x9b, + 0x7e, 0xa7, 0xc3, 0xd7, 0x38, 0xf1, 0x9a, 0x89, 0xc8, 0x55, 0x2a, 0xb2, 0xba, 0x26, 0x20, 0x98, + 0xc2, 0x24, 0x37, 0x80, 0xf8, 0x9b, 0x4c, 0xbd, 0xa2, 0xad, 0x57, 0xa9, 0x47, 0xa5, 0xc6, 0x71, + 0x26, 0x19, 0x3c, 0x75, 0x6b, 0x00, 0x03, 0x33, 0x6a, 0xf1, 0x54, 0x8f, 0x46, 0xb0, 0xf9, 0x74, + 0x1e, 0xcf, 0xb0, 0xa6, 0xed, 0x39, 0x47, 0x46, 0x9a, 0x07, 0x30, 0x21, 0x3c, 0x14, 0xf2, 0x49, + 0x5a, 0x6a, 0x3e, 0x6c, 0x10, 0xef, 0x11, 0xa2, 0x14, 0x25, 0x27, 0xf2, 0x73, 0x50, 0xde, 0x54, + 0xaf, 0xdc, 0xf0, 0x4c, 0xa5, 0x23, 0xef, 0x8b, 0xa9, 0x07, 0x9b, 0x62, 0x7b, 0x85, 0x06, 0x60, + 0xcc, 0x92, 0x3c, 0x0d, 0x95, 0xeb, 0xeb, 0x35, 0x3d, 0x0a, 0xcf, 0xf2, 0xde, 0x1f, 0x67, 0x55, + 0xd0, 0x04, 0xb0, 0x19, 0xa6, 0xd5, 0x37, 0x92, 0x74, 0x62, 0xc8, 0xd0, 0xc6, 0x18, 0x36, 0x77, + 0x59, 0xc1, 0xc6, 0xdc, 0xb9, 0x14, 0xb6, 0x2c, 0x47, 0x8d, 0x41, 0xde, 0x84, 0x8a, 0xdc, 0x2f, + 0xf8, 0xda, 0x74, 0xfe, 0xc1, 0x12, 0x19, 0x60, 0x4c, 0x02, 0x4d, 0x7a, 0xfc, 0x3a, 0x9d, 0x3f, + 0xfe, 0x41, 0xaf, 0xf5, 0x3b, 0x9d, 0xb9, 0x0b, 0x7c, 0xdd, 0x8c, 0xaf, 0xd3, 0x63, 0x10, 0x9a, + 0x78, 0xe4, 0x79, 0xe5, 0x7a, 0xf8, 0x68, 0xc2, 0xbf, 0x40, 0xbb, 0x1e, 0x6a, 0xa5, 0x7b, 0x48, + 0xac, 0xd3, 0x63, 0x47, 0xf8, 0xfc, 0x6d, 0xc2, 0xbc, 0xd2, 0xf8, 0x06, 0x27, 0xc9, 0xdc, 0x5c, + 0xc2, 0x76, 0x34, 0x7f, 0x67, 0x28, 0x26, 0x1e, 0x42, 0x85, 0x6c, 0x42, 0xc1, 0xe9, 0x6c, 0xce, + 0x3d, 0x9e, 0x87, 0xea, 0x5a, 0x5b, 0xad, 0xcb, 0x11, 0xc5, 0xfd, 0x93, 0x6b, 0xab, 0x75, 0x64, + 0xc4, 0x89, 0x0b, 0xe3, 0x4e, 0x67, 0x33, 0x9c, 0x9b, 0xe7, 0x73, 0x36, 0x37, 0x26, 0xb1, 0xf1, + 0x60, 0xb5, 0x1e, 0x22, 0x67, 0x61, 0x7f, 0x71, 0x4c, 0xdf, 0x12, 0xe9, 0xbc, 0xf1, 0x6f, 0x9b, + 0x13, 0x48, 0x1c, 0x77, 0x6e, 0xe5, 0x36, 0x81, 0xa4, 0x7a, 0x71, 0x66, 0xe8, 0xf4, 0xe9, 0xe9, + 0x25, 0x23, 0x97, 0x84, 0x73, 0xc9, 0x9c, 0xf8, 0xe2, 0xf4, 0x9c, 0x5c, 0x30, 0xec, 0x2f, 0x55, + 0xb4, 0x15, 0x34, 0xe5, 0xb6, 0x17, 0x40, 0xd1, 0x0d, 0x23, 0xd7, 0xcf, 0x31, 0xbe, 0x3f, 0x95, + 0x4c, 0x9e, 0x87, 0x0f, 0x71, 0x00, 0x0a, 0x56, 0x8c, 0xa7, 0xd7, 0x76, 0xbd, 0xfb, 0xf2, 0xf3, + 0x5f, 0xcf, 0xdd, 0xe9, 0x4c, 0xf0, 0xe4, 0x00, 0x14, 0xac, 0xc8, 0x5d, 0x31, 0xa8, 0x0b, 0x79, + 0xf4, 0x75, 0x6d, 0xb5, 0x9e, 0xe2, 0x97, 0x1c, 0xdc, 0x77, 0xa1, 0x10, 0x76, 0x5d, 0xa9, 0x2e, + 0x8d, 0xc8, 0xab, 0xb1, 0xb6, 0x92, 0xc5, 0xab, 0xb1, 0xb6, 0x82, 0x8c, 0x09, 0xbf, 0xea, 0x77, + 0xba, 0x9b, 0x4e, 0x18, 0x3a, 0x2d, 0x6d, 0x9d, 0x19, 0xf1, 0xaa, 0xbf, 0xa6, 0xe9, 0xa5, 0x58, + 0xf3, 0xab, 0xfe, 0x18, 0x8a, 0x06, 0x67, 0xf2, 0x16, 0x4c, 0x3a, 0xe2, 0x15, 0x4e, 0x19, 0x4c, + 0x91, 0xcf, 0xd3, 0xb2, 0x29, 0x09, 0xb8, 0x99, 0x46, 0x82, 0x50, 0x31, 0x64, 0xbc, 0xa3, 0xc0, + 0xa1, 0x5b, 0xee, 0x8e, 0x34, 0x0e, 0x35, 0x46, 0x7e, 0x27, 0x86, 0x11, 0xcb, 0xe2, 0x2d, 0x41, + 0xa8, 0x18, 0x92, 0x5f, 0xb0, 0xe0, 0x4c, 0xd7, 0xf1, 0x1c, 0x1d, 0x22, 0x9b, 0x4f, 0x20, 0xb5, + 0x19, 0x74, 0x1b, 0x6b, 0x88, 0x6b, 0x26, 0x23, 0x4c, 0xf2, 0x25, 0xbb, 0x30, 0xe1, 0xf0, 0xf7, + 0x81, 0xe5, 0x51, 0x0c, 0xf3, 0x78, 0x6b, 0x38, 0xd5, 0x06, 0x7c, 0x71, 0x91, 0xaf, 0x10, 0x4b, + 0x6e, 0xe4, 0x37, 0x2c, 0x98, 0x14, 0x7e, 0xfe, 0x4c, 0x21, 0x65, 0xdf, 0xfe, 0xd9, 0x53, 0x78, + 0x94, 0x42, 0xc6, 0x20, 0x48, 0xe7, 0xac, 0x0f, 0x6b, 0x27, 0x66, 0x51, 0x7a, 0x68, 0x14, 0x82, + 0x92, 0x8e, 0xa9, 0xbe, 0x5d, 0xe7, 0x7e, 0xe2, 0x15, 0x20, 0x53, 0xf5, 0x5d, 0x4b, 0xc1, 0x70, + 0x00, 0x7b, 0xfe, 0x13, 0x30, 0x65, 0xca, 0x71, 0xa2, 0x48, 0x86, 0x1f, 0x16, 0x00, 0x78, 0x57, + 0x89, 0xb4, 0x3a, 0x5d, 0x9e, 0x83, 0x7b, 0xdb, 0x6f, 0xe5, 0xf4, 0x1a, 0xa9, 0x91, 0x1d, 0x07, + 0x64, 0xc2, 0xed, 0x6d, 0xbf, 0x85, 0x92, 0x09, 0x69, 0xc3, 0x78, 0xcf, 0x89, 0xb6, 0xf3, 0x4f, + 0xc5, 0x53, 0x12, 0xf1, 0xe5, 0xd1, 0x36, 0x72, 0x06, 0xe4, 0x1d, 0x2b, 0xf6, 0x7b, 0x2a, 0xe4, + 0x91, 0x46, 0x38, 0x6e, 0xb3, 0x05, 0xe9, 0xe9, 0x94, 0xca, 0xa6, 0x9b, 0xf6, 0x7f, 0x9a, 0x7f, + 0xd7, 0x82, 0x29, 0x13, 0x35, 0xa3, 0x9b, 0x7e, 0xd6, 0xec, 0xa6, 0x3c, 0xdb, 0xc3, 0xec, 0xf1, + 0xff, 0x66, 0x01, 0x60, 0xdf, 0x6b, 0xf4, 0xbb, 0x5d, 0xa6, 0xb6, 0xeb, 0x80, 0x0d, 0xeb, 0xd8, + 0x01, 0x1b, 0x63, 0x27, 0x0c, 0xd8, 0x28, 0x9c, 0x28, 0x60, 0x63, 0xfc, 0xe4, 0x01, 0x1b, 0xc5, + 0xe1, 0x01, 0x1b, 0xf6, 0x37, 0x2c, 0x38, 0x3b, 0xb0, 0x5f, 0x31, 0x4d, 0x3a, 0xf0, 0xfd, 0x68, + 0x88, 0x3f, 0x2b, 0xc6, 0x20, 0x34, 0xf1, 0xc8, 0x32, 0xcc, 0xca, 0x17, 0x67, 0x1a, 0xbd, 0x8e, + 0x9b, 0x99, 0x26, 0x69, 0x23, 0x05, 0xc7, 0x81, 0x1a, 0xf6, 0xbf, 0xb2, 0xa0, 0x62, 0x24, 0x57, + 0xe0, 0x3e, 0x67, 0xfc, 0xc6, 0x2b, 0xed, 0x73, 0xc6, 0xaf, 0xba, 0x04, 0x4c, 0x5c, 0x43, 0xb7, + 0x8d, 0xf7, 0x08, 0xe2, 0x6b, 0x68, 0x56, 0x8a, 0x12, 0x2a, 0x32, 0xcd, 0x4b, 0xe7, 0xb3, 0x82, + 0x99, 0x69, 0x9e, 0xf6, 0x84, 0xab, 0x59, 0xec, 0xe2, 0x36, 0x7e, 0xb4, 0x8b, 0x5b, 0x31, 0xdb, + 0xc5, 0xcd, 0xbe, 0x05, 0x53, 0xc2, 0x57, 0xfb, 0x35, 0xba, 0x77, 0xec, 0xe7, 0x7c, 0xd9, 0x68, + 0x4f, 0xf9, 0xcc, 0xb1, 0xea, 0xac, 0xdc, 0xfe, 0x27, 0x16, 0xa4, 0x1e, 0xa0, 0x32, 0x6e, 0x60, + 0xac, 0xa1, 0x37, 0x30, 0xa6, 0xd5, 0x7e, 0xec, 0x50, 0xab, 0xfd, 0x0d, 0x20, 0x5d, 0x36, 0x15, + 0x92, 0x0b, 0x6d, 0x21, 0xf9, 0x2a, 0xc8, 0xda, 0x00, 0x06, 0x66, 0xd4, 0xb2, 0xff, 0xb1, 0x10, + 0xd6, 0x7c, 0x92, 0xea, 0xe8, 0x06, 0xe8, 0x43, 0x91, 0x93, 0x92, 0xf6, 0xb7, 0x11, 0x6d, 0xd7, + 0x83, 0x29, 0xd1, 0xe2, 0x8e, 0x94, 0x53, 0x9e, 0x73, 0xb3, 0xff, 0x50, 0xc8, 0x6a, 0xbc, 0x59, + 0x75, 0x0c, 0x59, 0xbb, 0x49, 0x59, 0xaf, 0xe7, 0xb5, 0x56, 0x66, 0xcb, 0x48, 0x16, 0x00, 0x7a, + 0x34, 0x68, 0x52, 0x2f, 0x52, 0x21, 0x66, 0x45, 0x19, 0xec, 0xac, 0x4b, 0xd1, 0xc0, 0xb0, 0xbf, + 0xce, 0x26, 0x50, 0xfc, 0xd0, 0x35, 0x79, 0x26, 0xed, 0x08, 0x9c, 0x9e, 0x1c, 0xda, 0x0f, 0xd8, + 0x08, 0x3c, 0x1a, 0x3b, 0x22, 0xf0, 0xe8, 0x59, 0x98, 0x0c, 0xfc, 0x0e, 0xad, 0x05, 0x5e, 0xda, + 0x47, 0x07, 0x59, 0x31, 0xde, 0x44, 0x05, 0xb7, 0x7f, 0xcd, 0x82, 0xd9, 0x74, 0x64, 0x64, 0xee, + 0xde, 0xc9, 0x66, 0xfa, 0x86, 0xc2, 0xc9, 0xd3, 0x37, 0xd8, 0xef, 0x30, 0x21, 0x23, 0xb7, 0xb9, + 0xe3, 0x7a, 0x22, 0xe3, 0x01, 0x6b, 0xb9, 0x67, 0x61, 0x92, 0xca, 0x07, 0x7b, 0x85, 0x19, 0x59, + 0x0b, 0xa9, 0xde, 0xe9, 0x55, 0x70, 0x52, 0x83, 0x19, 0x75, 0x79, 0xa6, 0x6c, 0xff, 0x22, 0x53, + 0x8b, 0xb6, 0x35, 0x2e, 0x27, 0xc1, 0x98, 0xc6, 0xb7, 0xbf, 0x00, 0x15, 0x63, 0x53, 0xe2, 0xeb, + 0xf7, 0x7d, 0xa7, 0x39, 0xe0, 0x6b, 0x7b, 0x95, 0x15, 0xa2, 0x80, 0xf1, 0x2b, 0x0a, 0x11, 0xb8, + 0x95, 0x5a, 0xf7, 0x64, 0xb8, 0x96, 0x84, 0x32, 0x62, 0x01, 0x6d, 0xd3, 0xfb, 0xea, 0xb9, 0x08, + 0x45, 0x0c, 0x59, 0x21, 0x0a, 0x98, 0xfd, 0x1c, 0x94, 0x54, 0x3e, 0x2d, 0x9e, 0x94, 0x46, 0x99, + 0xcf, 0xcd, 0xa4, 0x34, 0x7e, 0x10, 0x21, 0x87, 0xd8, 0x6f, 0x40, 0x49, 0xa5, 0xfd, 0x3a, 0x1a, + 0x9b, 0x2d, 0x45, 0xa1, 0xe7, 0x5e, 0xf7, 0xc3, 0x48, 0xe5, 0x2a, 0x13, 0x37, 0x7c, 0x37, 0x57, + 0x78, 0x19, 0x6a, 0xa8, 0xfd, 0xe7, 0x16, 0x54, 0x36, 0x36, 0x56, 0xf5, 0xc1, 0x1f, 0xe1, 0xd1, + 0x50, 0xb4, 0x50, 0x6d, 0x2b, 0xa2, 0xa6, 0x2b, 0x81, 0x58, 0xf8, 0xe6, 0x0f, 0xf6, 0xab, 0x8f, + 0x36, 0x32, 0x31, 0x70, 0x48, 0x4d, 0xb2, 0x02, 0xe7, 0x4c, 0x88, 0xcc, 0x21, 0x21, 0xd7, 0x48, + 0xfe, 0xc2, 0x73, 0x63, 0x10, 0x8c, 0x59, 0x75, 0xd2, 0xa4, 0xe4, 0x76, 0x6f, 0x3e, 0x16, 0xdd, + 0x18, 0x04, 0x63, 0x56, 0x1d, 0xfb, 0x79, 0x98, 0x49, 0xdd, 0x71, 0x1f, 0x23, 0x77, 0xcf, 0xef, + 0x15, 0x60, 0xca, 0xbc, 0xea, 0x3c, 0xc6, 0xfa, 0x75, 0xfc, 0x6d, 0x21, 0xe3, 0x7a, 0xb2, 0x70, + 0xc2, 0xeb, 0x49, 0xf3, 0x3e, 0x78, 0xfc, 0x74, 0xef, 0x83, 0x8b, 0xf9, 0xdc, 0x07, 0x1b, 0x7e, + 0x0b, 0x13, 0x0f, 0xcf, 0x6f, 0xe1, 0x77, 0x8b, 0x30, 0x9d, 0x4c, 0x06, 0x7b, 0x8c, 0x9e, 0x7c, + 0x6e, 0xa0, 0x27, 0x4f, 0x78, 0x1f, 0x52, 0x18, 0xf5, 0x3e, 0x64, 0x7c, 0xd4, 0xfb, 0x90, 0xe2, + 0x03, 0xdc, 0x87, 0x0c, 0xde, 0x66, 0x4c, 0x1c, 0xfb, 0x36, 0xe3, 0x93, 0xda, 0xc5, 0x73, 0x32, + 0xe1, 0x02, 0x14, 0xbb, 0x78, 0x92, 0x64, 0x37, 0x2c, 0xf9, 0xad, 0x4c, 0xd7, 0xd4, 0xd2, 0x11, + 0x76, 0xdf, 0x20, 0xd3, 0x23, 0xf3, 0xe4, 0x57, 0xae, 0x8f, 0x9e, 0xc0, 0x1b, 0xf3, 0x45, 0xa8, + 0xc8, 0xf1, 0xc4, 0x95, 0x6f, 0x48, 0x2a, 0xee, 0x8d, 0x18, 0x84, 0x26, 0x1e, 0x1b, 0x18, 0xbd, + 0x78, 0x82, 0xf0, 0x9b, 0xb9, 0x4a, 0xf2, 0x66, 0x6e, 0x3d, 0x09, 0xc6, 0x34, 0xbe, 0xfd, 0x79, + 0xb8, 0x90, 0x69, 0x82, 0xe1, 0xe6, 0x6f, 0xae, 0x17, 0xd2, 0x96, 0x44, 0x30, 0xc4, 0x48, 0xbd, + 0x11, 0x33, 0x7f, 0x67, 0x28, 0x26, 0x1e, 0x42, 0xc5, 0xfe, 0xed, 0x02, 0x4c, 0x27, 0x1f, 0x0a, + 0x26, 0xf7, 0xb4, 0xc1, 0x36, 0x17, 0x5b, 0xb1, 0x20, 0x6b, 0x24, 0x18, 0x1d, 0x7a, 0xd1, 0x73, + 0x8f, 0x8f, 0xaf, 0x4d, 0x9d, 0xed, 0xf4, 0xf4, 0x18, 0xcb, 0x1b, 0x16, 0xc9, 0x8e, 0xbf, 0x05, + 0x1c, 0xc7, 0x22, 0xcb, 0x73, 0x7c, 0xee, 0xdc, 0xe3, 0xb0, 0x51, 0xcd, 0x0a, 0x0d, 0xb6, 0x6c, + 0x6f, 0xd9, 0xa5, 0x81, 0xbb, 0xe5, 0xd2, 0x96, 0x4c, 0x3e, 0xcf, 0x57, 0xee, 0x37, 0x64, 0x19, + 0x6a, 0xa8, 0xfd, 0xce, 0x18, 0x94, 0x79, 0xea, 0xb4, 0x6b, 0x81, 0xdf, 0xe5, 0xaf, 0x69, 0x86, + 0xc6, 0x99, 0x49, 0x76, 0xdb, 0x8d, 0x51, 0x9f, 0xac, 0x8d, 0x29, 0x4a, 0x77, 0x77, 0xa3, 0x04, + 0x13, 0x1c, 0x49, 0x0f, 0x4a, 0x5b, 0x32, 0xd5, 0xb3, 0xec, 0xbb, 0x11, 0xd3, 0x95, 0xaa, 0xc4, + 0xd1, 0xa2, 0x09, 0xd4, 0x3f, 0xd4, 0x5c, 0x6c, 0x07, 0x66, 0x52, 0xb9, 0x6f, 0x72, 0x4f, 0x10, + 0xfd, 0x3f, 0xc7, 0xa1, 0xac, 0xa3, 0xd0, 0xc8, 0xc7, 0x13, 0x06, 0xac, 0x72, 0xfd, 0x43, 0xc6, + 0x53, 0x6f, 0xdb, 0x7e, 0xeb, 0xbd, 0xfd, 0xea, 0x8c, 0x46, 0x4e, 0x19, 0xa3, 0x2e, 0x42, 0xa1, + 0x1f, 0x74, 0xd2, 0x27, 0xd4, 0xdb, 0xb8, 0x8a, 0xac, 0xdc, 0x8c, 0x9c, 0x2b, 0x3c, 0xdc, 0xc8, + 0xb9, 0xcb, 0x30, 0xbe, 0xe9, 0xb7, 0xf6, 0xd2, 0x4f, 0xc3, 0xd5, 0xfd, 0xd6, 0x1e, 0x72, 0x08, + 0x79, 0x05, 0xa6, 0x65, 0x38, 0xa0, 0x52, 0x62, 0x8a, 0x5c, 0x4f, 0xd5, 0x8e, 0x0b, 0x1b, 0x09, + 0x28, 0xa6, 0xb0, 0xd9, 0x2e, 0x7b, 0x37, 0xf4, 0x3d, 0x9e, 0xf6, 0x7b, 0x22, 0x79, 0xcb, 0x79, + 0xa3, 0x71, 0xeb, 0x26, 0x37, 0xa4, 0x69, 0x8c, 0x44, 0xc4, 0xe1, 0xe4, 0x91, 0x11, 0x87, 0xcb, + 0x82, 0x36, 0x93, 0x96, 0xef, 0x28, 0x53, 0xf5, 0x67, 0x14, 0x5d, 0x56, 0xf6, 0xde, 0xfe, 0x21, + 0x46, 0x52, 0x5d, 0x33, 0x2b, 0x36, 0xb3, 0xfc, 0xfe, 0xc5, 0x66, 0xda, 0xb7, 0x61, 0x26, 0xd5, + 0x7f, 0xca, 0xc0, 0x61, 0x65, 0x1b, 0x38, 0x8e, 0xf7, 0xb8, 0xdc, 0x3f, 0xb3, 0xe0, 0xec, 0xc0, + 0x8a, 0x74, 0xdc, 0x20, 0xd9, 0xf4, 0xde, 0x38, 0xf6, 0xe0, 0x7b, 0x63, 0xe1, 0x64, 0x7b, 0x63, + 0x7d, 0xf3, 0x3b, 0x3f, 0xb8, 0xf4, 0xc8, 0xf7, 0x7e, 0x70, 0xe9, 0x91, 0x3f, 0xfa, 0xc1, 0xa5, + 0x47, 0xde, 0x39, 0xb8, 0x64, 0x7d, 0xe7, 0xe0, 0x92, 0xf5, 0xbd, 0x83, 0x4b, 0xd6, 0x1f, 0x1d, + 0x5c, 0xb2, 0xfe, 0xf3, 0xc1, 0x25, 0xeb, 0x1b, 0x7f, 0x7a, 0xe9, 0x91, 0x4f, 0x7d, 0x32, 0xee, + 0xa9, 0x45, 0xd5, 0x53, 0xfc, 0xc7, 0x47, 0x54, 0xbf, 0x2c, 0xf6, 0x76, 0xda, 0x8b, 0xac, 0xa7, + 0x16, 0x75, 0x89, 0xea, 0xa9, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xa4, 0xe6, 0x16, 0xde, 0x1b, + 0xa9, 0x00, 0x00, } func (m *ALBStatus) Marshal() (dAtA []byte, err error) { @@ -7731,6 +7735,30 @@ func (m *NginxTrafficRouting) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.CanaryIngressAnnotations) > 0 { + keysForCanaryIngressAnnotations := make([]string, 0, len(m.CanaryIngressAnnotations)) + for k := range m.CanaryIngressAnnotations { + keysForCanaryIngressAnnotations = append(keysForCanaryIngressAnnotations, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCanaryIngressAnnotations) + for iNdEx := len(keysForCanaryIngressAnnotations) - 1; iNdEx >= 0; iNdEx-- { + v := m.CanaryIngressAnnotations[string(keysForCanaryIngressAnnotations[iNdEx])] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(keysForCanaryIngressAnnotations[iNdEx]) + copy(dAtA[i:], keysForCanaryIngressAnnotations[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(keysForCanaryIngressAnnotations[iNdEx]))) + i-- + dAtA[i] = 0xa + i = encodeVarintGenerated(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x2a + } + } if len(m.StableIngresses) > 0 { for iNdEx := len(m.StableIngresses) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.StableIngresses[iNdEx]) @@ -11913,6 +11941,14 @@ func (m *NginxTrafficRouting) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) } } + if len(m.CanaryIngressAnnotations) > 0 { + for k, v := range m.CanaryIngressAnnotations { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } return n } @@ -13973,11 +14009,22 @@ func (this *NginxTrafficRouting) String() string { mapStringForAdditionalIngressAnnotations += fmt.Sprintf("%v: %v,", k, this.AdditionalIngressAnnotations[k]) } mapStringForAdditionalIngressAnnotations += "}" + keysForCanaryIngressAnnotations := make([]string, 0, len(this.CanaryIngressAnnotations)) + for k := range this.CanaryIngressAnnotations { + keysForCanaryIngressAnnotations = append(keysForCanaryIngressAnnotations, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCanaryIngressAnnotations) + mapStringForCanaryIngressAnnotations := "map[string]string{" + for _, k := range keysForCanaryIngressAnnotations { + mapStringForCanaryIngressAnnotations += fmt.Sprintf("%v: %v,", k, this.CanaryIngressAnnotations[k]) + } + mapStringForCanaryIngressAnnotations += "}" s := strings.Join([]string{`&NginxTrafficRouting{`, `AnnotationPrefix:` + fmt.Sprintf("%v", this.AnnotationPrefix) + `,`, `StableIngress:` + fmt.Sprintf("%v", this.StableIngress) + `,`, `AdditionalIngressAnnotations:` + mapStringForAdditionalIngressAnnotations + `,`, `StableIngresses:` + fmt.Sprintf("%v", this.StableIngresses) + `,`, + `CanaryIngressAnnotations:` + mapStringForCanaryIngressAnnotations + `,`, `}`, }, "") return s @@ -26943,6 +26990,133 @@ func (m *NginxTrafficRouting) Unmarshal(dAtA []byte) error { } m.StableIngresses = append(m.StableIngresses, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanaryIngressAnnotations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CanaryIngressAnnotations == nil { + m.CanaryIngressAnnotations = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.CanaryIngressAnnotations[mapkey] = mapvalue + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/rollouts/v1alpha1/generated.proto b/pkg/apis/rollouts/v1alpha1/generated.proto index 4629152647..4a384b789f 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.proto +++ b/pkg/apis/rollouts/v1alpha1/generated.proto @@ -1129,6 +1129,9 @@ message NginxTrafficRouting { // StableIngresses refers to the names of `Ingress` resources in the same namespace as the `Rollout` in a multi ingress scenario // +optional repeated string stableIngresses = 4; + + // +optional + map canaryIngressAnnotations = 5; } message OAuth2Config { diff --git a/pkg/apis/rollouts/v1alpha1/openapi_generated.go b/pkg/apis/rollouts/v1alpha1/openapi_generated.go index 0f658f5611..7945b82df4 100644 --- a/pkg/apis/rollouts/v1alpha1/openapi_generated.go +++ b/pkg/apis/rollouts/v1alpha1/openapi_generated.go @@ -3357,6 +3357,21 @@ func schema_pkg_apis_rollouts_v1alpha1_NginxTrafficRouting(ref common.ReferenceC }, }, }, + "canaryIngressAnnotations": { + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + AdditionalProperties: &spec.SchemaOrBool{ + Allows: true, + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + }, + }, + }, }, }, }, diff --git a/pkg/apis/rollouts/v1alpha1/types.go b/pkg/apis/rollouts/v1alpha1/types.go index 2ab4ea1018..47bc6a0f4b 100755 --- a/pkg/apis/rollouts/v1alpha1/types.go +++ b/pkg/apis/rollouts/v1alpha1/types.go @@ -446,6 +446,8 @@ type NginxTrafficRouting struct { // StableIngresses refers to the names of `Ingress` resources in the same namespace as the `Rollout` in a multi ingress scenario // +optional StableIngresses []string `json:"stableIngresses,omitempty" protobuf:"bytes,4,rep,name=stableIngresses"` + // +optional + CanaryIngressAnnotations map[string]string `json:"canaryIngressAnnotations,omitempty" protobuf:"bytes,5,rep,name=canaryIngressAnnotations"` } // IstioTrafficRouting configuration for Istio service mesh to enable fine grain configuration diff --git a/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go index 373d85fcc6..2816852447 100644 --- a/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go @@ -1848,6 +1848,13 @@ func (in *NginxTrafficRouting) DeepCopyInto(out *NginxTrafficRouting) { *out = make([]string, len(*in)) copy(*out, *in) } + if in.CanaryIngressAnnotations != nil { + in, out := &in.CanaryIngressAnnotations, &out.CanaryIngressAnnotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } return } diff --git a/rollout/trafficrouting/nginx/nginx.go b/rollout/trafficrouting/nginx/nginx.go index 649931c258..1eb8670b6a 100644 --- a/rollout/trafficrouting/nginx/nginx.go +++ b/rollout/trafficrouting/nginx/nginx.go @@ -129,6 +129,12 @@ func (r *Reconciler) buildCanaryIngress(stableIngress *networkingv1.Ingress, nam } desiredCanaryIngress.Annotations[k] = v } + + // Process additional full annotations, overwriting any colliding values from the above + for k, v := range r.cfg.Rollout.Spec.Strategy.Canary.TrafficRouting.Nginx.CanaryIngressAnnotations { + desiredCanaryIngress.Annotations[k] = v + } + // Always set `canary` and `canary-weight` - `canary-by-header` and `canary-by-cookie`, if set, will always take precedence desiredCanaryIngress.Annotations[fmt.Sprintf("%s/canary", annotationPrefix)] = "true" desiredCanaryIngress.Annotations[fmt.Sprintf("%s/canary-weight", annotationPrefix)] = fmt.Sprintf("%d", desiredWeight) @@ -209,6 +215,12 @@ func (r *Reconciler) buildLegacyCanaryIngress(stableIngress *extensionsv1beta1.I } desiredCanaryIngress.Annotations[k] = v } + + // Process additional full annotations, overwriting any colliding values from the above + for k, v := range r.cfg.Rollout.Spec.Strategy.Canary.TrafficRouting.Nginx.CanaryIngressAnnotations { + desiredCanaryIngress.Annotations[k] = v + } + // Always set `canary` and `canary-weight` - `canary-by-header` and `canary-by-cookie`, if set, will always take precedence desiredCanaryIngress.Annotations[fmt.Sprintf("%s/canary", annotationPrefix)] = "true" desiredCanaryIngress.Annotations[fmt.Sprintf("%s/canary-weight", annotationPrefix)] = fmt.Sprintf("%d", desiredWeight) diff --git a/rollout/trafficrouting/nginx/nginx_test.go b/rollout/trafficrouting/nginx/nginx_test.go index c3b4ce357a..37c7f04a2c 100644 --- a/rollout/trafficrouting/nginx/nginx_test.go +++ b/rollout/trafficrouting/nginx/nginx_test.go @@ -556,6 +556,9 @@ func TestCanaryIngressAdditionalAnnotations(t *testing.T) { "canary-by-header": "X-Foo", "canary-by-header-value": "DoCanary", } + r.cfg.Rollout.Spec.Strategy.Canary.TrafficRouting.Nginx.CanaryIngressAnnotations = map[string]string{ + "annotation-prefix.some.group/some-key": "some-value", + } stable := extensionsIngress(ing, 80, stableService) stableIngress := ingressutil.NewLegacyIngress(stable) @@ -569,6 +572,43 @@ func TestCanaryIngressAdditionalAnnotations(t *testing.T) { assert.Equal(t, "15", annotations["nginx.ingress.kubernetes.io/canary-weight"], "canary-weight annotation set to expected value") assert.Equal(t, "X-Foo", annotations["nginx.ingress.kubernetes.io/canary-by-header"], "canary-by-header annotation set") assert.Equal(t, "DoCanary", annotations["nginx.ingress.kubernetes.io/canary-by-header-value"], "canary-by-header-value annotation set") + assert.Equal(t, "some-value", annotations["annotation-prefix.some.group/some-key"], "custom full annotation set without default prefix") + } + }) + } +} + +func TestCanaryIngressAdditionalAnnotationsNewIngress(t *testing.T) { + tests := generateMultiIngressTestData() + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + for _, ing := range test.ingresses { + r := Reconciler{ + cfg: ReconcilerConfig{ + Rollout: fakeRollout(stableService, canaryService, test.singleIngress, test.multiIngress), + }, + } + r.cfg.Rollout.Spec.Strategy.Canary.TrafficRouting.Nginx.AdditionalIngressAnnotations = map[string]string{ + "canary-by-header": "X-Foo", + "canary-by-header-value": "DoCanary", + } + r.cfg.Rollout.Spec.Strategy.Canary.TrafficRouting.Nginx.CanaryIngressAnnotations = map[string]string{ + "annotation-prefix.some.group/some-key": "some-value", + } + stable := networkingIngress(StableIngress, 80, stableService) + stableIngress := ingressutil.NewIngress(stable) + + desiredCanaryIngress, err := r.canaryIngress(stableIngress, ingressutil.GetCanaryIngressName(r.cfg.Rollout.GetName(), ing), 15) + assert.Nil(t, err, "No error returned when calling canaryIngress") + + checkBackendService(t, desiredCanaryIngress, canaryService) + + annotations := desiredCanaryIngress.GetAnnotations() + assert.Equal(t, "true", annotations["nginx.ingress.kubernetes.io/canary"], "canary annotation set to true") + assert.Equal(t, "15", annotations["nginx.ingress.kubernetes.io/canary-weight"], "canary-weight annotation set to expected value") + assert.Equal(t, "X-Foo", annotations["nginx.ingress.kubernetes.io/canary-by-header"], "canary-by-header annotation set") + assert.Equal(t, "DoCanary", annotations["nginx.ingress.kubernetes.io/canary-by-header-value"], "canary-by-header-value annotation set") + assert.Equal(t, "some-value", annotations["annotation-prefix.some.group/some-key"], "custom full annotation set without default prefix") } }) } diff --git a/ui/src/models/rollout/generated/api.ts b/ui/src/models/rollout/generated/api.ts index 3906c7e8d3..a2cd53858e 100755 --- a/ui/src/models/rollout/generated/api.ts +++ b/ui/src/models/rollout/generated/api.ts @@ -1681,6 +1681,12 @@ export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1NginxTraffi * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1NginxTrafficRouting */ stableIngresses?: Array; + /** + * + * @type {{ [key: string]: string; }} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1NginxTrafficRouting + */ + canaryIngressAnnotations?: { [key: string]: string; }; } /** * From 638ca1b5625d16d599cca4071a6e01550c175d41 Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Thu, 25 Jul 2024 09:31:43 -0500 Subject: [PATCH 096/219] fix: separate e2e and unit test reporting uploads (#3747) * seperate test reporting Signed-off-by: Zach Aller * fix file name path Signed-off-by: Zach Aller --------- Signed-off-by: Zach Aller --- .github/workflows/testing-results.yml | 17 ++++++++++++++--- .github/workflows/testing.yaml | 4 ++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/.github/workflows/testing-results.yml b/.github/workflows/testing-results.yml index 17b38409aa..f91ae48aa7 100644 --- a/.github/workflows/testing-results.yml +++ b/.github/workflows/testing-results.yml @@ -25,14 +25,25 @@ jobs: path: artifacts github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Publish Test Results + - name: Publish E2E Test Results uses: EnricoMi/publish-unit-test-result-action@v2 with: - check_name: "${{ github.event.workflow.name }} Published Test Results" + check_name: "Published E2E Test Results" compare_to_earlier_commit: false test_changes_limit: 0 fail_on: "errors" commit: ${{ github.event.workflow_run.head_sha }} event_file: artifacts/Event File/event.json event_name: ${{ github.event.workflow_run.event }} - files: "artifacts/**/*.xml" + files: "artifacts/**/junit-e2e-test.xml" + - name: Publish Unit Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + with: + check_name: "Published Unit Test Results" + compare_to_earlier_commit: false + test_changes_limit: 0 + fail_on: "errors" + commit: ${{ github.event.workflow_run.head_sha }} + event_file: artifacts/Event File/event.json + event_name: ${{ github.event.workflow_run.event }} + files: "artifacts/**/junit-unit-test.xml" diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml index 3bbb003282..d9862e5726 100644 --- a/.github/workflows/testing.yaml +++ b/.github/workflows/testing.yaml @@ -67,7 +67,7 @@ jobs: with: name: Unit Test Results path: | - junit.xml + junit-unit-test.xml - name: Generate code coverage artifacts uses: actions/upload-artifact@v4 with: @@ -134,7 +134,7 @@ jobs: with: name: E2E Test Results (k8s ${{ matrix.kubernetes.version }}) path: | - junit.xml + junit-e2e-test.xml - name: Upload e2e-controller logs uses: actions/upload-artifact@v4 with: From e638c88d40401e210f629edc62ef9d4838fc3023 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Jul 2024 17:24:21 +0000 Subject: [PATCH 097/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.26 to 1.27.27 (#3732) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.26 to 1.27.27. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.26...config/v1.27.27) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Makefile | 4 ++-- go.mod | 6 +++--- go.sum | 12 ++++++------ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index d6244ecf82..5f4ae3ded2 100644 --- a/Makefile +++ b/Makefile @@ -240,12 +240,12 @@ start-e2e: ## start e2e test environment .PHONY: test-e2e test-e2e: install-devtools-local - ${DIST_DIR}/gotestsum --rerun-fails-report=rerunreport.txt --junitfile=junit.xml --format=testname --packages="./test/e2e" --rerun-fails=5 -- -timeout 60m -count 1 --tags e2e -p ${E2E_PARALLEL} -parallel ${E2E_PARALLEL} -v --short ./test/e2e ${E2E_TEST_OPTIONS} + ${DIST_DIR}/gotestsum --rerun-fails-report=rerunreport.txt --junitfile=junit-e2e-test.xml --format=testname --packages="./test/e2e" --rerun-fails=5 -- -timeout 60m -count 1 --tags e2e -p ${E2E_PARALLEL} -parallel ${E2E_PARALLEL} -v --short ./test/e2e ${E2E_TEST_OPTIONS} .PHONY: test-unit test-unit: install-devtools-local ## run unit tests mkdir -p coverage-output-unit - ${DIST_DIR}/gotestsum --junitfile=junit.xml --format=testname -- -covermode=count -coverprofile=coverage-output-unit/coverage.out `go list ./... | grep -v ./test/cmd/metrics-plugin-sample` + ${DIST_DIR}/gotestsum --junitfile=junit-unit-test.xml --format=testname -- -covermode=count -coverprofile=coverage-output-unit/coverage.out `go list ./... | grep -v ./test/cmd/metrics-plugin-sample` .PHONY: coverage diff --git a/go.mod b/go.mod index 13e74390fa..be23cdc3cc 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.30.3 - github.com/aws/aws-sdk-go-v2/config v1.27.26 + github.com/aws/aws-sdk-go-v2/config v1.27.27 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.3 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.3 @@ -82,7 +82,7 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.26 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.27 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 // indirect @@ -90,7 +90,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.22.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/go.sum b/go.sum index d08737f6d6..cbbadec5c5 100644 --- a/go.sum +++ b/go.sum @@ -98,10 +98,10 @@ github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WN github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= -github.com/aws/aws-sdk-go-v2/config v1.27.26 h1:T1kAefbKuNum/AbShMsZEro6eRkeOT8YILfE9wyjAYQ= -github.com/aws/aws-sdk-go-v2/config v1.27.26/go.mod h1:ivWHkAWFrw/nxty5Fku7soTIVdqZaZ7dw+tc5iGW3GA= -github.com/aws/aws-sdk-go-v2/credentials v1.17.26 h1:tsm8g/nJxi8+/7XyJJcP2dLrnK/5rkFp6+i2nhmz5fk= -github.com/aws/aws-sdk-go-v2/credentials v1.17.26/go.mod h1:3vAM49zkIa3q8WT6o9Ve5Z0vdByDMwmdScO0zvThTgI= +github.com/aws/aws-sdk-go-v2/config v1.27.27 h1:HdqgGt1OAP0HkEDDShEl0oSYa9ZZBSOmKpdpsDMdO90= +github.com/aws/aws-sdk-go-v2/config v1.27.27/go.mod h1:MVYamCg76dFNINkZFu4n4RjDixhVr51HLj4ErWzrVwg= +github.com/aws/aws-sdk-go-v2/credentials v1.17.27 h1:2raNba6gr2IfA0eqqiP2XiQ0UVOpGPgDSi0I9iAP+UI= +github.com/aws/aws-sdk-go-v2/credentials v1.17.27/go.mod h1:gniiwbGahQByxan6YjQUMcW4Aov6bLC3m+evgcoN4r4= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 h1:KreluoV8FZDEtI6Co2xuNk/UqI9iwMrOx/87PBNIKqw= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11/go.mod h1:SeSUYBLsMYFoRvHE0Tjvn7kbxaUhl75CJi1sbfhMxkU= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU= @@ -120,8 +120,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 h1:HGErhhrx github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.3 h1:Fv1vD2L65Jnp5QRsdiM64JvUM4Xe+E0JyVsRQKv6IeA= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.3/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 h1:BXx0ZIxvrJdSgSvKTZ+yRBeSqqgPM89VPlulEcl37tM= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw= github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE= From 3024c2a6fbc5e98911e6b38c39987534f593cfe5 Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Mon, 29 Jul 2024 14:59:33 -0500 Subject: [PATCH 098/219] chore: use codecov config and only send merged coverage file (#3751) * make sure config is used and only send merged coverage Signed-off-by: Zach Aller * checkout repo to get codecov config Signed-off-by: Zach Aller * use folder not file Signed-off-by: Zach Aller * disable search Signed-off-by: Zach Aller * switch merged output format Signed-off-by: Zach Aller * stop controller before upload Signed-off-by: Zach Aller * stop controller Signed-off-by: Zach Aller * stop controller Signed-off-by: Zach Aller * only stop on latest Signed-off-by: Zach Aller * print controller pids Signed-off-by: Zach Aller * fix erro Signed-off-by: Zach Aller * add ls Signed-off-by: Zach Aller * kill correct process Signed-off-by: Zach Aller * add proper cover for unit to ues with merge Signed-off-by: Zach Aller * upload directory now Signed-off-by: Zach Aller --------- Signed-off-by: Zach Aller --- .github/workflows/testing.yaml | 19 ++++++++++++++++--- Makefile | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml index d9862e5726..7c4282bea7 100644 --- a/.github/workflows/testing.yaml +++ b/.github/workflows/testing.yaml @@ -72,7 +72,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: coverage-output-unit - path: coverage-output-unit/coverage.out + path: coverage-output-unit test-e2e: strategy: @@ -123,8 +123,17 @@ jobs: uses: mxschmitt/action-tmate@v3 if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true'}} - name: Run e2e tests - run: make test-e2e + run: | + make test-e2e if: ${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true') }} + - name: Stop e2e tests controller + run: | + pgrep -f go-build -a + pkill -f go-build + sleep 5 + echo "done stopping process" + ls -lah coverage-output-e2e/ + if: ${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true' && matrix.kubernetes.latest)}} - name: Output Rerun Overview run: | [[ -f rerunreport.txt ]] && cat rerunreport.txt || echo "No rerun report found" @@ -160,6 +169,7 @@ jobs: with: go-version: ${{ env.GOLANG_VERSION }} id: go + - uses: actions/checkout@v4 - name: Get e2e code coverage uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: @@ -172,11 +182,14 @@ jobs: path: coverage-output-unit - name: combine-go-coverage run: | - go tool covdata percent -i=coverage-output-unit/,coverage-output-e2e/ -o full-coverage.out + go tool covdata textfmt -i=coverage-output-unit/,coverage-output-e2e/ -o full-coverage.out - name: Upload code coverage information to codecov.io uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0 with: file: full-coverage.out fail_ci_if_error: false + codecov_yml_path: .codecov.yml + disable_search: true + verbose: true env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file diff --git a/Makefile b/Makefile index 5f4ae3ded2..55b21af87c 100644 --- a/Makefile +++ b/Makefile @@ -245,7 +245,7 @@ test-e2e: install-devtools-local .PHONY: test-unit test-unit: install-devtools-local ## run unit tests mkdir -p coverage-output-unit - ${DIST_DIR}/gotestsum --junitfile=junit-unit-test.xml --format=testname -- -covermode=count -coverprofile=coverage-output-unit/coverage.out `go list ./... | grep -v ./test/cmd/metrics-plugin-sample` + ${DIST_DIR}/gotestsum --junitfile=junit-unit-test.xml --format=testname -- `go list ./... | grep -v ./test/cmd/metrics-plugin-sample` -cover -test.gocoverdir=$(CURDIR)/coverage-output-unit .PHONY: coverage From 65fc9ef4761ef9576246ec68179cbdd8a8d8132e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 09:33:52 -0500 Subject: [PATCH 099/219] chore(deps): bump docker/setup-buildx-action from 3.5.0 to 3.6.1 (#3755) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.5.0 to 3.6.1. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/aa33708b10e362ff993539393ff100fa93ed6a27...988b5a0280414f521da01fcc63a27aeeb4b104db) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 067f017484..85a337b988 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -79,7 +79,7 @@ jobs: cosign-release: 'v2.2.0' - uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0 - - uses: docker/setup-buildx-action@aa33708b10e362ff993539393ff100fa93ed6a27 # v3.5.0 + - uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1 - name: Setup tags for container image as a CSV type run: | diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a71f20f40f..863e7da737 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -98,7 +98,7 @@ jobs: uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@aa33708b10e362ff993539393ff100fa93ed6a27 # v3.5.0 + uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1 - name: Generate release artifacts run: | From 643d684f51b39af7539a8ae66672144cc67102f0 Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Wed, 31 Jul 2024 04:42:26 +0300 Subject: [PATCH 100/219] docs: added clarifications for short releases (#3753) * docs: added clarifications for short releases Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> * docs: clarify current Argo Rollout behavior Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> * docs: also clarify multiple versions Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --------- Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --- docs/FAQ.md | 2 ++ docs/best-practices.md | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index 861e4b3a80..caa9df475f 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,5 +1,7 @@ # FAQ +Be sure to read the [Best practices page](../best-practices) as well. + ## General ### Does Argo Rollouts depend on Argo CD or any other Argo project? diff --git a/docs/best-practices.md b/docs/best-practices.md index c268bb5d92..0ed32efbec 100644 --- a/docs/best-practices.md +++ b/docs/best-practices.md @@ -29,7 +29,23 @@ You should *NOT* use Argo Rollouts for preview/ephemeral environments. For that The recommended way to use Argo Rollouts is for brief deployments that take 15-20 minutes or maximum 1-2 hours. If you want to run new versions for days or weeks before deciding to promote, then Argo Rollouts is probably not the best solution for you. -Also, if you want to run a wave of multiple versions at the same time (i.e. have 1.1 and 1.2 and 1.3 running at the same time), know that Argo Rollouts was not designed for this scenario. +Keeping parallel releases for long times, complicates the deployment process a lot and opens several questions where different people have different views on how Argo Rollouts should work. + +For example let's say that you are testing for a week version 1.3 as stable and 1.4 as preview. +Then somebody deploys 1.5 + +1. Some people believe that the new state should be 1.3 stable and 1.5 as preview +1. Some people believe that the new state should be 1.4 stable and 1.5 as preview + +Currently Argo Rollouts follows the first approach, under the assumption that something was really wrong with 1.4 and 1.5 is the hotfix. + +And then let's say that 1.5 has an issue. Some people believe that Argo rollouts should "rollback" to 1.3 while other people think it should rollback to 1.4 + +Currently Argo Rollouts assumes that the version to rollback is always 1.3 regardless of how many "hotfixes" have been previewed in-between. + +All these problems are not present if you make the assumption that each release stays active only for a minimal time and you always create one new version when the previous one has finished. + +Also, if you want to run a wave of multiple versions at the same time (i.e. have 1.1 and 1.2 and 1.3 running at the same time), know that Argo Rollouts was not designed for this scenario. Argo Rollouts always works with the assumption that there is one stable/previous version and one preview/next version. A version that has just been promoted is assumed to be ready for production and has already passed all your tests (either manual or automated). @@ -41,6 +57,8 @@ While Argo Rollouts supports manual promotions and other manual pauses, these ar Ideally you should have proper metrics that tell you in 5-15 minutes if a deployment is successful or not. If you don't have those metrics, then you will miss a lot of value from Argo Rollouts. +If you are doing a deployment right now and then have an actual human looking at logs/metrics/traces for the next 2 hours, adopting Argo Rollouts is not going to help you a lot with automated deployments. + Get your [metrics](../features/analysis) in place first and test them with dry-runs before applying them to production deployments. From 6c873a95ec34e141243cc5e3846c69c9ce1c42d3 Mon Sep 17 00:00:00 2001 From: Martyn Dale Date: Wed, 31 Jul 2024 07:11:56 -0700 Subject: [PATCH 101/219] fix(dashboard): Update pod status logic to support native sidecars. Fixes #3366 (#3639) * Update pod status logic to support native sidecars Signed-off-by: Martyn Dale * Fix lint issues Signed-off-by: Martyn Dale --------- Signed-off-by: Martyn Dale --- pkg/kubectl-argo-rollouts/info/pod_info.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/kubectl-argo-rollouts/info/pod_info.go b/pkg/kubectl-argo-rollouts/info/pod_info.go index e53f350848..463657d70d 100644 --- a/pkg/kubectl-argo-rollouts/info/pod_info.go +++ b/pkg/kubectl-argo-rollouts/info/pod_info.go @@ -53,6 +53,12 @@ func newPodInfo(pod *corev1.Pod) rollout.PodInfo { }, } restarts := 0 + rs := make(map[string]bool, len(pod.Spec.InitContainers)) + for _, c := range pod.Spec.InitContainers { + p := c.RestartPolicy + rs[c.Name] = p != nil && *p == corev1.ContainerRestartPolicyAlways + } + totalContainers := len(pod.Spec.Containers) readyContainers := 0 @@ -69,7 +75,7 @@ func newPodInfo(pod *corev1.Pod) rollout.PodInfo { continue case container.State.Terminated != nil: // initialization is failed - if len(container.State.Terminated.Reason) == 0 { + if container.State.Terminated.Reason == "" { if container.State.Terminated.Signal != 0 { reason = fmt.Sprintf("Init:Signal:%d", container.State.Terminated.Signal) } else { @@ -79,6 +85,10 @@ func newPodInfo(pod *corev1.Pod) rollout.PodInfo { reason = "Init:" + container.State.Terminated.Reason } initializing = true + case rs[container.Name] && container.Started != nil && *container.Started: + if container.Ready { + continue + } case container.State.Waiting != nil && len(container.State.Waiting.Reason) > 0 && container.State.Waiting.Reason != "PodInitializing": reason = "Init:" + container.State.Waiting.Reason initializing = true From 708db68ed14d0739e964937d46edf8ba8affabd9 Mon Sep 17 00:00:00 2001 From: Bruno Aumiller Tarijon <42080746+BrunoTarijon@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:03:33 -0300 Subject: [PATCH 102/219] fix(controller): Get the right resourceName for traefik.io.Fixes #3615 (#3759) Signed-off-by: BrunoTarijon --- rollout/trafficrouting/traefik/traefik.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/rollout/trafficrouting/traefik/traefik.go b/rollout/trafficrouting/traefik/traefik.go index 8b5cfb7312..3782ee824e 100644 --- a/rollout/trafficrouting/traefik/traefik.go +++ b/rollout/trafficrouting/traefik/traefik.go @@ -23,12 +23,6 @@ const Type = "Traefik" const traefikServices = "traefikservices" const TraefikServiceUpdateError = "TraefikServiceUpdateError" -var ( - apiGroupToResource = map[string]string{ - defaults.GetTraefikAPIGroup(): traefikServices, - } -) - type ReconcilerConfig struct { Rollout *v1alpha1.Rollout Client ClientInterface @@ -41,6 +35,13 @@ type Reconciler struct { Recorder record.EventRecorder } +func apiGroupToResource(group string) string { + apiGroupToResource := map[string]string{ + defaults.GetTraefikAPIGroup(): traefikServices, + } + return apiGroupToResource[group] +} + func (r *Reconciler) sendWarningEvent(id, msg string) { r.sendEvent(corev1.EventTypeWarning, id, msg) } @@ -71,7 +72,8 @@ func GetMappingGVR() schema.GroupVersionResource { group := defaults.GetTraefikAPIGroup() parts := strings.Split(defaults.GetTraefikVersion(), "/") version := parts[len(parts)-1] - resourceName := apiGroupToResource[group] + resourceName := apiGroupToResource(group) + return schema.GroupVersionResource{ Group: group, Version: version, From f2c737c986906e3d8ce1dbd3979793e6bcd4bc44 Mon Sep 17 00:00:00 2001 From: John Wood Date: Tue, 6 Aug 2024 09:56:05 -0500 Subject: [PATCH 103/219] chore: Add Cloudflare to users (#3768) Add Cloudflare to users Signed-off-by: John Wood --- USERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/USERS.md b/USERS.md index ffdb01aaf1..77d972cd44 100644 --- a/USERS.md +++ b/USERS.md @@ -12,6 +12,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit 1. [BukuKas](https://bukukas.co.id/) 1. [Calm](https://www.calm.com/) 1. [CircleCI](https://circleci.com/) +1. [Cloudflare](https://cloudflare.com/) 1. [Codefresh](https://codefresh.io/) 1. [Credit Karma](https://creditkarma.com/) 1. [DaoCloud](https://daocloud.io) From cf469839c2b1912460f17a3f4cadacd325acf7ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 09:57:01 -0500 Subject: [PATCH 104/219] chore(deps): bump golang.org/x/oauth2 from 0.21.0 to 0.22.0 (#3766) Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.21.0 to 0.22.0. - [Commits](https://github.com/golang/oauth2/compare/v0.21.0...v0.22.0) --- updated-dependencies: - dependency-name: golang.org/x/oauth2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index be23cdc3cc..45559fc1e6 100644 --- a/go.mod +++ b/go.mod @@ -39,7 +39,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 - golang.org/x/oauth2 v0.21.0 + golang.org/x/oauth2 v0.22.0 google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 diff --git a/go.sum b/go.sum index cbbadec5c5..e86242e7c1 100644 --- a/go.sum +++ b/go.sum @@ -878,8 +878,8 @@ golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From 0ca5932701aabec0cc7d040ec8e04c765546fbab Mon Sep 17 00:00:00 2001 From: Aleksander Korzynski <89802643+akorzy-pl@users.noreply.github.com> Date: Tue, 6 Aug 2024 16:57:18 +0200 Subject: [PATCH 105/219] docs: add Priceline to USERS.md (#3764) Signed-off-by: Aleksander Korzynski <89802643+akorzy-pl@users.noreply.github.com> --- USERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/USERS.md b/USERS.md index 77d972cd44..a22b403410 100644 --- a/USERS.md +++ b/USERS.md @@ -37,6 +37,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit 1. [PagerDuty](https://www.pagerduty.com/) 1. [PayPal](https://www.paypal.com/) 1. [PayPay](https://paypay.ne.jp/) +1. [Priceline](https://priceline.com) 1. [Productboard](https://www.productboard.com) 1. [Quipper](https://www.quipper.com/) 1. [Quizlet](https://quizlet.com) From 827ce595c8d011c1bba05d48ffc0d110d27f438b Mon Sep 17 00:00:00 2001 From: benminter-treatwell <84128121+benminter-treatwell@users.noreply.github.com> Date: Tue, 6 Aug 2024 16:36:00 +0100 Subject: [PATCH 106/219] =?UTF-8?q?fix(controller):=20use=20the=20stableRS?= =?UTF-8?q?=20from=20the=20rollout=20context=20rather=20tha=E2=80=A6=20(#3?= =?UTF-8?q?664)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(controller): use the stableRS from the rollout context rather than inferring it from the active selector, to deal with the edge case where the stableRS != activeRS during analysis templates Signed-off-by: ben.minter * fix(controller): update tests which were relying on this bug(?) Signed-off-by: ben.minter * fix(controller): add clarity to comment in the case there is no stableRS Signed-off-by: ben.minter * fix(controller): add a test to assert that the stablers is not scaled by the reconiliation on start, by checking the log Signed-off-by: ben.minter --------- Signed-off-by: ben.minter --- rollout/analysis_test.go | 3 +- rollout/bluegreen.go | 16 +++--- rollout/bluegreen_test.go | 89 +++++++++++++++++++++++++++++++ rollout/ephemeralmetadata_test.go | 2 +- 4 files changed, 98 insertions(+), 12 deletions(-) diff --git a/rollout/analysis_test.go b/rollout/analysis_test.go index e12a898c1a..fa7fdc5b96 100644 --- a/rollout/analysis_test.go +++ b/rollout/analysis_test.go @@ -2532,7 +2532,7 @@ func TestRolloutPostPromotionAnalysisSuccess(t *testing.T) { Status: v1alpha1.AnalysisPhaseRunning, } - rs1 := newReplicaSetWithStatus(r1, 0, 0) + rs1 := newReplicaSetWithStatus(r1, 1, 1) rs2 := newReplicaSetWithStatus(r2, 1, 1) rs1PodHash := rs1.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] rs2PodHash := rs2.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] @@ -2558,6 +2558,7 @@ func TestRolloutPostPromotionAnalysisSuccess(t *testing.T) { patch := f.getPatchedRollout(patchIndex) expectedPatch := fmt.Sprintf(`{ "status": { + "replicas":2, "stableRS": "%s", "blueGreen": { "postPromotionAnalysisRunStatus":{"status":"Successful"} diff --git a/rollout/bluegreen.go b/rollout/bluegreen.go index 9904de9dab..7613852470 100644 --- a/rollout/bluegreen.go +++ b/rollout/bluegreen.go @@ -71,18 +71,14 @@ func (c *rolloutContext) rolloutBlueGreen() error { return c.syncRolloutStatusBlueGreen(previewSvc, activeSvc) } -func (c *rolloutContext) reconcileBlueGreenStableReplicaSet(activeSvc *corev1.Service) error { - if _, ok := activeSvc.Spec.Selector[v1alpha1.DefaultRolloutUniqueLabelKey]; !ok { - return nil - } - activeRS, _ := replicasetutil.GetReplicaSetByTemplateHash(c.allRSs, activeSvc.Spec.Selector[v1alpha1.DefaultRolloutUniqueLabelKey]) - if activeRS == nil { - c.log.Warn("There shouldn't be a nil active replicaset if the active Service selector is set") +func (c *rolloutContext) reconcileBlueGreenStableReplicaSet() error { + if c.stableRS == nil { + c.log.Info("Stable ReplicaSet doesn't exist and hence no reconciliation is required.") return nil } - c.log.Infof("Reconciling stable ReplicaSet '%s'", activeRS.Name) - _, _, err := c.scaleReplicaSetAndRecordEvent(activeRS, defaults.GetReplicasOrDefault(c.rollout.Spec.Replicas)) + c.log.Infof("Reconciling stable ReplicaSet '%s'", c.stableRS.Name) + _, _, err := c.scaleReplicaSetAndRecordEvent(c.stableRS, defaults.GetReplicasOrDefault(c.rollout.Spec.Replicas)) if err != nil { return fmt.Errorf("failed to scaleReplicaSetAndRecordEvent in reconcileBlueGreenStableReplicaSet: %w", err) } @@ -94,7 +90,7 @@ func (c *rolloutContext) reconcileBlueGreenReplicaSets(activeSvc *corev1.Service if err != nil { return err } - err = c.reconcileBlueGreenStableReplicaSet(activeSvc) + err = c.reconcileBlueGreenStableReplicaSet() if err != nil { return err } diff --git a/rollout/bluegreen_test.go b/rollout/bluegreen_test.go index 2ff9515fe3..b78ed8704d 100644 --- a/rollout/bluegreen_test.go +++ b/rollout/bluegreen_test.go @@ -1,12 +1,15 @@ package rollout import ( + "bytes" "encoding/json" "fmt" "strconv" + "strings" "testing" "time" + log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -1007,6 +1010,92 @@ func TestBlueGreenRolloutScaleUpdateActiveRS(t *testing.T) { f.run(getKey(r2, t)) } +func TestBlueGreenRolloutScaleUpdateStableRS(t *testing.T) { + f := newFixture(t) + defer f.Close() + + r1 := newBlueGreenRollout("foo", 1, nil, "active", "") + rs1 := newReplicaSetWithStatus(r1, 1, 1) + r2 := bumpVersion(r1) + + rs2 := newReplicaSetWithStatus(r2, 1, 1) + f.kubeobjects = append(f.kubeobjects, rs1, rs2) + f.replicaSetLister = append(f.replicaSetLister, rs1, rs2) + + rs1PodHash := rs1.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + rs2PodHash := rs2.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + + // Make the new RS the active and the old one stable to simulate post-promotion analysis step. + r2 = updateBlueGreenRolloutStatus(r2, rs2PodHash, rs2PodHash, rs1PodHash, 1, 1, 2, 1, false, true, false) + + f.rolloutLister = append(f.rolloutLister, r2) + + f.objects = append(f.objects, r2) + activeSvc := newService("active", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: rs2PodHash}, r2) + f.kubeobjects = append(f.kubeobjects, activeSvc) + f.serviceLister = append(f.serviceLister, activeSvc) + + f.expectPatchRolloutAction(r1) + + // Patch the rollout to get it in the state we want (old RS is stable and new is active) + f.run(getKey(r2, t)) + // Actually update the replicas now that we are in the desired state (old RS is stable and new is active) + r2.Spec.Replicas = pointer.Int32Ptr(2) + + f.expectUpdateReplicaSetAction(rs1) + f.expectUpdateReplicaSetAction(rs2) + f.run(getKey(r2, t)) +} + +func TestBlueGreenStableRSReconciliationShouldNotScaleOnFirstTimeRollout(t *testing.T) { + f := newFixture(t) + prevOutput := log.StandardLogger().Out + defer func() { + log.SetOutput(prevOutput) + }() + defer f.Close() + + // Setup Logging capture + buf := bytes.NewBufferString("") + log.SetOutput(buf) + + r := newBlueGreenRollout("foo", 1, nil, "active", "preview") + r.Status.Conditions = []v1alpha1.RolloutCondition{} + f.rolloutLister = append(f.rolloutLister, r) + f.objects = append(f.objects, r) + previewSvc := newService("preview", 80, nil, r) + activeSvc := newService("active", 80, nil, r) + f.kubeobjects = append(f.kubeobjects, previewSvc, activeSvc) + f.serviceLister = append(f.serviceLister, activeSvc, previewSvc) + + rs := newReplicaSet(r, 1) + rsPodHash := rs.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + generatedConditions := generateConditionsPatchWithCompleted(false, conditions.ReplicaSetUpdatedReason, rs, false, "", true) + + f.expectCreateReplicaSetAction(rs) + f.expectPatchServiceAction(previewSvc, rsPodHash) + f.expectUpdateReplicaSetAction(rs) // scale up RS + f.expectUpdateRolloutStatusAction(r) + expectedPatchWithoutSubs := `{ + "status":{ + "blueGreen" : { + "previewSelector": "%s" + }, + "conditions": %s, + "selector": "foo=bar", + "stableRS": "%s", + "phase": "Progressing", + "message": "more replicas need to be updated" + } + }` + expectedPatch := calculatePatch(r, fmt.Sprintf(expectedPatchWithoutSubs, rsPodHash, generatedConditions, rsPodHash)) + f.expectPatchRolloutActionWithPatch(r, expectedPatch) + f.run(getKey(r, t)) + + logMessage := buf.String() + assert.True(t, strings.Contains(logMessage, "msg=\"Stable ReplicaSet doesn't exist and hence no reconciliation is required.\""), logMessage) +} + func TestPreviewReplicaCountHandleScaleUpPreviewCheckPoint(t *testing.T) { t.Run("TrueAfterMeetingMinAvailable", func(t *testing.T) { f := newFixture(t) diff --git a/rollout/ephemeralmetadata_test.go b/rollout/ephemeralmetadata_test.go index 59daf1be0e..8241a1831c 100644 --- a/rollout/ephemeralmetadata_test.go +++ b/rollout/ephemeralmetadata_test.go @@ -169,7 +169,7 @@ func TestSyncBlueGreenEphemeralMetadataSecondRevision(t *testing.T) { f := newFixture(t) defer f.Close() - r1 := newBlueGreenRollout("foo", 1, nil, "active", "preview") + r1 := newBlueGreenRollout("foo", 3, nil, "active", "preview") r1.Spec.Strategy.BlueGreen.AutoPromotionEnabled = pointer.BoolPtr(false) r1.Annotations[annotations.RevisionAnnotation] = "1" r1.Spec.Strategy.BlueGreen.PreviewMetadata = &v1alpha1.PodTemplateMetadata{ From 48131ebedc32239d0b855d9beaf396ca32798f71 Mon Sep 17 00:00:00 2001 From: Hidetake Iwata Date: Thu, 8 Aug 2024 01:29:45 +0900 Subject: [PATCH 107/219] fix: Support kustomize v5 labels transformer. Fixes #3105 (#3775) * feat: add rollout-transform-2023-10-09.yaml which has been adapted for kustomize v5 Signed-off-by: Jethro Lee * Rename to rollout-transform-kustomize-v5.yaml Signed-off-by: Hidetake Iwata * Add link to doc Signed-off-by: Hidetake Iwata --------- Signed-off-by: Jethro Lee Signed-off-by: Hidetake Iwata Co-authored-by: Jethro Lee --- docs/features/kustomize.md | 7 + .../rollout-transform-kustomize-v5.yaml | 274 ++++++++++++++++++ 2 files changed, 281 insertions(+) create mode 100644 docs/features/kustomize/rollout-transform-kustomize-v5.yaml diff --git a/docs/features/kustomize.md b/docs/features/kustomize.md index e1a691b511..568d9d2a78 100644 --- a/docs/features/kustomize.md +++ b/docs/features/kustomize.md @@ -28,6 +28,13 @@ configurations: - https://argoproj.github.io/argo-rollouts/features/kustomize/rollout-transform.yaml ``` +- With Kustomize 5 it is possible to reference the configuration directly from a remote resource: + +```yaml +configurations: + - https://argoproj.github.io/argo-rollouts/features/kustomize/rollout-transform-kustomize-v5.yaml +``` + - With Kustomize 4.5.5 kustomize can use kubernetes OpenAPI data to get merge key and patch strategy information about [resource types](https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/openapi). For example, given the following rollout: ```yaml diff --git a/docs/features/kustomize/rollout-transform-kustomize-v5.yaml b/docs/features/kustomize/rollout-transform-kustomize-v5.yaml new file mode 100644 index 0000000000..2084a04554 --- /dev/null +++ b/docs/features/kustomize/rollout-transform-kustomize-v5.yaml @@ -0,0 +1,274 @@ +# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/namereference.go +nameReference: +- kind: ConfigMap + version: v1 + fieldSpecs: + - path: spec/template/spec/volumes/configMap/name + kind: Rollout + - path: spec/template/spec/containers/env/valueFrom/configMapKeyRef/name + kind: Rollout + - path: spec/template/spec/initContainers/env/valueFrom/configMapKeyRef/name + kind: Rollout + - path: spec/template/spec/containers/envFrom/configMapRef/name + kind: Rollout + - path: spec/template/spec/initContainers/envFrom/configMapRef/name + kind: Rollout + - path: spec/template/spec/volumes/projected/sources/configMap/name + kind: Rollout + - path: spec/templates/template/spec/volumes/configMap/name + kind: Experiment + - path: spec/templates/template/spec/containers/env/valueFrom/configMapKeyRef/name + kind: Experiment + - path: spec/templates/template/spec/initContainers/env/valueFrom/configMapKeyRef/name + kind: Experiment + - path: spec/templates/template/spec/containers/envFrom/configMapRef/name + kind: Experiment + - path: spec/templates/template/spec/initContainers/envFrom/configMapRef/name + kind: Experiment + - path: spec/templates/template/spec/volumes/projected/sources/configMap/name + kind: Experiment + - path: spec/metrics/provider/job/spec/template/spec/volumes/configMap/name + kind: AnalysisTemplate + - path: spec/metrics/provider/job/spec/template/spec/containers/env/valueFrom/configMapKeyRef/name + kind: AnalysisTemplate + - path: spec/metrics/provider/job/spec/template/spec/initContainers/env/valueFrom/configMapKeyRef/name + kind: AnalysisTemplate + - path: spec/metrics/provider/job/spec/template/spec/containers/envFrom/configMapRef/name + kind: AnalysisTemplate + - path: spec/metrics/provider/job/spec/template/spec/initContainers/envFrom/configMapRef/name + kind: AnalysisTemplate + - path: spec/metrics/provider/job/spec/template/spec/volumes/projected/sources/configMap/name + kind: AnalysisTemplate +- kind: Secret + version: v1 + fieldSpecs: + - path: spec/template/spec/volumes/secret/secretName + kind: Rollout + - path: spec/template/spec/containers/env/valueFrom/secretKeyRef/name + kind: Rollout + - path: spec/template/spec/initContainers/env/valueFrom/secretKeyRef/name + kind: Rollout + - path: spec/template/spec/containers/envFrom/secretRef/name + kind: Rollout + - path: spec/template/spec/initContainers/envFrom/secretRef/name + kind: Rollout + - path: spec/template/spec/imagePullSecrets/name + kind: Rollout + - path: spec/template/spec/volumes/projected/sources/secret/name + kind: Rollout + - path: spec/templates/template/spec/volumes/secret/secretName + kind: Experiment + - path: spec/templates/template/spec/containers/env/valueFrom/secretKeyRef/name + kind: Experiment + - path: spec/templates/template/spec/initContainers/env/valueFrom/secretKeyRef/name + kind: Experiment + - path: spec/templates/template/spec/containers/envFrom/secretRef/name + kind: Experiment + - path: spec/templates/template/spec/initContainers/envFrom/secretRef/name + kind: Experiment + - path: spec/templates/template/spec/imagePullSecrets/name + kind: Experiment + - path: spec/templates/template/spec/volumes/projected/sources/secret/name + kind: Experiment + - path: spec/metrics/provider/job/spec/template/spec/volumes/secret/secretName + kind: AnalysisTemplate + - path: spec/metrics/provider/job/spec/template/spec/containers/env/valueFrom/secretKeyRef/name + kind: AnalysisTemplate + - path: spec/metrics/provider/job/spec/template/spec/initContainers/env/valueFrom/secretKeyRef/name + kind: AnalysisTemplate + - path: spec/metrics/provider/job/spec/template/spec/containers/envFrom/secretRef/name + kind: AnalysisTemplate + - path: spec/metrics/provider/job/spec/template/spec/initContainers/envFrom/secretRef/name + kind: AnalysisTemplate + - path: spec/metrics/provider/job/spec/template/spec/imagePullSecrets/name + kind: AnalysisTemplate + - path: spec/metrics/provider/job/spec/template/spec/volumes/projected/sources/secret/name + kind: AnalysisTemplate +- kind: ServiceAccount + version: v1 + fieldSpecs: + - path: spec/template/spec/serviceAccountName + kind: Rollout + - path: spec/templates/template/spec/serviceAccountName + kind: Experiment + - path: spec/metrics/provider/job/spec/template/spec/serviceAccountName + kind: AnalysisTemplate +- kind: PersistentVolumeClaim + version: v1 + fieldSpecs: + - path: spec/template/spec/volumes/persistentVolumeClaim/claimName + kind: Rollout + - path: spec/templates/template/spec/volumes/persistentVolumeClaim/claimName + kind: Experiment + - path: spec/metrics/provider/job/spec/template/spec/volumes/persistentVolumeClaim/claimName + kind: AnalysisTemplate +- kind: PriorityClass + version: v1 + group: scheduling.k8s.io + fieldSpecs: + - path: spec/template/spec/priorityClassName + kind: Rollout + - path: spec/templates/template/spec/priorityClassName + kind: Experiment + - path: spec/metrics/provider/job/spec/template/spec/priorityClassName + kind: AnalysisTemplate + +# The name references below are unique to Rollouts and not applicable to Deployment +- kind: Service + version: v1 + fieldSpecs: + - path: spec/strategy/blueGreen/activeService + kind: Rollout + - path: spec/strategy/blueGreen/previewService + kind: Rollout + - path: spec/strategy/canary/canaryService + kind: Rollout + - path: spec/strategy/canary/stableService + kind: Rollout + - path: spec/strategy/canary/trafficRouting/alb/rootService + kind: Rollout +- kind: VirtualService + group: networking.istio.io + fieldSpecs: + - path: spec/strategy/canary/trafficRouting/istio/virtualService/name + kind: Rollout +- kind: DestinationRule + group: networking.istio.io + fieldSpecs: + - path: spec/strategy/canary/trafficRouting/istio/destinationRule/name + kind: Rollout +- kind: Ingress + group: networking.k8s.io + fieldSpecs: + - path: spec/strategy/canary/trafficRouting/alb/ingress + kind: Rollout + - path: spec/strategy/canary/trafficRouting/nginx/stableIngress + kind: Rollout +- kind: Ingress + group: extensions + fieldSpecs: + - path: spec/strategy/canary/trafficRouting/alb/ingress + kind: Rollout + - path: spec/strategy/canary/trafficRouting/nginx/stableIngress + kind: Rollout +- kind: AnalysisTemplate + group: argoproj.io + fieldSpecs: + - path: spec/strategy/blueGreen/prePromotionAnalysis/templates/templateName + kind: Rollout + - path: spec/strategy/blueGreen/postPromotionAnalysis/templates/templateName + kind: Rollout + - path: spec/strategy/canary/analysis/templates/templateName + kind: Rollout + - path: spec/strategy/canary/steps/analysis/templates/templateName + kind: Rollout + - path: spec/strategy/canary/steps/experiment/analyses/templateName + kind: Rollout + - path: spec/analyses/templateName + kind: Experiment +- kind: Rollout + fieldSpecs: + - path: spec/scaleTargetRef/name + kind: HorizontalPodAutoscaler +- kind: Deployment + version: v1 + group: apps + fieldSpecs: + - path: spec/workloadRef/name + kind: Rollout +- kind: Mapping + group: getambassador.io + fieldSpecs: + - path: spec/strategy/canary/trafficRouting/ambassador/mappings + kind: Rollout + +# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/commonlabels.go +commonLabels: +- path: spec/selector/matchLabels + create: true + kind: Rollout +- path: spec/template/metadata/labels + create: true + kind: Rollout +- path: spec/template/spec/affinity/podAffinity/preferredDuringSchedulingIgnoredDuringExecution/podAffinityTerm/labelSelector/matchLabels + create: false + kind: Rollout +- path: spec/template/spec/affinity/podAffinity/requiredDuringSchedulingIgnoredDuringExecution/labelSelector/matchLabels + create: false + kind: Rollout +- path: spec/template/spec/affinity/podAntiAffinity/preferredDuringSchedulingIgnoredDuringExecution/podAffinityTerm/labelSelector/matchLabels + create: false + kind: Rollout +- path: spec/template/spec/affinity/podAntiAffinity/requiredDuringSchedulingIgnoredDuringExecution/labelSelector/matchLabels + create: false + kind: Rollout + +templateLabels: +- path: spec/template/metadata/labels + create: true + kind: Rollout + +# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/commonannotations.go +commonAnnotations: +- path: spec/template/metadata/annotations + create: true + kind: Rollout + +# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/varreference.go +varReference: +- path: spec/template/spec/containers/args + kind: Rollout +- path: spec/template/spec/containers/command + kind: Rollout +- path: spec/template/spec/containers/env/value + kind: Rollout +- path: spec/template/spec/containers/volumeMounts/mountPath + kind: Rollout +- path: spec/template/spec/initContainers/args + kind: Rollout +- path: spec/template/spec/initContainers/command + kind: Rollout +- path: spec/template/spec/initContainers/env/value + kind: Rollout +- path: spec/template/spec/initContainers/volumeMounts/mountPath + kind: Rollout +- path: spec/templates/template/spec/containers/args + kind: Experiment +- path: spec/templates/template/spec/containers/command + kind: Experiment +- path: spec/templates/template/spec/containers/env/value + kind: Experiment +- path: spec/templates/template/spec/containers/volumeMounts/mountPath + kind: Experiment +- path: spec/templates/template/spec/initContainers/args + kind: Experiment +- path: spec/templates/template/spec/initContainers/command + kind: Experiment +- path: spec/templates/template/spec/initContainers/env/value + kind: Experiment +- path: spec/templates/template/spec/initContainers/volumeMounts/mountPath + kind: Experiment +- path: spec/metrics/provider/job/spec/template/spec/containers/args + kind: AnalysisTemplate +- path: spec/metrics/provider/job/spec/template/spec/containers/command + kind: AnalysisTemplate +- path: spec/metrics/provider/job/spec/template/spec/containers/env/value + kind: AnalysisTemplate +- path: spec/metrics/provider/job/spec/template/spec/containers/volumeMounts/mountPath + kind: AnalysisTemplate +- path: spec/metrics/provider/job/spec/template/spec/initContainers/args + kind: AnalysisTemplate +- path: spec/metrics/provider/job/spec/template/spec/initContainers/command + kind: AnalysisTemplate +- path: spec/metrics/provider/job/spec/template/spec/initContainers/env/value + kind: AnalysisTemplate +- path: spec/metrics/provider/job/spec/template/spec/initContainers/volumeMounts/mountPath + kind: AnalysisTemplate +- path: spec/metrics/provider/job/spec/template/spec/volumes/nfs/server + kind: AnalysisTemplate + +# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/replicas.go +replicas: +- path: spec/replicas + create: true + kind: Rollout From 74c1a947ab36670ae01a45993a0c5abb44af4677 Mon Sep 17 00:00:00 2001 From: Alexandre Gaudreault Date: Thu, 8 Aug 2024 09:58:42 -0400 Subject: [PATCH 108/219] feat(controller): add canary steps plugin (#3521) * making code for step plugin Signed-off-by: Alexandre Gaudreault * codegen Signed-off-by: Alexandre Gaudreault * unit tests Signed-off-by: Alexandre Gaudreault * rpc tests Signed-off-by: Alexandre Gaudreault * add rpc plugin tests Signed-off-by: Alexandre Gaudreault * better message Signed-off-by: Alexandre Gaudreault * add order test Signed-off-by: Alexandre Gaudreault * implement terminate Signed-off-by: Alexandre Gaudreault * Terminate tests Signed-off-by: Alexandre Gaudreault * aborted logic + some unit test Signed-off-by: Alexandre Gaudreault * unit test Signed-off-by: Alexandre Gaudreault * abort test Signed-off-by: Alexandre Gaudreault * load plugin Signed-off-by: Alexandre Gaudreault * more tests Signed-off-by: Alexandre Gaudreault * dont use newStatus Signed-off-by: Alexandre Gaudreault * codegen preserve fields Signed-off-by: Alexandre Gaudreault * some test before full promote problem Signed-off-by: Alexandre Gaudreault * fix full promotion Signed-off-by: Alexandre Gaudreault * fix plugins Signed-off-by: Alexandre Gaudreault * codegen Signed-off-by: Alexandre Gaudreault * add disabled rollout Signed-off-by: Alexandre Gaudreault * codegen Signed-off-by: Alexandre Gaudreault * fix duration cast Signed-off-by: Alexandre Gaudreault * refactor to use context object Signed-off-by: Alexandre Gaudreault * adding debug logs. Signed-off-by: Alexandre Gaudreault * need to adjust the backoff on each reconcile Signed-off-by: Alexandre Gaudreault * fix e2e Signed-off-by: Alexandre Gaudreault * unit test Signed-off-by: Alexandre Gaudreault * fix abort and promote logic Signed-off-by: Alexandre Gaudreault * fix aborted rollout do not retry Signed-off-by: Alexandre Gaudreault * add event Signed-off-by: Alexandre Gaudreault * change enabled to status Signed-off-by: Alexandre Gaudreault * unit tests Signed-off-by: Alexandre Gaudreault * more test Signed-off-by: Alexandre Gaudreault * cleanup Signed-off-by: Alexandre Gaudreault * add docs Signed-off-by: Alexandre Gaudreault * docs Signed-off-by: Alexandre Gaudreault * makefile for e2e Signed-off-by: Alexandre Gaudreault * disable e2e when not configured Signed-off-by: Alexandre Gaudreault * Add some UI for the extension Signed-off-by: Alexandre Gaudreault * codegen Signed-off-by: Zach Aller --------- Signed-off-by: Alexandre Gaudreault Signed-off-by: Zach Aller Co-authored-by: Zach Aller --- Dockerfile.dev | 3 + Makefile | 32 +- docs/CONTRIBUTING.md | 80 +- go.mod | 2 +- hack/update-mocks.sh | 10 + manifests/crds/rollout-crd.yaml | 49 + manifests/install.yaml | 49 + metricproviders/plugin/client/client.go | 3 +- pkg/apiclient/rollout/rollout.swagger.json | 81 + pkg/apis/api-rules/violation_exceptions.list | 1 + pkg/apis/rollouts/v1alpha1/generated.pb.go | 2287 ++++++++++++----- pkg/apis/rollouts/v1alpha1/generated.proto | 58 + .../rollouts/v1alpha1/openapi_generated.go | 153 +- pkg/apis/rollouts/v1alpha1/types.go | 88 + .../v1alpha1/zz_generated.deepcopy.go | 66 + pkg/apis/rollouts/validation/validation.go | 10 +- rollout/canary.go | 11 +- rollout/context.go | 5 +- rollout/controller.go | 5 + rollout/stepplugin.go | 280 ++ rollout/stepplugin_test.go | 896 +++++++ rollout/steps/plugin/client/client.go | 105 + rollout/steps/plugin/mocks/Resolver.go | 61 + rollout/steps/plugin/mocks/StepPlugin.go | 118 + rollout/steps/plugin/plugin.go | 255 ++ rollout/steps/plugin/plugin_test.go | 769 ++++++ rollout/steps/plugin/resolver.go | 53 + rollout/steps/plugin/rpc/mocks/StepPlugin.go | 150 ++ rollout/steps/plugin/rpc/rpc.go | 197 ++ rollout/steps/plugin/rpc/rpc_test.go | 149 ++ .../plugin/rpc/rpc_test_implementation.go | 29 + rollout/sync.go | 3 +- .../trafficrouting/plugin/client/client.go | 3 +- .../step-plugin-e2e/internal/plugin/plugin.go | 172 ++ test/cmd/step-plugin-e2e/main.go | 60 + .../internal/plugin/plugin.go | 263 ++ .../internal/plugin/plugin_test.go | 368 +++ test/cmd/step-plugin-sample/main.go | 86 + test/cmd/step-plugin-sample/main_test.go | 107 + test/e2e/canary_test.go | 2 +- .../e2e/step-plugin/argo-rollouts-config.yaml | 17 + test/e2e/step-plugin/disabled-rollout.yaml | 31 + test/e2e/step-plugin/invalid-rollout.yaml | 26 + test/e2e/step-plugin/template-rollout.yaml | 32 + test/e2e/step_plugin_test.go | 338 +++ test/fixtures/common.go | 12 + test/fixtures/given.go | 7 +- test/fixtures/then.go | 9 + test/fixtures/when.go | 12 + ui/src/app/components/rollout/rollout.scss | 4 + ui/src/app/components/rollout/rollout.tsx | 27 +- ui/src/models/rollout/generated/api.ts | 110 + utils/conditions/conditions.go | 11 + utils/config/config.go | 67 +- utils/plugin/downloader_test.go | 2 +- utils/plugin/plugin.go | 30 +- utils/plugin/plugin_test.go | 56 +- utils/plugin/types/steps.go | 55 + utils/plugin/types/types.go | 47 +- utils/rollout/rolloututil.go | 3 + utils/rollout/rolloututil_test.go | 4 + 61 files changed, 7233 insertions(+), 786 deletions(-) create mode 100644 rollout/stepplugin.go create mode 100644 rollout/stepplugin_test.go create mode 100644 rollout/steps/plugin/client/client.go create mode 100644 rollout/steps/plugin/mocks/Resolver.go create mode 100644 rollout/steps/plugin/mocks/StepPlugin.go create mode 100644 rollout/steps/plugin/plugin.go create mode 100644 rollout/steps/plugin/plugin_test.go create mode 100644 rollout/steps/plugin/resolver.go create mode 100644 rollout/steps/plugin/rpc/mocks/StepPlugin.go create mode 100644 rollout/steps/plugin/rpc/rpc.go create mode 100644 rollout/steps/plugin/rpc/rpc_test.go create mode 100644 rollout/steps/plugin/rpc/rpc_test_implementation.go create mode 100644 test/cmd/step-plugin-e2e/internal/plugin/plugin.go create mode 100644 test/cmd/step-plugin-e2e/main.go create mode 100644 test/cmd/step-plugin-sample/internal/plugin/plugin.go create mode 100644 test/cmd/step-plugin-sample/internal/plugin/plugin_test.go create mode 100644 test/cmd/step-plugin-sample/main.go create mode 100644 test/cmd/step-plugin-sample/main_test.go create mode 100644 test/e2e/step-plugin/argo-rollouts-config.yaml create mode 100644 test/e2e/step-plugin/disabled-rollout.yaml create mode 100644 test/e2e/step-plugin/invalid-rollout.yaml create mode 100644 test/e2e/step-plugin/template-rollout.yaml create mode 100644 test/e2e/step_plugin_test.go create mode 100644 utils/plugin/types/steps.go diff --git a/Dockerfile.dev b/Dockerfile.dev index 7c3fc3f30c..184d4e33e9 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -12,9 +12,12 @@ FROM gcr.io/distroless/static-debian11 COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ COPY rollouts-controller-linux-amd64 /bin/rollouts-controller +COPY step-plugin-e2e-linux-amd64 /bin/plugin-files/step-plugin-e2e # Use numeric user, allows kubernetes to identify this user as being # non-root when we use a security context with runAsNonRoot: true USER 999 +WORKDIR /home/argo-rollouts + ENTRYPOINT [ "/bin/rollouts-controller" ] diff --git a/Makefile b/Makefile index 55b21af87c..7df22e7cce 100644 --- a/Makefile +++ b/Makefile @@ -12,13 +12,17 @@ GIT_TREE_STATE=$(shell if [ -z "`git status --porcelain`" ]; then echo "clean" ; GIT_REMOTE_REPO=upstream VERSION=$(shell if [ ! -z "${GIT_TAG}" ] ; then echo "${GIT_TAG}" | sed -e "s/^v//" ; else cat VERSION ; fi) + +TARGET_ARCH?=linux/amd64 + # docker image publishing options -DOCKER_PUSH=false -IMAGE_TAG=latest +DOCKER_PUSH ?= false +IMAGE_TAG ?= latest # build development images DEV_IMAGE ?= false # E2E variables +E2E_K8S_CONTEXT ?= rancher-desktop E2E_INSTANCE_ID ?= argo-rollouts-e2e E2E_TEST_OPTIONS ?= E2E_PARALLEL ?= 1 @@ -149,6 +153,9 @@ gen-crd: install-go-tools-local ## generate crd manifests gen-mocks: install-go-tools-local ## generate mock files ./hack/update-mocks.sh +gen-mocks-fast: + ./hack/update-mocks.sh + # generates openapi_generated.go .PHONY: gen-openapi gen-openapi: $(DIST_DIR)/openapi-gen ## generate openapi files @@ -200,10 +207,11 @@ builder-image: ## build builder image .PHONY: image image: ifeq ($(DEV_IMAGE), true) + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/step-plugin-e2e-linux-amd64 ./test/cmd/step-plugin-e2e CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/rollouts-controller-linux-amd64 ./cmd/rollouts-controller - DOCKER_BUILDKIT=1 docker build -t $(IMAGE_PREFIX)argo-rollouts:$(IMAGE_TAG) -f Dockerfile.dev ${DIST_DIR} + DOCKER_BUILDKIT=1 docker build --platform=$(TARGET_ARCH) -t $(IMAGE_PREFIX)argo-rollouts:$(IMAGE_TAG) -f Dockerfile.dev ${DIST_DIR} else - DOCKER_BUILDKIT=1 docker build -t $(IMAGE_PREFIX)argo-rollouts:$(IMAGE_TAG) . + DOCKER_BUILDKIT=1 docker build --platform=$(TARGET_ARCH) -t $(IMAGE_PREFIX)argo-rollouts:$(IMAGE_TAG) . endif @if [ "$(DOCKER_PUSH)" = "true" ] ; then docker push $(IMAGE_PREFIX)argo-rollouts:$(IMAGE_TAG) ; fi @@ -212,15 +220,19 @@ endif # https://www.jetbrains.com/help/go/attach-to-running-go-processes-with-debugger.html .PHONY: build-sample-metric-plugin-debug build-sample-metric-plugin-debug: ## build sample metric plugin with debug info - go build -gcflags="all=-N -l" -o metric-plugin test/cmd/metrics-plugin-sample/main.go + go build -gcflags="all=-N -l" -o plugin-bin/metric-plugin test/cmd/metrics-plugin-sample/main.go .PHONY: build-sample-traffic-plugin-debug build-sample-traffic-plugin-debug: ## build sample traffic plugin with debug info - go build -gcflags="all=-N -l" -o traffic-plugin test/cmd/trafficrouter-plugin-sample/main.go + go build -gcflags="all=-N -l" -o plugin-bin/traffic-plugin test/cmd/trafficrouter-plugin-sample/main.go + +.PHONY: build-sample-step-plugin-debug +build-sample-step-plugin-debug: ## build sample traffic plugin with debug info + go build -gcflags="all=-N -l" -o plugin-bin/step-plugin test/cmd/step-plugin-sample/main.go .PHONY: plugin-image plugin-image: ## build plugin image - DOCKER_BUILDKIT=1 docker build --target kubectl-argo-rollouts -t $(IMAGE_PREFIX)kubectl-argo-rollouts:$(IMAGE_TAG) . + DOCKER_BUILDKIT=1 docker build --platform=$(TARGET_ARCH) --target kubectl-argo-rollouts -t $(IMAGE_PREFIX)kubectl-argo-rollouts:$(IMAGE_TAG) . if [ "$(DOCKER_PUSH)" = "true" ] ; then docker push $(IMAGE_PREFIX)kubectl-argo-rollouts:$(IMAGE_TAG) ; fi ##@ Test @@ -233,6 +245,12 @@ test: test-kustomize ## run all tests test-kustomize: ## run kustomize tests ./test/kustomize/test.sh +setup-e2e: + @kubectl apply --context='${E2E_K8S_CONTEXT}' -f manifests/crds/rollout-crd.yaml + @kubectl apply --context='${E2E_K8S_CONTEXT}' -n argo-rollouts -f test/e2e/step-plugin/argo-rollouts-config.yaml + @rm -rf plugin-bin + @go build -gcflags="all=-N -l" -o plugin-bin/e2e-step-plugin test/cmd/step-plugin-e2e/main.go + .PHONY: start-e2e start-e2e: ## start e2e test environment mkdir -p coverage-output-e2e diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index b2c74299d6..70ce3bfb22 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -1,24 +1,27 @@ # Contributing + ## Before You Start + Argo Rollouts is written in Golang. If you do not have a good grounding in Go, try out [the tutorial](https://tour.golang.org/). ## Pre-requisites + Install: -* [docker](https://docs.docker.com/install/#supported-platforms) -* [golang](https://golang.org/) -* [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) -* [kustomize](https://github.com/kubernetes-sigs/kustomize/releases) >= 4.5.5 -* [k3d](https://k3d.io/) recommended +- [docker](https://docs.docker.com/install/#supported-platforms) +- [golang](https://golang.org/) +- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) +- [kustomize](https://github.com/kubernetes-sigs/kustomize/releases) >= 4.5.5 +- [k3d](https://k3d.io/) recommended Kustomize is required for unit tests (`make test` is using it), so you [must install it](https://kubectl.docs.kubernetes.io/installation/kustomize/) locally if you wish to make code contributions to Argo Rollouts. Argo Rollout additionally uses the following tools -* `golangci-lint` to lint the project. -* `protoc` and `swagger-codegen` to generate proto related files -* `yarn` to build the UI +- `golangci-lint` to lint the project. +- `protoc` and `swagger-codegen` to generate proto related files +- `yarn` to build the UI Run the following commands to install them: @@ -56,10 +59,9 @@ cd ~/go/src/github.com/argoproj/argo-rollouts The `make controller` command will build the controller. -* `make install-tools-local` - Runs scripts to install codegen utility CLIs necessary for codegen. - -* `make codegen` - Runs the code generator that creates the informers, client, lister, and deepcopies from the types.go and modifies the open-api spec. +- `make install-tools-local` - Runs scripts to install codegen utility CLIs necessary for codegen. +- `make codegen` - Runs the code generator that creates the informers, client, lister, and deepcopies from the types.go and modifies the open-api spec. ## Running Controller Locally @@ -83,11 +85,7 @@ make test ## Running E2E tests The end-to-end tests need to run against a kubernetes cluster with the Argo Rollouts controller -running. The rollout controller can be started with the command: - -``` -make start-e2e -``` +running. Start and prepare your cluster for e2e tests: @@ -98,6 +96,12 @@ kubectl apply -k manifests/crds kubectl apply -f test/e2e/crds ``` +The rollout controller can be started with the command: + +``` +make start-e2e +``` + Then run the e2e tests: ``` @@ -112,9 +116,10 @@ E2E_TEST_OPTIONS="-run 'TestCanarySuite' -testify.m 'TestCanaryScaleDownOnAbortN ## Running the UI -If you'd like to run the UI locally, you first need a running Rollouts controller. This can be a locally running controller with a k3d cluster, as described above, or a controller running in a remote Kubernetes cluster. +If you'd like to run the UI locally, you first need a running Rollouts controller. This can be a locally running controller with a k3d cluster, as described above, or a controller running in a remote Kubernetes cluster. In order for the local React app to communicate with the controller and Kubernetes API, run the following to open a port forward to the dashboard: + ```bash kubectl argo rollouts dashboard ``` @@ -127,6 +132,7 @@ make plugin ``` In another terminal, run the following to start the UI: + ```bash cd ui yarn install @@ -142,11 +148,11 @@ that handle a specific aspect of Progressive Delivery. The controllers are: -* [Rollout Controller](https://github.com/argoproj/argo-rollouts/blob/master/rollout/controller.go) -* [Service Controller](https://github.com/argoproj/argo-rollouts/blob/master/service/service.go) -* [Ingress Controller](https://github.com/argoproj/argo-rollouts/blob/master/ingress/ingress.go) -* [Experiment Controller](https://github.com/argoproj/argo-rollouts/blob/master/experiments/controller.go) -* [AnalysisRun Controller](https://github.com/argoproj/argo-rollouts/blob/master/analysis/controller.go) +- [Rollout Controller](https://github.com/argoproj/argo-rollouts/blob/master/rollout/controller.go) +- [Service Controller](https://github.com/argoproj/argo-rollouts/blob/master/service/service.go) +- [Ingress Controller](https://github.com/argoproj/argo-rollouts/blob/master/ingress/ingress.go) +- [Experiment Controller](https://github.com/argoproj/argo-rollouts/blob/master/experiments/controller.go) +- [AnalysisRun Controller](https://github.com/argoproj/argo-rollouts/blob/master/analysis/controller.go) ### Tips @@ -158,36 +164,35 @@ KUBECONFIG=~/.kube/minikube make test-e2e ``` 2. To run a specific e2e test, set the `E2E_TEST_OPTIONS` environment variable to specify the test -(or test regex): + (or test regex): ```shell make test-e2e E2E_TEST_OPTIONS="-testify.m ^TestRolloutRestart$" ``` 3. The e2e tests are designed to run as quickly as possible, eliminating readiness and termination -delays. However, it is often desired to artificially slow down the tests for debugging purposes, -as well as to understand what the test is doing. To delay startup and termination of pods, set the -`E2E_POD_DELAY` to an integer value in seconds. This environment variable is often coupled with -`E2E_TEST_OPTIONS` to debug and slow down a specific test. + delays. However, it is often desired to artificially slow down the tests for debugging purposes, + as well as to understand what the test is doing. To delay startup and termination of pods, set the + `E2E_POD_DELAY` to an integer value in seconds. This environment variable is often coupled with + `E2E_TEST_OPTIONS` to debug and slow down a specific test. ```shell make test-e2e E2E_POD_DELAY=10 ``` 4. Increasing the timeout. The E2E tests time out waiting on conditions to be met within 60 seconds. -If debugging the rollout controller, it may be useful to increase this timeout while say sitting -at a debugger breakpoint: + If debugging the rollout controller, it may be useful to increase this timeout while say sitting + at a debugger breakpoint: ```shell make test-e2e E2E_WAIT_TIMEOUT=999999 ``` - 5. The e2e tests leverage a feature of the controller allowing the controller to be sharded with -a user-specific "instance id" label. This allows the tests to operate only on rollouts with the -specified label, and prevents any other controllers (including the system rollout controller), -from also operating on the same set of rollouts. This value can be changed (from the default of -`argo-rollouts-e2e`), using the `E2E_INSTANCE_ID` environment variable: + a user-specific "instance id" label. This allows the tests to operate only on rollouts with the + specified label, and prevents any other controllers (including the system rollout controller), + from also operating on the same set of rollouts. This value can be changed (from the default of + `argo-rollouts-e2e`), using the `E2E_INSTANCE_ID` environment variable: ```shell make start-e2e E2E_INSTANCE_ID=foo @@ -200,7 +205,6 @@ Alternatively, the e2e tests can be run against the system controller (i.e. with make start-e2e E2E_INSTANCE_ID='' ``` - 6. Working on CRDs? While editing them directly works when you are finding the shape of things you want, the final CRDs are autogenerated. Make sure to regenerate them by running `make gen-crd` before submitting PRs. They are controlled by the relevant annotations in the types file: eg: Analysis Templates are controlled by annotations in `pkg/apis/rollouts/v1alpha1/analysis_types.go`. @@ -242,14 +246,16 @@ kubectl -n argo-rollouts apply -f manifests/install.yaml ``` ## Upgrading Kubernetes Libraries + Argo Rollouts has a dependency on the kubernetes/kubernetes repo for some of the functionality that has not been pushed into the other kubernetes repositories yet. In order to import the kubernetes/kubernetes repo, all of the associated repos have to pinned to the correct version specified by the kubernetes/kubernetes release. The `./hack/update-k8s-dependencies.sh` updates all the dependencies to the those correct versions. ## Upgrading Notifications Engine -Argo Rollouts has a dependency on the [argoproj/notifications-engines](https://github.com/argoproj/notifications-engine) repo -for the notifications functionality and related documentation. + +Argo Rollouts has a dependency on the [argoproj/notifications-engines](https://github.com/argoproj/notifications-engine) repo +for the notifications functionality and related documentation. This is updated by upgrading the Go library in `go.mod` by running the commands: diff --git a/go.mod b/go.mod index 45559fc1e6..2a7073409c 100644 --- a/go.mod +++ b/go.mod @@ -19,6 +19,7 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.4 + github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/go-plugin v1.6.1 github.com/influxdata/influxdb-client-go/v2 v2.13.0 @@ -128,7 +129,6 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect diff --git a/hack/update-mocks.sh b/hack/update-mocks.sh index 6f1bcfad4a..9e4f397db1 100755 --- a/hack/update-mocks.sh +++ b/hack/update-mocks.sh @@ -21,3 +21,13 @@ mockery \ --dir "${PROJECT_ROOT}"/rollout/trafficrouting \ --name TrafficRoutingReconciler \ --output "${PROJECT_ROOT}"/rollout/mocks + +mockery \ + --dir "${PROJECT_ROOT}"/rollout/steps/plugin \ + --name "Resolver|StepPlugin" \ + --output "${PROJECT_ROOT}"/rollout/steps/plugin/mocks + +mockery \ + --dir "${PROJECT_ROOT}"/rollout/steps/plugin/rpc \ + --name "StepPlugin" \ + --output "${PROJECT_ROOT}"/rollout/steps/plugin/rpc/mocks diff --git a/manifests/crds/rollout-crd.yaml b/manifests/crds/rollout-crd.yaml index c30ac0fd73..aa06634f9b 100755 --- a/manifests/crds/rollout-crd.yaml +++ b/manifests/crds/rollout-crd.yaml @@ -662,6 +662,16 @@ spec: - type: string x-kubernetes-int-or-string: true type: object + plugin: + properties: + config: + type: object + x-kubernetes-preserve-unknown-fields: true + name: + type: string + required: + - name + type: object setCanaryScale: properties: matchTrafficWeight: @@ -3721,6 +3731,45 @@ spec: type: object stablePingPong: type: string + stepPluginStatuses: + items: + properties: + backoff: + type: string + disabled: + type: boolean + executions: + format: int32 + type: integer + finishedAt: + format: date-time + type: string + index: + format: int32 + type: integer + message: + type: string + name: + type: string + operation: + type: string + phase: + type: string + startedAt: + format: date-time + type: string + status: + type: object + x-kubernetes-preserve-unknown-fields: true + updatedAt: + format: date-time + type: string + required: + - index + - name + - operation + type: object + type: array weights: properties: additional: diff --git a/manifests/install.yaml b/manifests/install.yaml index 95ff89b660..56e71a4e18 100755 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -13176,6 +13176,16 @@ spec: - type: string x-kubernetes-int-or-string: true type: object + plugin: + properties: + config: + type: object + x-kubernetes-preserve-unknown-fields: true + name: + type: string + required: + - name + type: object setCanaryScale: properties: matchTrafficWeight: @@ -16235,6 +16245,45 @@ spec: type: object stablePingPong: type: string + stepPluginStatuses: + items: + properties: + backoff: + type: string + disabled: + type: boolean + executions: + format: int32 + type: integer + finishedAt: + format: date-time + type: string + index: + format: int32 + type: integer + message: + type: string + name: + type: string + operation: + type: string + phase: + type: string + startedAt: + format: date-time + type: string + status: + type: object + x-kubernetes-preserve-unknown-fields: true + updatedAt: + format: date-time + type: string + required: + - index + - name + - operation + type: object + type: array weights: properties: additional: diff --git a/metricproviders/plugin/client/client.go b/metricproviders/plugin/client/client.go index 9fc82ed244..d37e949d8e 100644 --- a/metricproviders/plugin/client/client.go +++ b/metricproviders/plugin/client/client.go @@ -8,6 +8,7 @@ import ( "github.com/argoproj/argo-rollouts/metricproviders/plugin/rpc" "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/utils/plugin" + "github.com/argoproj/argo-rollouts/utils/plugin/types" goPlugin "github.com/hashicorp/go-plugin" ) @@ -54,7 +55,7 @@ func (m *metricPlugin) startPluginSystem(metric v1alpha1.Metric) (rpc.MetricProv // There should only ever be one plugin defined in metric.Provider.Plugin per analysis template this gets checked // during validation for pluginName := range metric.Provider.Plugin { - pluginPath, args, err := plugin.GetPluginInfo(pluginName) + pluginPath, args, err := plugin.GetPluginInfo(pluginName, types.PluginTypeMetricProvider) if err != nil { return nil, fmt.Errorf("unable to find plugin (%s): %w", pluginName, err) } diff --git a/pkg/apiclient/rollout/rollout.swagger.json b/pkg/apiclient/rollout/rollout.swagger.json index e072f7e0da..ab906295f0 100755 --- a/pkg/apiclient/rollout/rollout.swagger.json +++ b/pkg/apiclient/rollout/rollout.swagger.json @@ -978,6 +978,13 @@ "stablePingPong": { "type": "string", "title": "StablePingPong For the ping-pong feature holds the current stable service, ping or pong" + }, + "stepPluginStatuses": { + "type": "array", + "items": { + "$ref": "#/definitions/github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.StepPluginStatus" + }, + "title": "StepPluginStatuses holds the status of the step plugins executed" } }, "title": "CanaryStatus status fields that only pertain to the canary rollout" @@ -1013,6 +1020,10 @@ "setMirrorRoute": { "$ref": "#/definitions/github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.SetMirrorRoute", "title": "SetMirrorRoutes Mirrors traffic that matches rules to a particular destination\n+optional" + }, + "plugin": { + "$ref": "#/definitions/github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PluginStep", + "title": "Plugin defines a plugin to execute for a step" } }, "description": "CanaryStep defines a step of a canary deployment." @@ -1761,6 +1772,20 @@ }, "description": "PingPongSpec holds the ping and pong service name." }, + "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PluginStep": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name of the hashicorp go-plugin step to query" + }, + "config": { + "type": "string", + "format": "byte", + "title": "+kubebuilder:validation:Schemaless\n+kubebuilder:pruning:PreserveUnknownFields\n+kubebuilder:validation:Type=object\nConfig is the configuration object for the specified plugin" + } + } + }, "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PodTemplateMetadata": { "type": "object", "properties": { @@ -2528,6 +2553,62 @@ } } }, + "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.StepPluginStatus": { + "type": "object", + "properties": { + "index": { + "type": "integer", + "format": "int32", + "title": "Index is the matching step index of the executed plugin" + }, + "name": { + "type": "string", + "title": "Name is the matching step name of the executed plugin" + }, + "operation": { + "type": "string", + "title": "Operation is the name of the operation that produced this status" + }, + "phase": { + "type": "string", + "title": "Phase is the resulting phase of the operation" + }, + "message": { + "type": "string", + "title": "Message provides details on why the plugin is in its current phase" + }, + "startedAt": { + "$ref": "#/definitions/k8s.io.apimachinery.pkg.apis.meta.v1.Time", + "title": "StartedAt indicates when the plugin was first called for the operation" + }, + "updatedAt": { + "$ref": "#/definitions/k8s.io.apimachinery.pkg.apis.meta.v1.Time", + "title": "UpdatedAt indicates when the plugin was last called for the operation" + }, + "finishedAt": { + "$ref": "#/definitions/k8s.io.apimachinery.pkg.apis.meta.v1.Time", + "title": "FinishedAt indicates when the operation was completed" + }, + "backoff": { + "type": "string", + "title": "Backoff is a duration to wait before trying to execute the operation again if it was not completed" + }, + "executions": { + "type": "integer", + "format": "int32", + "title": "Executions is the number of time the operation was executed" + }, + "disabled": { + "type": "boolean", + "title": "Disabled indicates if the plugin is globally disabled" + }, + "status": { + "type": "string", + "format": "byte", + "title": "+kubebuilder:validation:Schemaless\n+kubebuilder:pruning:PreserveUnknownFields\n+kubebuilder:validation:Type=object\nStatus holds the internal status of the plugin for this operation" + } + } + }, "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.StickinessConfig": { "type": "object", "properties": { diff --git a/pkg/apis/api-rules/violation_exceptions.list b/pkg/apis/api-rules/violation_exceptions.list index ea9a241837..c4c0952a74 100644 --- a/pkg/apis/api-rules/violation_exceptions.list +++ b/pkg/apis/api-rules/violation_exceptions.list @@ -12,6 +12,7 @@ API rule violation: list_type_missing,github.com/argoproj/argo-rollouts/pkg/apis API rule violation: list_type_missing,github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1,AnalysisTemplateSpec,Templates API rule violation: list_type_missing,github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1,ApisixRoute,Rules API rule violation: list_type_missing,github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1,AppMeshVirtualService,Routes +API rule violation: list_type_missing,github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1,CanaryStatus,StepPluginStatuses API rule violation: list_type_missing,github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1,CanaryStrategy,Steps API rule violation: list_type_missing,github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1,CloudWatchMetric,MetricDataQueries API rule violation: list_type_missing,github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1,CloudWatchMetricStatMetric,Dimensions diff --git a/pkg/apis/rollouts/v1alpha1/generated.pb.go b/pkg/apis/rollouts/v1alpha1/generated.pb.go index 91ef87cc29..b472340b48 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.pb.go +++ b/pkg/apis/rollouts/v1alpha1/generated.pb.go @@ -1979,10 +1979,38 @@ func (m *PingPongSpec) XXX_DiscardUnknown() { var xxx_messageInfo_PingPongSpec proto.InternalMessageInfo +func (m *PluginStep) Reset() { *m = PluginStep{} } +func (*PluginStep) ProtoMessage() {} +func (*PluginStep) Descriptor() ([]byte, []int) { + return fileDescriptor_e0e705f843545fab, []int{69} +} +func (m *PluginStep) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PluginStep) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *PluginStep) XXX_Merge(src proto.Message) { + xxx_messageInfo_PluginStep.Merge(m, src) +} +func (m *PluginStep) XXX_Size() int { + return m.Size() +} +func (m *PluginStep) XXX_DiscardUnknown() { + xxx_messageInfo_PluginStep.DiscardUnknown(m) +} + +var xxx_messageInfo_PluginStep proto.InternalMessageInfo + func (m *PodTemplateMetadata) Reset() { *m = PodTemplateMetadata{} } func (*PodTemplateMetadata) ProtoMessage() {} func (*PodTemplateMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{69} + return fileDescriptor_e0e705f843545fab, []int{70} } func (m *PodTemplateMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2012,7 +2040,7 @@ func (m *PreferredDuringSchedulingIgnoredDuringExecution) Reset() { } func (*PreferredDuringSchedulingIgnoredDuringExecution) ProtoMessage() {} func (*PreferredDuringSchedulingIgnoredDuringExecution) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{70} + return fileDescriptor_e0e705f843545fab, []int{71} } func (m *PreferredDuringSchedulingIgnoredDuringExecution) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2040,7 +2068,7 @@ var xxx_messageInfo_PreferredDuringSchedulingIgnoredDuringExecution proto.Intern func (m *PrometheusMetric) Reset() { *m = PrometheusMetric{} } func (*PrometheusMetric) ProtoMessage() {} func (*PrometheusMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{71} + return fileDescriptor_e0e705f843545fab, []int{72} } func (m *PrometheusMetric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2068,7 +2096,7 @@ var xxx_messageInfo_PrometheusMetric proto.InternalMessageInfo func (m *PrometheusRangeQueryArgs) Reset() { *m = PrometheusRangeQueryArgs{} } func (*PrometheusRangeQueryArgs) ProtoMessage() {} func (*PrometheusRangeQueryArgs) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{72} + return fileDescriptor_e0e705f843545fab, []int{73} } func (m *PrometheusRangeQueryArgs) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2098,7 +2126,7 @@ func (m *RequiredDuringSchedulingIgnoredDuringExecution) Reset() { } func (*RequiredDuringSchedulingIgnoredDuringExecution) ProtoMessage() {} func (*RequiredDuringSchedulingIgnoredDuringExecution) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{73} + return fileDescriptor_e0e705f843545fab, []int{74} } func (m *RequiredDuringSchedulingIgnoredDuringExecution) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2126,7 +2154,7 @@ var xxx_messageInfo_RequiredDuringSchedulingIgnoredDuringExecution proto.Interna func (m *RollbackWindowSpec) Reset() { *m = RollbackWindowSpec{} } func (*RollbackWindowSpec) ProtoMessage() {} func (*RollbackWindowSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{74} + return fileDescriptor_e0e705f843545fab, []int{75} } func (m *RollbackWindowSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2154,7 +2182,7 @@ var xxx_messageInfo_RollbackWindowSpec proto.InternalMessageInfo func (m *Rollout) Reset() { *m = Rollout{} } func (*Rollout) ProtoMessage() {} func (*Rollout) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{75} + return fileDescriptor_e0e705f843545fab, []int{76} } func (m *Rollout) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2182,7 +2210,7 @@ var xxx_messageInfo_Rollout proto.InternalMessageInfo func (m *RolloutAnalysis) Reset() { *m = RolloutAnalysis{} } func (*RolloutAnalysis) ProtoMessage() {} func (*RolloutAnalysis) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{76} + return fileDescriptor_e0e705f843545fab, []int{77} } func (m *RolloutAnalysis) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2210,7 +2238,7 @@ var xxx_messageInfo_RolloutAnalysis proto.InternalMessageInfo func (m *RolloutAnalysisBackground) Reset() { *m = RolloutAnalysisBackground{} } func (*RolloutAnalysisBackground) ProtoMessage() {} func (*RolloutAnalysisBackground) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{77} + return fileDescriptor_e0e705f843545fab, []int{78} } func (m *RolloutAnalysisBackground) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2238,7 +2266,7 @@ var xxx_messageInfo_RolloutAnalysisBackground proto.InternalMessageInfo func (m *RolloutAnalysisRunStatus) Reset() { *m = RolloutAnalysisRunStatus{} } func (*RolloutAnalysisRunStatus) ProtoMessage() {} func (*RolloutAnalysisRunStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{78} + return fileDescriptor_e0e705f843545fab, []int{79} } func (m *RolloutAnalysisRunStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2266,7 +2294,7 @@ var xxx_messageInfo_RolloutAnalysisRunStatus proto.InternalMessageInfo func (m *RolloutCondition) Reset() { *m = RolloutCondition{} } func (*RolloutCondition) ProtoMessage() {} func (*RolloutCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{79} + return fileDescriptor_e0e705f843545fab, []int{80} } func (m *RolloutCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2294,7 +2322,7 @@ var xxx_messageInfo_RolloutCondition proto.InternalMessageInfo func (m *RolloutExperimentStep) Reset() { *m = RolloutExperimentStep{} } func (*RolloutExperimentStep) ProtoMessage() {} func (*RolloutExperimentStep) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{80} + return fileDescriptor_e0e705f843545fab, []int{81} } func (m *RolloutExperimentStep) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2324,7 +2352,7 @@ func (m *RolloutExperimentStepAnalysisTemplateRef) Reset() { } func (*RolloutExperimentStepAnalysisTemplateRef) ProtoMessage() {} func (*RolloutExperimentStepAnalysisTemplateRef) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{81} + return fileDescriptor_e0e705f843545fab, []int{82} } func (m *RolloutExperimentStepAnalysisTemplateRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2352,7 +2380,7 @@ var xxx_messageInfo_RolloutExperimentStepAnalysisTemplateRef proto.InternalMessa func (m *RolloutExperimentTemplate) Reset() { *m = RolloutExperimentTemplate{} } func (*RolloutExperimentTemplate) ProtoMessage() {} func (*RolloutExperimentTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{82} + return fileDescriptor_e0e705f843545fab, []int{83} } func (m *RolloutExperimentTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2380,7 +2408,7 @@ var xxx_messageInfo_RolloutExperimentTemplate proto.InternalMessageInfo func (m *RolloutList) Reset() { *m = RolloutList{} } func (*RolloutList) ProtoMessage() {} func (*RolloutList) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{83} + return fileDescriptor_e0e705f843545fab, []int{84} } func (m *RolloutList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2408,7 +2436,7 @@ var xxx_messageInfo_RolloutList proto.InternalMessageInfo func (m *RolloutPause) Reset() { *m = RolloutPause{} } func (*RolloutPause) ProtoMessage() {} func (*RolloutPause) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{84} + return fileDescriptor_e0e705f843545fab, []int{85} } func (m *RolloutPause) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2436,7 +2464,7 @@ var xxx_messageInfo_RolloutPause proto.InternalMessageInfo func (m *RolloutSpec) Reset() { *m = RolloutSpec{} } func (*RolloutSpec) ProtoMessage() {} func (*RolloutSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{85} + return fileDescriptor_e0e705f843545fab, []int{86} } func (m *RolloutSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2464,7 +2492,7 @@ var xxx_messageInfo_RolloutSpec proto.InternalMessageInfo func (m *RolloutStatus) Reset() { *m = RolloutStatus{} } func (*RolloutStatus) ProtoMessage() {} func (*RolloutStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{86} + return fileDescriptor_e0e705f843545fab, []int{87} } func (m *RolloutStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2492,7 +2520,7 @@ var xxx_messageInfo_RolloutStatus proto.InternalMessageInfo func (m *RolloutStrategy) Reset() { *m = RolloutStrategy{} } func (*RolloutStrategy) ProtoMessage() {} func (*RolloutStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{87} + return fileDescriptor_e0e705f843545fab, []int{88} } func (m *RolloutStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2520,7 +2548,7 @@ var xxx_messageInfo_RolloutStrategy proto.InternalMessageInfo func (m *RolloutTrafficRouting) Reset() { *m = RolloutTrafficRouting{} } func (*RolloutTrafficRouting) ProtoMessage() {} func (*RolloutTrafficRouting) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{88} + return fileDescriptor_e0e705f843545fab, []int{89} } func (m *RolloutTrafficRouting) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2548,7 +2576,7 @@ var xxx_messageInfo_RolloutTrafficRouting proto.InternalMessageInfo func (m *RouteMatch) Reset() { *m = RouteMatch{} } func (*RouteMatch) ProtoMessage() {} func (*RouteMatch) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{89} + return fileDescriptor_e0e705f843545fab, []int{90} } func (m *RouteMatch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2576,7 +2604,7 @@ var xxx_messageInfo_RouteMatch proto.InternalMessageInfo func (m *RunSummary) Reset() { *m = RunSummary{} } func (*RunSummary) ProtoMessage() {} func (*RunSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{90} + return fileDescriptor_e0e705f843545fab, []int{91} } func (m *RunSummary) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2604,7 +2632,7 @@ var xxx_messageInfo_RunSummary proto.InternalMessageInfo func (m *SMITrafficRouting) Reset() { *m = SMITrafficRouting{} } func (*SMITrafficRouting) ProtoMessage() {} func (*SMITrafficRouting) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{91} + return fileDescriptor_e0e705f843545fab, []int{92} } func (m *SMITrafficRouting) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2632,7 +2660,7 @@ var xxx_messageInfo_SMITrafficRouting proto.InternalMessageInfo func (m *ScopeDetail) Reset() { *m = ScopeDetail{} } func (*ScopeDetail) ProtoMessage() {} func (*ScopeDetail) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{92} + return fileDescriptor_e0e705f843545fab, []int{93} } func (m *ScopeDetail) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2660,7 +2688,7 @@ var xxx_messageInfo_ScopeDetail proto.InternalMessageInfo func (m *SecretKeyRef) Reset() { *m = SecretKeyRef{} } func (*SecretKeyRef) ProtoMessage() {} func (*SecretKeyRef) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{93} + return fileDescriptor_e0e705f843545fab, []int{94} } func (m *SecretKeyRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2688,7 +2716,7 @@ var xxx_messageInfo_SecretKeyRef proto.InternalMessageInfo func (m *SetCanaryScale) Reset() { *m = SetCanaryScale{} } func (*SetCanaryScale) ProtoMessage() {} func (*SetCanaryScale) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{94} + return fileDescriptor_e0e705f843545fab, []int{95} } func (m *SetCanaryScale) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2716,7 +2744,7 @@ var xxx_messageInfo_SetCanaryScale proto.InternalMessageInfo func (m *SetHeaderRoute) Reset() { *m = SetHeaderRoute{} } func (*SetHeaderRoute) ProtoMessage() {} func (*SetHeaderRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{95} + return fileDescriptor_e0e705f843545fab, []int{96} } func (m *SetHeaderRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2744,7 +2772,7 @@ var xxx_messageInfo_SetHeaderRoute proto.InternalMessageInfo func (m *SetMirrorRoute) Reset() { *m = SetMirrorRoute{} } func (*SetMirrorRoute) ProtoMessage() {} func (*SetMirrorRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{96} + return fileDescriptor_e0e705f843545fab, []int{97} } func (m *SetMirrorRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2772,7 +2800,7 @@ var xxx_messageInfo_SetMirrorRoute proto.InternalMessageInfo func (m *Sigv4Config) Reset() { *m = Sigv4Config{} } func (*Sigv4Config) ProtoMessage() {} func (*Sigv4Config) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{97} + return fileDescriptor_e0e705f843545fab, []int{98} } func (m *Sigv4Config) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2800,7 +2828,7 @@ var xxx_messageInfo_Sigv4Config proto.InternalMessageInfo func (m *SkyWalkingMetric) Reset() { *m = SkyWalkingMetric{} } func (*SkyWalkingMetric) ProtoMessage() {} func (*SkyWalkingMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{98} + return fileDescriptor_e0e705f843545fab, []int{99} } func (m *SkyWalkingMetric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2825,10 +2853,38 @@ func (m *SkyWalkingMetric) XXX_DiscardUnknown() { var xxx_messageInfo_SkyWalkingMetric proto.InternalMessageInfo +func (m *StepPluginStatus) Reset() { *m = StepPluginStatus{} } +func (*StepPluginStatus) ProtoMessage() {} +func (*StepPluginStatus) Descriptor() ([]byte, []int) { + return fileDescriptor_e0e705f843545fab, []int{100} +} +func (m *StepPluginStatus) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *StepPluginStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *StepPluginStatus) XXX_Merge(src proto.Message) { + xxx_messageInfo_StepPluginStatus.Merge(m, src) +} +func (m *StepPluginStatus) XXX_Size() int { + return m.Size() +} +func (m *StepPluginStatus) XXX_DiscardUnknown() { + xxx_messageInfo_StepPluginStatus.DiscardUnknown(m) +} + +var xxx_messageInfo_StepPluginStatus proto.InternalMessageInfo + func (m *StickinessConfig) Reset() { *m = StickinessConfig{} } func (*StickinessConfig) ProtoMessage() {} func (*StickinessConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{99} + return fileDescriptor_e0e705f843545fab, []int{101} } func (m *StickinessConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2856,7 +2912,7 @@ var xxx_messageInfo_StickinessConfig proto.InternalMessageInfo func (m *StringMatch) Reset() { *m = StringMatch{} } func (*StringMatch) ProtoMessage() {} func (*StringMatch) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{100} + return fileDescriptor_e0e705f843545fab, []int{102} } func (m *StringMatch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2884,7 +2940,7 @@ var xxx_messageInfo_StringMatch proto.InternalMessageInfo func (m *TCPRoute) Reset() { *m = TCPRoute{} } func (*TCPRoute) ProtoMessage() {} func (*TCPRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{101} + return fileDescriptor_e0e705f843545fab, []int{103} } func (m *TCPRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2912,7 +2968,7 @@ var xxx_messageInfo_TCPRoute proto.InternalMessageInfo func (m *TLSRoute) Reset() { *m = TLSRoute{} } func (*TLSRoute) ProtoMessage() {} func (*TLSRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{102} + return fileDescriptor_e0e705f843545fab, []int{104} } func (m *TLSRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2940,7 +2996,7 @@ var xxx_messageInfo_TLSRoute proto.InternalMessageInfo func (m *TTLStrategy) Reset() { *m = TTLStrategy{} } func (*TTLStrategy) ProtoMessage() {} func (*TTLStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{103} + return fileDescriptor_e0e705f843545fab, []int{105} } func (m *TTLStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2968,7 +3024,7 @@ var xxx_messageInfo_TTLStrategy proto.InternalMessageInfo func (m *TemplateService) Reset() { *m = TemplateService{} } func (*TemplateService) ProtoMessage() {} func (*TemplateService) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{104} + return fileDescriptor_e0e705f843545fab, []int{106} } func (m *TemplateService) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2996,7 +3052,7 @@ var xxx_messageInfo_TemplateService proto.InternalMessageInfo func (m *TemplateSpec) Reset() { *m = TemplateSpec{} } func (*TemplateSpec) ProtoMessage() {} func (*TemplateSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{105} + return fileDescriptor_e0e705f843545fab, []int{107} } func (m *TemplateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3024,7 +3080,7 @@ var xxx_messageInfo_TemplateSpec proto.InternalMessageInfo func (m *TemplateStatus) Reset() { *m = TemplateStatus{} } func (*TemplateStatus) ProtoMessage() {} func (*TemplateStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{106} + return fileDescriptor_e0e705f843545fab, []int{108} } func (m *TemplateStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3052,7 +3108,7 @@ var xxx_messageInfo_TemplateStatus proto.InternalMessageInfo func (m *TraefikTrafficRouting) Reset() { *m = TraefikTrafficRouting{} } func (*TraefikTrafficRouting) ProtoMessage() {} func (*TraefikTrafficRouting) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{107} + return fileDescriptor_e0e705f843545fab, []int{109} } func (m *TraefikTrafficRouting) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3080,7 +3136,7 @@ var xxx_messageInfo_TraefikTrafficRouting proto.InternalMessageInfo func (m *TrafficWeights) Reset() { *m = TrafficWeights{} } func (*TrafficWeights) ProtoMessage() {} func (*TrafficWeights) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{108} + return fileDescriptor_e0e705f843545fab, []int{110} } func (m *TrafficWeights) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3108,7 +3164,7 @@ var xxx_messageInfo_TrafficWeights proto.InternalMessageInfo func (m *ValueFrom) Reset() { *m = ValueFrom{} } func (*ValueFrom) ProtoMessage() {} func (*ValueFrom) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{109} + return fileDescriptor_e0e705f843545fab, []int{111} } func (m *ValueFrom) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3136,7 +3192,7 @@ var xxx_messageInfo_ValueFrom proto.InternalMessageInfo func (m *WavefrontMetric) Reset() { *m = WavefrontMetric{} } func (*WavefrontMetric) ProtoMessage() {} func (*WavefrontMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{110} + return fileDescriptor_e0e705f843545fab, []int{112} } func (m *WavefrontMetric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3164,7 +3220,7 @@ var xxx_messageInfo_WavefrontMetric proto.InternalMessageInfo func (m *WebMetric) Reset() { *m = WebMetric{} } func (*WebMetric) ProtoMessage() {} func (*WebMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{111} + return fileDescriptor_e0e705f843545fab, []int{113} } func (m *WebMetric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3192,7 +3248,7 @@ var xxx_messageInfo_WebMetric proto.InternalMessageInfo func (m *WebMetricHeader) Reset() { *m = WebMetricHeader{} } func (*WebMetricHeader) ProtoMessage() {} func (*WebMetricHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{112} + return fileDescriptor_e0e705f843545fab, []int{114} } func (m *WebMetricHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3220,7 +3276,7 @@ var xxx_messageInfo_WebMetricHeader proto.InternalMessageInfo func (m *WeightDestination) Reset() { *m = WeightDestination{} } func (*WeightDestination) ProtoMessage() {} func (*WeightDestination) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{113} + return fileDescriptor_e0e705f843545fab, []int{115} } func (m *WeightDestination) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3323,6 +3379,7 @@ func init() { proto.RegisterType((*ObjectRef)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.ObjectRef") proto.RegisterType((*PauseCondition)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PauseCondition") proto.RegisterType((*PingPongSpec)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PingPongSpec") + proto.RegisterType((*PluginStep)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PluginStep") proto.RegisterType((*PodTemplateMetadata)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PodTemplateMetadata") proto.RegisterMapType((map[string]string)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PodTemplateMetadata.AnnotationsEntry") proto.RegisterMapType((map[string]string)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.PodTemplateMetadata.LabelsEntry") @@ -3357,6 +3414,7 @@ func init() { proto.RegisterType((*SetMirrorRoute)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.SetMirrorRoute") proto.RegisterType((*Sigv4Config)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.Sigv4Config") proto.RegisterType((*SkyWalkingMetric)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.SkyWalkingMetric") + proto.RegisterType((*StepPluginStatus)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.StepPluginStatus") proto.RegisterType((*StickinessConfig)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.StickinessConfig") proto.RegisterType((*StringMatch)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.StringMatch") proto.RegisterType((*TCPRoute)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.TCPRoute") @@ -3379,550 +3437,565 @@ func init() { } var fileDescriptor_e0e705f843545fab = []byte{ - // 8675 bytes of a gzipped FileDescriptorProto + // 8914 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x64, 0xd7, - 0x75, 0x98, 0x1e, 0x87, 0x43, 0xce, 0x9c, 0xe1, 0x92, 0xdc, 0xbb, 0xbb, 0x12, 0x45, 0x69, 0x77, - 0xd6, 0x4f, 0xa9, 0x2a, 0xc5, 0x32, 0x69, 0xaf, 0xa4, 0x56, 0xb6, 0x5c, 0xb5, 0x33, 0xe4, 0xae, - 0x96, 0x2b, 0x72, 0x97, 0x3a, 0xc3, 0xd5, 0x26, 0xb6, 0x95, 0xf8, 0x71, 0xe6, 0x72, 0xf8, 0x96, - 0x33, 0xef, 0x8d, 0xdf, 0x7b, 0xc3, 0x5d, 0xca, 0x42, 0x2c, 0xdb, 0x50, 0xe2, 0xb8, 0x36, 0xe2, - 0x26, 0x31, 0x8a, 0xa2, 0x45, 0xe1, 0x06, 0x29, 0xd2, 0x36, 0xf9, 0x51, 0x04, 0x29, 0xda, 0x1f, - 0x01, 0x5a, 0xd4, 0x4d, 0xe0, 0x00, 0x75, 0xe1, 0xfc, 0x68, 0x9d, 0x16, 0x08, 0x53, 0x33, 0xfd, - 0xd3, 0xa0, 0x85, 0xd1, 0xc2, 0x45, 0x50, 0xfd, 0x28, 0x8a, 0xfb, 0xf9, 0xee, 0x7b, 0xf3, 0x86, - 0x1f, 0x3b, 0x8f, 0x2b, 0xa5, 0xf5, 0xbf, 0x99, 0x7b, 0xce, 0x3d, 0xe7, 0xbc, 0xfb, 0x79, 0xee, - 0xb9, 0xe7, 0x9c, 0x0b, 0xab, 0x6d, 0x37, 0xda, 0xee, 0x6f, 0x2e, 0x34, 0xfd, 0xee, 0xa2, 0x13, - 0xb4, 0xfd, 0x5e, 0xe0, 0xdf, 0xe5, 0x3f, 0x3e, 0x12, 0xf8, 0x9d, 0x8e, 0xdf, 0x8f, 0xc2, 0xc5, - 0xde, 0x4e, 0x7b, 0xd1, 0xe9, 0xb9, 0xe1, 0xa2, 0x2e, 0xd9, 0xfd, 0x98, 0xd3, 0xe9, 0x6d, 0x3b, - 0x1f, 0x5b, 0x6c, 0x53, 0x8f, 0x06, 0x4e, 0x44, 0x5b, 0x0b, 0xbd, 0xc0, 0x8f, 0x7c, 0xf2, 0xc9, - 0x98, 0xda, 0x82, 0xa2, 0xc6, 0x7f, 0xfc, 0xac, 0xaa, 0xbb, 0xd0, 0xdb, 0x69, 0x2f, 0x30, 0x6a, - 0x0b, 0xba, 0x44, 0x51, 0x9b, 0xff, 0x88, 0x21, 0x4b, 0xdb, 0x6f, 0xfb, 0x8b, 0x9c, 0xe8, 0x66, - 0x7f, 0x8b, 0xff, 0xe3, 0x7f, 0xf8, 0x2f, 0xc1, 0x6c, 0xfe, 0xa9, 0x9d, 0x97, 0xc2, 0x05, 0xd7, - 0x67, 0xb2, 0x2d, 0x6e, 0x3a, 0x51, 0x73, 0x7b, 0x71, 0x77, 0x40, 0xa2, 0x79, 0xdb, 0x40, 0x6a, - 0xfa, 0x01, 0xcd, 0xc2, 0x79, 0x21, 0xc6, 0xe9, 0x3a, 0xcd, 0x6d, 0xd7, 0xa3, 0xc1, 0x5e, 0xfc, - 0xd5, 0x5d, 0x1a, 0x39, 0x59, 0xb5, 0x16, 0x87, 0xd5, 0x0a, 0xfa, 0x5e, 0xe4, 0x76, 0xe9, 0x40, - 0x85, 0xbf, 0x72, 0x54, 0x85, 0xb0, 0xb9, 0x4d, 0xbb, 0xce, 0x40, 0xbd, 0xe7, 0x87, 0xd5, 0xeb, - 0x47, 0x6e, 0x67, 0xd1, 0xf5, 0xa2, 0x30, 0x0a, 0xd2, 0x95, 0xec, 0x1f, 0x16, 0xa0, 0x5c, 0x5b, - 0xad, 0x37, 0x22, 0x27, 0xea, 0x87, 0xe4, 0xe7, 0x2d, 0x98, 0xea, 0xf8, 0x4e, 0xab, 0xee, 0x74, - 0x1c, 0xaf, 0x49, 0x83, 0x39, 0xeb, 0xb2, 0xf5, 0x4c, 0xe5, 0xca, 0xea, 0xc2, 0x28, 0xfd, 0xb5, - 0x50, 0xbb, 0x17, 0x22, 0x0d, 0xfd, 0x7e, 0xd0, 0xa4, 0x48, 0xb7, 0xea, 0xe7, 0xbf, 0xb3, 0x5f, - 0x7d, 0xe4, 0x60, 0xbf, 0x3a, 0xb5, 0x6a, 0x70, 0xc2, 0x04, 0x5f, 0xf2, 0x4d, 0x0b, 0xce, 0x36, - 0x1d, 0xcf, 0x09, 0xf6, 0x36, 0x9c, 0xa0, 0x4d, 0xa3, 0x57, 0x03, 0xbf, 0xdf, 0x9b, 0x1b, 0x3b, - 0x05, 0x69, 0x1e, 0x97, 0xd2, 0x9c, 0x5d, 0x4a, 0xb3, 0xc3, 0x41, 0x09, 0xb8, 0x5c, 0x61, 0xe4, - 0x6c, 0x76, 0xa8, 0x29, 0x57, 0xe1, 0x34, 0xe5, 0x6a, 0xa4, 0xd9, 0xe1, 0xa0, 0x04, 0xe4, 0x59, - 0x98, 0x74, 0xbd, 0x76, 0x40, 0xc3, 0x70, 0x6e, 0xfc, 0xb2, 0xf5, 0x4c, 0xb9, 0x3e, 0x23, 0xab, - 0x4f, 0xae, 0x88, 0x62, 0x54, 0x70, 0xfb, 0xb7, 0x0b, 0x70, 0xb6, 0xb6, 0x5a, 0xdf, 0x08, 0x9c, - 0xad, 0x2d, 0xb7, 0x89, 0x7e, 0x3f, 0x72, 0xbd, 0xb6, 0x49, 0xc0, 0x3a, 0x9c, 0x00, 0x79, 0x11, - 0x2a, 0x21, 0x0d, 0x76, 0xdd, 0x26, 0x5d, 0xf7, 0x83, 0x88, 0x77, 0x4a, 0xb1, 0x7e, 0x4e, 0xa2, - 0x57, 0x1a, 0x31, 0x08, 0x4d, 0x3c, 0x56, 0x2d, 0xf0, 0xfd, 0x48, 0xc2, 0x79, 0x9b, 0x95, 0xe3, - 0x6a, 0x18, 0x83, 0xd0, 0xc4, 0x23, 0xcb, 0x30, 0xeb, 0x78, 0x9e, 0x1f, 0x39, 0x91, 0xeb, 0x7b, - 0xeb, 0x01, 0xdd, 0x72, 0xef, 0xcb, 0x4f, 0x9c, 0x93, 0x75, 0x67, 0x6b, 0x29, 0x38, 0x0e, 0xd4, - 0x20, 0xdf, 0xb0, 0x60, 0x36, 0x8c, 0xdc, 0xe6, 0x8e, 0xeb, 0xd1, 0x30, 0x5c, 0xf2, 0xbd, 0x2d, - 0xb7, 0x3d, 0x57, 0xe4, 0xdd, 0x76, 0x73, 0xb4, 0x6e, 0x6b, 0xa4, 0xa8, 0xd6, 0xcf, 0x33, 0x91, - 0xd2, 0xa5, 0x38, 0xc0, 0x9d, 0x7c, 0x18, 0xca, 0xb2, 0x45, 0x69, 0x38, 0x37, 0x71, 0xb9, 0xf0, - 0x4c, 0xb9, 0x7e, 0xe6, 0x60, 0xbf, 0x5a, 0x5e, 0x51, 0x85, 0x18, 0xc3, 0xed, 0x65, 0x98, 0xab, - 0x75, 0x37, 0x9d, 0x30, 0x74, 0x5a, 0x7e, 0x90, 0xea, 0xba, 0x67, 0xa0, 0xd4, 0x75, 0x7a, 0x3d, - 0xd7, 0x6b, 0xb3, 0xbe, 0x63, 0x74, 0xa6, 0x0e, 0xf6, 0xab, 0xa5, 0x35, 0x59, 0x86, 0x1a, 0x6a, - 0xff, 0xc7, 0x31, 0xa8, 0xd4, 0x3c, 0xa7, 0xb3, 0x17, 0xba, 0x21, 0xf6, 0x3d, 0xf2, 0x59, 0x28, - 0xb1, 0x55, 0xab, 0xe5, 0x44, 0x8e, 0x9c, 0xe9, 0x1f, 0x5d, 0x10, 0x8b, 0xc8, 0x82, 0xb9, 0x88, - 0xc4, 0x9f, 0xcf, 0xb0, 0x17, 0x76, 0x3f, 0xb6, 0x70, 0x6b, 0xf3, 0x2e, 0x6d, 0x46, 0x6b, 0x34, - 0x72, 0xea, 0x44, 0xf6, 0x02, 0xc4, 0x65, 0xa8, 0xa9, 0x12, 0x1f, 0xc6, 0xc3, 0x1e, 0x6d, 0xca, - 0x99, 0xbb, 0x36, 0xe2, 0x0c, 0x89, 0x45, 0x6f, 0xf4, 0x68, 0xb3, 0x3e, 0x25, 0x59, 0x8f, 0xb3, - 0x7f, 0xc8, 0x19, 0x91, 0x7b, 0x30, 0x11, 0xf2, 0xb5, 0x4c, 0x4e, 0xca, 0x5b, 0xf9, 0xb1, 0xe4, - 0x64, 0xeb, 0xd3, 0x92, 0xe9, 0x84, 0xf8, 0x8f, 0x92, 0x9d, 0xfd, 0x9f, 0x2c, 0x38, 0x67, 0x60, - 0xd7, 0x82, 0x76, 0xbf, 0x4b, 0xbd, 0x88, 0x5c, 0x86, 0x71, 0xcf, 0xe9, 0x52, 0x39, 0xab, 0xb4, - 0xc8, 0x37, 0x9d, 0x2e, 0x45, 0x0e, 0x21, 0x4f, 0x41, 0x71, 0xd7, 0xe9, 0xf4, 0x29, 0x6f, 0xa4, - 0x72, 0xfd, 0x8c, 0x44, 0x29, 0xbe, 0xc1, 0x0a, 0x51, 0xc0, 0xc8, 0xdb, 0x50, 0xe6, 0x3f, 0xae, - 0x05, 0x7e, 0x37, 0xa7, 0x4f, 0x93, 0x12, 0xbe, 0xa1, 0xc8, 0x8a, 0xe1, 0xa7, 0xff, 0x62, 0xcc, - 0xd0, 0xfe, 0x13, 0x0b, 0x66, 0x8c, 0x8f, 0x5b, 0x75, 0xc3, 0x88, 0x7c, 0x66, 0x60, 0xf0, 0x2c, - 0x1c, 0x6f, 0xf0, 0xb0, 0xda, 0x7c, 0xe8, 0xcc, 0xca, 0x2f, 0x2d, 0xa9, 0x12, 0x63, 0xe0, 0x78, - 0x50, 0x74, 0x23, 0xda, 0x0d, 0xe7, 0xc6, 0x2e, 0x17, 0x9e, 0xa9, 0x5c, 0x59, 0xc9, 0xad, 0x1b, - 0xe3, 0xf6, 0x5d, 0x61, 0xf4, 0x51, 0xb0, 0xb1, 0x7f, 0xa7, 0x90, 0xe8, 0xbe, 0x35, 0x25, 0xc7, - 0xbb, 0x16, 0x4c, 0x74, 0x9c, 0x4d, 0xda, 0x11, 0x73, 0xab, 0x72, 0xe5, 0xcd, 0xdc, 0x24, 0x51, - 0x3c, 0x16, 0x56, 0x39, 0xfd, 0xab, 0x5e, 0x14, 0xec, 0xc5, 0xc3, 0x4b, 0x14, 0xa2, 0x64, 0x4e, - 0xfe, 0x8e, 0x05, 0x95, 0x78, 0x55, 0x53, 0xcd, 0xb2, 0x99, 0xbf, 0x30, 0xf1, 0x62, 0x2a, 0x25, - 0xd2, 0x4b, 0xb4, 0x01, 0x41, 0x53, 0x96, 0xf9, 0x8f, 0x43, 0xc5, 0xf8, 0x04, 0x32, 0x0b, 0x85, - 0x1d, 0xba, 0x27, 0x06, 0x3c, 0xb2, 0x9f, 0xe4, 0x7c, 0x62, 0x84, 0xcb, 0x21, 0xfd, 0x89, 0xb1, - 0x97, 0xac, 0xf9, 0x57, 0x60, 0x36, 0xcd, 0xf0, 0x24, 0xf5, 0xed, 0x7f, 0x5a, 0x4c, 0x0c, 0x4c, - 0xb6, 0x10, 0x10, 0x1f, 0x26, 0xbb, 0x34, 0x0a, 0xdc, 0xa6, 0xea, 0xb2, 0xe5, 0xd1, 0x5a, 0x69, - 0x8d, 0x13, 0x8b, 0x37, 0x44, 0xf1, 0x3f, 0x44, 0xc5, 0x85, 0x6c, 0xc3, 0xb8, 0x13, 0xb4, 0x55, - 0x9f, 0x5c, 0xcb, 0x67, 0x5a, 0xc6, 0x4b, 0x45, 0x2d, 0x68, 0x87, 0xc8, 0x39, 0x90, 0x45, 0x28, - 0x47, 0x34, 0xe8, 0xba, 0x9e, 0x13, 0x89, 0x1d, 0xb4, 0x54, 0x3f, 0x2b, 0xd1, 0xca, 0x1b, 0x0a, - 0x80, 0x31, 0x0e, 0xe9, 0xc0, 0x44, 0x2b, 0xd8, 0xc3, 0xbe, 0x37, 0x37, 0x9e, 0x47, 0x53, 0x2c, - 0x73, 0x5a, 0xf1, 0x20, 0x15, 0xff, 0x51, 0xf2, 0x20, 0xbf, 0x6e, 0xc1, 0xf9, 0x2e, 0x75, 0xc2, - 0x7e, 0x40, 0xd9, 0x27, 0x20, 0x8d, 0xa8, 0xc7, 0x3a, 0x76, 0xae, 0xc8, 0x99, 0xe3, 0xa8, 0xfd, - 0x30, 0x48, 0xb9, 0xfe, 0xa4, 0x14, 0xe5, 0x7c, 0x16, 0x14, 0x33, 0xa5, 0x21, 0x6f, 0x43, 0x25, - 0x8a, 0x3a, 0x8d, 0x88, 0xe9, 0xc1, 0xed, 0xbd, 0xb9, 0x09, 0xbe, 0x78, 0x8d, 0xb8, 0xc2, 0x6c, - 0x6c, 0xac, 0x2a, 0x82, 0xf5, 0x19, 0x36, 0x5b, 0x8c, 0x02, 0x34, 0xd9, 0xd9, 0xff, 0xa2, 0x08, - 0x67, 0x07, 0xb6, 0x15, 0xf2, 0x02, 0x14, 0x7b, 0xdb, 0x4e, 0xa8, 0xf6, 0x89, 0x4b, 0x6a, 0x91, - 0x5a, 0x67, 0x85, 0xef, 0xed, 0x57, 0xcf, 0xa8, 0x2a, 0xbc, 0x00, 0x05, 0x32, 0xd3, 0xda, 0xba, - 0x34, 0x0c, 0x9d, 0xb6, 0xda, 0x3c, 0x8c, 0x41, 0xca, 0x8b, 0x51, 0xc1, 0xc9, 0x2f, 0x58, 0x70, - 0x46, 0x0c, 0x58, 0xa4, 0x61, 0xbf, 0x13, 0xb1, 0x0d, 0x92, 0x75, 0xca, 0x8d, 0x3c, 0x26, 0x87, - 0x20, 0x59, 0xbf, 0x20, 0xb9, 0x9f, 0x31, 0x4b, 0x43, 0x4c, 0xf2, 0x25, 0x77, 0xa0, 0x1c, 0x46, - 0x4e, 0x10, 0xd1, 0x56, 0x2d, 0xe2, 0xaa, 0x5c, 0xe5, 0xca, 0x4f, 0x1e, 0x6f, 0xe7, 0xd8, 0x70, - 0xbb, 0x54, 0xec, 0x52, 0x0d, 0x45, 0x00, 0x63, 0x5a, 0xe4, 0x6d, 0x80, 0xa0, 0xef, 0x35, 0xfa, - 0xdd, 0xae, 0x13, 0xec, 0x49, 0xed, 0xee, 0xfa, 0x68, 0x9f, 0x87, 0x9a, 0x5e, 0xac, 0xe8, 0xc4, - 0x65, 0x68, 0xf0, 0x23, 0x5f, 0xb4, 0xe0, 0x8c, 0x98, 0x07, 0x4a, 0x82, 0x89, 0x9c, 0x25, 0x38, - 0xcb, 0x9a, 0x76, 0xd9, 0x64, 0x81, 0x49, 0x8e, 0xe4, 0x4d, 0xa8, 0x34, 0xfd, 0x6e, 0xaf, 0x43, - 0x45, 0xe3, 0x4e, 0x9e, 0xb8, 0x71, 0xf9, 0xd0, 0x5d, 0x8a, 0x49, 0xa0, 0x49, 0xcf, 0xfe, 0xf7, - 0x49, 0x1d, 0x47, 0x0d, 0x69, 0xf2, 0x69, 0x78, 0x3c, 0xec, 0x37, 0x9b, 0x34, 0x0c, 0xb7, 0xfa, - 0x1d, 0xec, 0x7b, 0xd7, 0xdd, 0x30, 0xf2, 0x83, 0xbd, 0x55, 0xb7, 0xeb, 0x46, 0x7c, 0x40, 0x17, - 0xeb, 0x17, 0x0f, 0xf6, 0xab, 0x8f, 0x37, 0x86, 0x21, 0xe1, 0xf0, 0xfa, 0xc4, 0x81, 0x27, 0xfa, - 0xde, 0x70, 0xf2, 0xe2, 0xf8, 0x51, 0x3d, 0xd8, 0xaf, 0x3e, 0x71, 0x7b, 0x38, 0x1a, 0x1e, 0x46, - 0xc3, 0xfe, 0x33, 0x8b, 0x6d, 0x43, 0xe2, 0xbb, 0x36, 0x68, 0xb7, 0xd7, 0x61, 0x4b, 0xe7, 0xe9, - 0x2b, 0xc7, 0x51, 0x42, 0x39, 0xc6, 0x7c, 0xf6, 0x72, 0x25, 0xff, 0x30, 0x0d, 0xd9, 0xfe, 0xaf, - 0x16, 0x9c, 0x4f, 0x23, 0x3f, 0x04, 0x85, 0x2e, 0x4c, 0x2a, 0x74, 0x37, 0xf3, 0xfd, 0xda, 0x21, - 0x5a, 0xdd, 0x2f, 0x1a, 0x03, 0x56, 0xa1, 0x22, 0xdd, 0x22, 0x2f, 0xc1, 0x54, 0x24, 0xff, 0xde, - 0x8c, 0x95, 0x73, 0x6d, 0x98, 0xd8, 0x30, 0x60, 0x98, 0xc0, 0x64, 0x35, 0x9b, 0x9d, 0x7e, 0x18, - 0xd1, 0xa0, 0xd1, 0xf4, 0x7b, 0x62, 0xd9, 0x2d, 0xc5, 0x35, 0x97, 0x0c, 0x18, 0x26, 0x30, 0xed, - 0xbf, 0x59, 0x1c, 0x6c, 0xf7, 0xff, 0xd7, 0xf5, 0x95, 0x58, 0xfd, 0x28, 0xbc, 0x9f, 0xea, 0xc7, - 0xf8, 0x07, 0x4a, 0xfd, 0xf8, 0x92, 0xc5, 0xb4, 0x38, 0x31, 0x00, 0x42, 0xa9, 0x1a, 0xbd, 0x9e, - 0xef, 0x74, 0x40, 0xba, 0x65, 0x2a, 0x86, 0x92, 0x17, 0xc6, 0x6c, 0xed, 0x7f, 0x34, 0x0e, 0x53, - 0x35, 0x2f, 0x72, 0x6b, 0x5b, 0x5b, 0xae, 0xe7, 0x46, 0x7b, 0xe4, 0x6b, 0x63, 0xb0, 0xd8, 0x0b, - 0xe8, 0x16, 0x0d, 0x02, 0xda, 0x5a, 0xee, 0x07, 0xae, 0xd7, 0x6e, 0x34, 0xb7, 0x69, 0xab, 0xdf, - 0x71, 0xbd, 0xf6, 0x4a, 0xdb, 0xf3, 0x75, 0xf1, 0xd5, 0xfb, 0xb4, 0xd9, 0xe7, 0xed, 0x2a, 0x56, - 0x89, 0xee, 0x68, 0xb2, 0xaf, 0x9f, 0x8c, 0x69, 0xfd, 0xf9, 0x83, 0xfd, 0xea, 0xe2, 0x09, 0x2b, - 0xe1, 0x49, 0x3f, 0x8d, 0x7c, 0x65, 0x0c, 0x16, 0x02, 0xfa, 0xb9, 0xbe, 0x7b, 0xfc, 0xd6, 0x10, - 0xcb, 0x78, 0x67, 0xc4, 0xed, 0xfe, 0x44, 0x3c, 0xeb, 0x57, 0x0e, 0xf6, 0xab, 0x27, 0xac, 0x83, - 0x27, 0xfc, 0x2e, 0x7b, 0x1d, 0x2a, 0xb5, 0x9e, 0x1b, 0xba, 0xf7, 0xd1, 0xef, 0x47, 0xf4, 0x18, - 0x06, 0x8d, 0x2a, 0x14, 0x83, 0x7e, 0x87, 0x8a, 0x05, 0xa6, 0x5c, 0x2f, 0xb3, 0x65, 0x19, 0x59, - 0x01, 0x8a, 0x72, 0xfb, 0x4b, 0x6c, 0x0b, 0xe2, 0x24, 0x53, 0xa6, 0xac, 0xbb, 0x50, 0x0c, 0x18, - 0x13, 0x39, 0xb2, 0x46, 0x3d, 0xf5, 0xc7, 0x52, 0x4b, 0x21, 0xd8, 0x4f, 0x14, 0x2c, 0xec, 0x6f, - 0x8f, 0xc1, 0x85, 0x5a, 0xaf, 0xb7, 0x46, 0xc3, 0xed, 0x94, 0x14, 0xbf, 0x64, 0xc1, 0xf4, 0xae, - 0x1b, 0x44, 0x7d, 0xa7, 0xa3, 0xac, 0x95, 0x42, 0x9e, 0xc6, 0xa8, 0xf2, 0x70, 0x6e, 0x6f, 0x24, - 0x48, 0xd7, 0xc9, 0xc1, 0x7e, 0x75, 0x3a, 0x59, 0x86, 0x29, 0xf6, 0xe4, 0x6f, 0x5b, 0x30, 0x2b, - 0x8b, 0x6e, 0xfa, 0x2d, 0x6a, 0x5a, 0xc3, 0x6f, 0xe7, 0x29, 0x93, 0x26, 0x2e, 0xac, 0x98, 0xe9, - 0x52, 0x1c, 0x10, 0xc2, 0xfe, 0xef, 0x63, 0xf0, 0xd8, 0x10, 0x1a, 0xe4, 0x37, 0x2c, 0x38, 0x2f, - 0x4c, 0xe8, 0x06, 0x08, 0xe9, 0x96, 0x6c, 0xcd, 0x9f, 0xce, 0x5b, 0x72, 0x64, 0x53, 0x9c, 0x7a, - 0x4d, 0x5a, 0x9f, 0x63, 0x4b, 0xf2, 0x52, 0x06, 0x6b, 0xcc, 0x14, 0x88, 0x4b, 0x2a, 0x8c, 0xea, - 0x29, 0x49, 0xc7, 0x1e, 0x8a, 0xa4, 0x8d, 0x0c, 0xd6, 0x98, 0x29, 0x90, 0xfd, 0xd7, 0xe1, 0x89, - 0x43, 0xc8, 0x1d, 0x3d, 0x39, 0xed, 0x37, 0xf5, 0xa8, 0x4f, 0x8e, 0xb9, 0x63, 0xcc, 0x6b, 0x1b, - 0x26, 0xf8, 0xd4, 0x51, 0x13, 0x1b, 0xd8, 0x1e, 0xcc, 0xe7, 0x54, 0x88, 0x12, 0x62, 0x7f, 0xdb, - 0x82, 0xd2, 0x09, 0x6c, 0x9f, 0xd5, 0xa4, 0xed, 0xb3, 0x3c, 0x60, 0xf7, 0x8c, 0x06, 0xed, 0x9e, - 0xaf, 0x8e, 0xd6, 0x1b, 0xc7, 0xb1, 0x77, 0xfe, 0xd0, 0x82, 0xb3, 0x03, 0xf6, 0x51, 0xb2, 0x0d, - 0xe7, 0x7b, 0x7e, 0x4b, 0x6d, 0xa7, 0xd7, 0x9d, 0x70, 0x9b, 0xc3, 0xe4, 0xe7, 0xbd, 0xc0, 0x7a, - 0x72, 0x3d, 0x03, 0xfe, 0xde, 0x7e, 0x75, 0x4e, 0x13, 0x49, 0x21, 0x60, 0x26, 0x45, 0xd2, 0x83, - 0xd2, 0x96, 0x4b, 0x3b, 0xad, 0x78, 0x08, 0x8e, 0xa8, 0xa5, 0x5d, 0x93, 0xd4, 0xc4, 0xd5, 0x80, - 0xfa, 0x87, 0x9a, 0x8b, 0xfd, 0x23, 0x0b, 0xa6, 0x6b, 0xfd, 0x68, 0x9b, 0xe9, 0x28, 0x4d, 0x6e, - 0x8d, 0x23, 0x1e, 0x14, 0x43, 0xb7, 0xbd, 0xfb, 0x42, 0x3e, 0x8b, 0x71, 0x83, 0x91, 0x92, 0x57, - 0x24, 0x5a, 0x59, 0xe7, 0x85, 0x28, 0xd8, 0x90, 0x00, 0x26, 0x7c, 0xa7, 0x1f, 0x6d, 0x5f, 0x91, - 0x9f, 0x3c, 0xa2, 0x65, 0xe2, 0x16, 0xfb, 0x9c, 0x2b, 0x92, 0xa3, 0x56, 0x19, 0x45, 0x29, 0x4a, - 0x4e, 0xf6, 0x17, 0x60, 0x3a, 0x79, 0xef, 0x76, 0x8c, 0x31, 0x7b, 0x11, 0x0a, 0x4e, 0xe0, 0xc9, - 0x11, 0x5b, 0x91, 0x08, 0x85, 0x1a, 0xde, 0x44, 0x56, 0x4e, 0x9e, 0x83, 0xd2, 0x56, 0xbf, 0xd3, - 0xe1, 0xe7, 0x0a, 0x71, 0xc9, 0xa5, 0x8f, 0x45, 0xd7, 0x64, 0x39, 0x6a, 0x0c, 0xfb, 0x7f, 0x8f, - 0xc3, 0x4c, 0xbd, 0xd3, 0xa7, 0xaf, 0x06, 0x94, 0x2a, 0x5b, 0x50, 0x0d, 0x66, 0x7a, 0x01, 0xdd, - 0x75, 0xe9, 0xbd, 0x06, 0xed, 0xd0, 0x66, 0xe4, 0x07, 0x52, 0x9a, 0xc7, 0x24, 0xa1, 0x99, 0xf5, - 0x24, 0x18, 0xd3, 0xf8, 0xe4, 0x15, 0x98, 0x76, 0x9a, 0x91, 0xbb, 0x4b, 0x35, 0x05, 0x21, 0xee, - 0xa3, 0x92, 0xc2, 0x74, 0x2d, 0x01, 0xc5, 0x14, 0x36, 0xf9, 0x0c, 0xcc, 0x85, 0x4d, 0xa7, 0x43, - 0x6f, 0xf7, 0x24, 0xab, 0xa5, 0x6d, 0xda, 0xdc, 0x59, 0xf7, 0x5d, 0x2f, 0x92, 0x76, 0xc7, 0xcb, - 0x92, 0xd2, 0x5c, 0x63, 0x08, 0x1e, 0x0e, 0xa5, 0x40, 0xfe, 0xa5, 0x05, 0x17, 0x7b, 0x01, 0x5d, - 0x0f, 0xfc, 0xae, 0xcf, 0x86, 0xda, 0x80, 0x39, 0x4c, 0x9a, 0x85, 0xde, 0x18, 0x51, 0x97, 0x12, - 0x25, 0x83, 0x77, 0x38, 0x1f, 0x3a, 0xd8, 0xaf, 0x5e, 0x5c, 0x3f, 0x4c, 0x00, 0x3c, 0x5c, 0x3e, - 0xf2, 0xaf, 0x2d, 0xb8, 0xd4, 0xf3, 0xc3, 0xe8, 0x90, 0x4f, 0x28, 0x9e, 0xea, 0x27, 0xd8, 0x07, - 0xfb, 0xd5, 0x4b, 0xeb, 0x87, 0x4a, 0x80, 0x47, 0x48, 0x68, 0x1f, 0x54, 0xe0, 0xac, 0x31, 0xf6, - 0xa4, 0x31, 0xe7, 0x65, 0x38, 0xa3, 0x06, 0x43, 0xac, 0xfb, 0x94, 0x63, 0xdb, 0x5e, 0xcd, 0x04, - 0x62, 0x12, 0x97, 0x8d, 0x3b, 0x3d, 0x14, 0x45, 0xed, 0xd4, 0xb8, 0x5b, 0x4f, 0x40, 0x31, 0x85, - 0x4d, 0x56, 0xe0, 0x9c, 0x2c, 0x41, 0xda, 0xeb, 0xb8, 0x4d, 0x67, 0xc9, 0xef, 0xcb, 0x21, 0x57, - 0xac, 0x3f, 0x76, 0xb0, 0x5f, 0x3d, 0xb7, 0x3e, 0x08, 0xc6, 0xac, 0x3a, 0x64, 0x15, 0xce, 0x3b, - 0xfd, 0xc8, 0xd7, 0xdf, 0x7f, 0xd5, 0x63, 0xdb, 0x69, 0x8b, 0x0f, 0xad, 0x92, 0xd8, 0x77, 0x6b, - 0x19, 0x70, 0xcc, 0xac, 0x45, 0xd6, 0x53, 0xd4, 0x1a, 0xb4, 0xe9, 0x7b, 0x2d, 0xd1, 0xcb, 0xc5, - 0xf8, 0x18, 0x58, 0xcb, 0xc0, 0xc1, 0xcc, 0x9a, 0xa4, 0x03, 0xd3, 0x5d, 0xe7, 0xfe, 0x6d, 0xcf, - 0xd9, 0x75, 0xdc, 0x0e, 0x63, 0x22, 0xed, 0x85, 0xc3, 0xad, 0x4c, 0xfd, 0xc8, 0xed, 0x2c, 0x08, - 0x3f, 0x8e, 0x85, 0x15, 0x2f, 0xba, 0x15, 0x34, 0x22, 0xa6, 0xa9, 0x0b, 0x0d, 0x72, 0x2d, 0x41, - 0x0b, 0x53, 0xb4, 0xc9, 0x2d, 0xb8, 0xc0, 0xa7, 0xe3, 0xb2, 0x7f, 0xcf, 0x5b, 0xa6, 0x1d, 0x67, - 0x4f, 0x7d, 0xc0, 0x24, 0xff, 0x80, 0xc7, 0x0f, 0xf6, 0xab, 0x17, 0x1a, 0x59, 0x08, 0x98, 0x5d, - 0x8f, 0x38, 0xf0, 0x44, 0x12, 0x80, 0x74, 0xd7, 0x0d, 0x5d, 0xdf, 0x13, 0x66, 0xb9, 0x52, 0x6c, - 0x96, 0x6b, 0x0c, 0x47, 0xc3, 0xc3, 0x68, 0x90, 0xbf, 0x6b, 0xc1, 0xf9, 0xac, 0x69, 0x38, 0x57, - 0xce, 0xe3, 0x36, 0x39, 0x35, 0xb5, 0xc4, 0x88, 0xc8, 0x5c, 0x14, 0x32, 0x85, 0x20, 0xef, 0x58, - 0x30, 0xe5, 0x18, 0x27, 0xe8, 0x39, 0xc8, 0x63, 0xd7, 0x32, 0xcf, 0xe4, 0xf5, 0xd9, 0x83, 0xfd, - 0x6a, 0xe2, 0x94, 0x8e, 0x09, 0x8e, 0xe4, 0xef, 0x5b, 0x70, 0x21, 0x73, 0x8e, 0xcf, 0x55, 0x4e, - 0xa3, 0x85, 0xf8, 0x20, 0xc9, 0x5e, 0x73, 0xb2, 0xc5, 0x20, 0xdf, 0xb0, 0xf4, 0x56, 0xa6, 0x2e, - 0x18, 0xe7, 0xa6, 0xb8, 0x68, 0x23, 0x1a, 0x3c, 0x0c, 0x35, 0x4a, 0x11, 0xae, 0x9f, 0x33, 0x76, - 0x46, 0x55, 0x88, 0x69, 0xf6, 0xe4, 0xeb, 0x96, 0xda, 0x1a, 0xb5, 0x44, 0x67, 0x4e, 0x4b, 0x22, - 0x12, 0xef, 0xb4, 0x5a, 0xa0, 0x14, 0x73, 0xf2, 0x33, 0x30, 0xef, 0x6c, 0xfa, 0x41, 0x94, 0x39, - 0xf9, 0xe6, 0xa6, 0xf9, 0x34, 0xba, 0x74, 0xb0, 0x5f, 0x9d, 0xaf, 0x0d, 0xc5, 0xc2, 0x43, 0x28, - 0xd8, 0xbf, 0x55, 0x84, 0x29, 0x71, 0x12, 0x92, 0x5b, 0xd7, 0xef, 0x5a, 0xf0, 0x64, 0xb3, 0x1f, - 0x04, 0xd4, 0x8b, 0x1a, 0x11, 0xed, 0x0d, 0x6e, 0x5c, 0xd6, 0xa9, 0x6e, 0x5c, 0x97, 0x0f, 0xf6, - 0xab, 0x4f, 0x2e, 0x1d, 0xc2, 0x1f, 0x0f, 0x95, 0x8e, 0xfc, 0x3b, 0x0b, 0x6c, 0x89, 0x50, 0x77, - 0x9a, 0x3b, 0xed, 0xc0, 0xef, 0x7b, 0xad, 0xc1, 0x8f, 0x18, 0x3b, 0xd5, 0x8f, 0x78, 0xfa, 0x60, - 0xbf, 0x6a, 0x2f, 0x1d, 0x29, 0x05, 0x1e, 0x43, 0x52, 0xf2, 0x2a, 0x9c, 0x95, 0x58, 0x57, 0xef, - 0xf7, 0x68, 0xe0, 0xb2, 0x33, 0x87, 0x54, 0x1c, 0x63, 0xdf, 0xb4, 0x34, 0x02, 0x0e, 0xd6, 0x21, - 0x21, 0x4c, 0xde, 0xa3, 0x6e, 0x7b, 0x3b, 0x52, 0xea, 0xd3, 0x88, 0x0e, 0x69, 0xd2, 0x2a, 0x72, - 0x47, 0xd0, 0xac, 0x57, 0x0e, 0xf6, 0xab, 0x93, 0xf2, 0x0f, 0x2a, 0x4e, 0xe4, 0x26, 0x4c, 0x8b, - 0x73, 0xea, 0xba, 0xeb, 0xb5, 0xd7, 0x7d, 0x4f, 0x78, 0x55, 0x95, 0xeb, 0x4f, 0xab, 0x0d, 0xbf, - 0x91, 0x80, 0xbe, 0xb7, 0x5f, 0x9d, 0x52, 0xbf, 0x37, 0xf6, 0x7a, 0x14, 0x53, 0xb5, 0xed, 0xdf, - 0x9f, 0x00, 0x50, 0xc3, 0x95, 0xf6, 0xc8, 0x87, 0xa1, 0x1c, 0xd2, 0x48, 0x70, 0x95, 0x37, 0x49, - 0xe2, 0xfe, 0x4f, 0x15, 0x62, 0x0c, 0x27, 0x3b, 0x50, 0xec, 0x39, 0xfd, 0x90, 0xe6, 0x73, 0x7e, - 0x90, 0x9d, 0xbf, 0xce, 0x28, 0x8a, 0x83, 0x29, 0xff, 0x89, 0x82, 0x07, 0xf9, 0xb2, 0x05, 0x40, - 0x93, 0x1d, 0x36, 0xb2, 0x81, 0x48, 0xb2, 0x8c, 0xfb, 0x94, 0xb5, 0x41, 0x7d, 0xfa, 0x60, 0xbf, - 0x0a, 0x46, 0xd7, 0x1b, 0x6c, 0xc9, 0x3d, 0x28, 0x39, 0x6a, 0xcd, 0x1f, 0x3f, 0x8d, 0x35, 0x9f, - 0x9f, 0x17, 0xf5, 0xa0, 0xd5, 0xcc, 0xc8, 0x57, 0x2c, 0x98, 0x0e, 0x69, 0x24, 0xbb, 0x8a, 0xad, - 0x3c, 0x52, 0xe1, 0x1d, 0x71, 0xd0, 0x35, 0x12, 0x34, 0xc5, 0x0a, 0x9a, 0x2c, 0xc3, 0x14, 0x5f, - 0x25, 0xca, 0x75, 0xea, 0xb4, 0x68, 0xc0, 0xcd, 0x11, 0x52, 0x93, 0x1a, 0x5d, 0x14, 0x83, 0xa6, - 0x16, 0xc5, 0x28, 0xc3, 0x14, 0x5f, 0x25, 0xca, 0x9a, 0x1b, 0x04, 0xbe, 0x14, 0xa5, 0x94, 0x93, - 0x28, 0x06, 0x4d, 0x2d, 0x8a, 0x51, 0x86, 0x29, 0xbe, 0xf6, 0xb7, 0xce, 0xc0, 0xb4, 0x9a, 0x48, - 0xb1, 0x66, 0x2f, 0xac, 0x5f, 0x43, 0x34, 0xfb, 0x25, 0x13, 0x88, 0x49, 0x5c, 0x56, 0x59, 0x4c, - 0xd5, 0xa4, 0x62, 0xaf, 0x2b, 0x37, 0x4c, 0x20, 0x26, 0x71, 0x49, 0x17, 0x8a, 0x61, 0x44, 0x7b, - 0xca, 0xe7, 0x60, 0xc4, 0x2b, 0xf1, 0x78, 0x7d, 0x30, 0x2c, 0x09, 0x8c, 0x3c, 0x0a, 0x2e, 0xdc, - 0x80, 0x1b, 0x25, 0x6c, 0xba, 0x72, 0x72, 0xe4, 0x33, 0x3f, 0x93, 0xe6, 0x62, 0xd1, 0x1b, 0xc9, - 0x32, 0x4c, 0xb1, 0xcf, 0x50, 0xf6, 0x8b, 0xa7, 0xa8, 0xec, 0x7f, 0x0a, 0x4a, 0x5d, 0xe7, 0x7e, - 0xa3, 0x1f, 0xb4, 0x1f, 0xfc, 0x50, 0x21, 0x7d, 0x48, 0x05, 0x15, 0xd4, 0xf4, 0xc8, 0x17, 0x2d, - 0x63, 0xc9, 0x11, 0x0e, 0x06, 0x77, 0xf2, 0x5d, 0x72, 0xf4, 0x5e, 0x39, 0x74, 0xf1, 0x19, 0x50, - 0xbd, 0x4b, 0x0f, 0x5d, 0xf5, 0x66, 0x6a, 0xa4, 0x98, 0x20, 0x5a, 0x8d, 0x2c, 0x9f, 0xaa, 0x1a, - 0xb9, 0x94, 0x60, 0x86, 0x29, 0xe6, 0x5c, 0x1e, 0x31, 0xe7, 0xb4, 0x3c, 0x70, 0xaa, 0xf2, 0x34, - 0x12, 0xcc, 0x30, 0xc5, 0x7c, 0xf8, 0x79, 0xb3, 0x72, 0x3a, 0xe7, 0xcd, 0xa9, 0x1c, 0xce, 0x9b, - 0x87, 0xab, 0xe2, 0x67, 0x46, 0x55, 0xc5, 0xc9, 0x0d, 0x20, 0xad, 0x3d, 0xcf, 0xe9, 0xba, 0x4d, - 0xb9, 0x58, 0xf2, 0x6d, 0x73, 0x9a, 0xdb, 0x23, 0xe6, 0xe5, 0x42, 0x46, 0x96, 0x07, 0x30, 0x30, - 0xa3, 0x16, 0x89, 0xa0, 0xd4, 0x53, 0x1a, 0xd7, 0x4c, 0x1e, 0xa3, 0x5f, 0x69, 0x60, 0xc2, 0x6f, - 0x84, 0x4d, 0x3c, 0x55, 0x82, 0x9a, 0x13, 0x59, 0x85, 0xf3, 0x5d, 0xd7, 0x5b, 0xf7, 0x5b, 0xe1, - 0x3a, 0x0d, 0xa4, 0xb5, 0xa5, 0x41, 0xa3, 0xb9, 0x59, 0xde, 0x36, 0xfc, 0x04, 0xbd, 0x96, 0x01, - 0xc7, 0xcc, 0x5a, 0xf6, 0xff, 0xb2, 0x60, 0x76, 0xa9, 0xe3, 0xf7, 0x5b, 0x77, 0x9c, 0xa8, 0xb9, - 0x2d, 0xdc, 0x14, 0xc8, 0x2b, 0x50, 0x72, 0xbd, 0x88, 0x06, 0xbb, 0x4e, 0x47, 0xee, 0x4f, 0xb6, - 0x32, 0x9f, 0xae, 0xc8, 0xf2, 0xf7, 0xf6, 0xab, 0xd3, 0xcb, 0xfd, 0x80, 0x5b, 0xa9, 0xc5, 0x6a, - 0x85, 0xba, 0x0e, 0xf9, 0x96, 0x05, 0x67, 0x85, 0xa3, 0xc3, 0xb2, 0x13, 0x39, 0xaf, 0xf7, 0x69, - 0xe0, 0x52, 0xe5, 0xea, 0x30, 0xe2, 0x42, 0x95, 0x96, 0x55, 0x31, 0xd8, 0x8b, 0x15, 0xf5, 0xb5, - 0x34, 0x67, 0x1c, 0x14, 0xc6, 0xfe, 0x95, 0x02, 0x3c, 0x3e, 0x94, 0x16, 0x99, 0x87, 0x31, 0xb7, - 0x25, 0x3f, 0x1d, 0x24, 0xdd, 0xb1, 0x95, 0x16, 0x8e, 0xb9, 0x2d, 0xb2, 0xc0, 0x75, 0xce, 0x80, - 0x86, 0xa1, 0xba, 0x70, 0x2e, 0x6b, 0xf5, 0x50, 0x96, 0xa2, 0x81, 0x41, 0xaa, 0x50, 0xe4, 0xfe, - 0xc3, 0xf2, 0x3c, 0xc1, 0xb5, 0x58, 0xee, 0xaa, 0x8b, 0xa2, 0x9c, 0x7c, 0xc9, 0x02, 0x10, 0x02, - 0xb2, 0xd3, 0x88, 0xdc, 0x25, 0x31, 0xdf, 0x66, 0x62, 0x94, 0x85, 0x94, 0xf1, 0x7f, 0x34, 0xb8, - 0x92, 0x0d, 0x98, 0x60, 0x0a, 0xad, 0xdf, 0x7a, 0xe0, 0x4d, 0x91, 0xdf, 0x44, 0xad, 0x73, 0x1a, - 0x28, 0x69, 0xb1, 0xb6, 0x0a, 0x68, 0xd4, 0x0f, 0x3c, 0xd6, 0xb4, 0x7c, 0x1b, 0x2c, 0x09, 0x29, - 0x50, 0x97, 0xa2, 0x81, 0x61, 0xff, 0xf3, 0x31, 0x38, 0x9f, 0x25, 0x3a, 0xdb, 0x6d, 0x26, 0x84, - 0xb4, 0xf2, 0x68, 0xfc, 0x53, 0xf9, 0xb7, 0x8f, 0xf4, 0xd9, 0xd1, 0xd7, 0x14, 0xd2, 0x81, 0x52, - 0xf2, 0x25, 0x3f, 0xa5, 0x5b, 0x68, 0xec, 0x01, 0x5b, 0x48, 0x53, 0x4e, 0xb5, 0xd2, 0x65, 0x18, - 0x0f, 0x59, 0xcf, 0x17, 0x92, 0xd7, 0x1d, 0xbc, 0x8f, 0x38, 0x84, 0x61, 0xf4, 0x3d, 0x37, 0x92, - 0x41, 0x37, 0x1a, 0xe3, 0xb6, 0xe7, 0x46, 0xc8, 0x21, 0xf6, 0x37, 0xc7, 0x60, 0x7e, 0xf8, 0x47, - 0x91, 0x6f, 0x5a, 0x00, 0x2d, 0x76, 0x5c, 0x09, 0xb9, 0xe7, 0xba, 0xf0, 0x71, 0x72, 0x4e, 0xab, - 0x0d, 0x97, 0x15, 0xa7, 0xd8, 0xf9, 0x4e, 0x17, 0x85, 0x68, 0x08, 0x42, 0xae, 0xa8, 0xa1, 0xcf, - 0xaf, 0x6a, 0xc4, 0x64, 0xd2, 0x75, 0xd6, 0x34, 0x04, 0x0d, 0x2c, 0x76, 0x1e, 0xf5, 0x9c, 0x2e, - 0x0d, 0x7b, 0x8e, 0x0e, 0x61, 0xe2, 0xe7, 0xd1, 0x9b, 0xaa, 0x10, 0x63, 0xb8, 0xdd, 0x81, 0xa7, - 0x8e, 0x21, 0x67, 0x4e, 0x11, 0x22, 0xf6, 0xff, 0xb0, 0xe0, 0x31, 0xe9, 0x7e, 0xf6, 0xff, 0x8d, - 0x2f, 0xe3, 0x9f, 0x5b, 0xf0, 0xc4, 0x90, 0x6f, 0x7e, 0x08, 0x2e, 0x8d, 0x6f, 0x25, 0x5d, 0x1a, - 0x6f, 0x8f, 0x3a, 0xa4, 0x33, 0xbf, 0x63, 0x88, 0x67, 0xe3, 0x1f, 0x14, 0xe0, 0x0c, 0x5b, 0xb6, - 0x5a, 0x7e, 0x3b, 0xa7, 0x8d, 0xf3, 0x29, 0x28, 0x7e, 0x8e, 0x6d, 0x40, 0xe9, 0x41, 0xc6, 0x77, - 0x25, 0x14, 0x30, 0xf2, 0x65, 0x0b, 0x26, 0x3f, 0x27, 0xf7, 0x54, 0x71, 0x96, 0x1b, 0x71, 0x31, - 0x4c, 0x7c, 0xc3, 0x82, 0xdc, 0x21, 0x45, 0xe0, 0x89, 0x76, 0x60, 0x54, 0x5b, 0xa9, 0xe2, 0x4c, - 0x9e, 0x85, 0xc9, 0x2d, 0x3f, 0xe8, 0xf6, 0x3b, 0x4e, 0x3a, 0xda, 0xf1, 0x9a, 0x28, 0x46, 0x05, - 0x67, 0x93, 0xdc, 0xe9, 0xb9, 0x6f, 0xd0, 0x20, 0x14, 0x71, 0x08, 0x89, 0x49, 0x5e, 0xd3, 0x10, - 0x34, 0xb0, 0x78, 0x9d, 0x76, 0x3b, 0xa0, 0x6d, 0x27, 0xf2, 0x03, 0xbe, 0x73, 0x98, 0x75, 0x34, - 0x04, 0x0d, 0xac, 0xf9, 0x4f, 0xc0, 0x94, 0x29, 0xfc, 0x89, 0x82, 0x58, 0x3e, 0x09, 0xd2, 0x93, - 0x31, 0xb5, 0x24, 0x59, 0xc7, 0x59, 0x92, 0xec, 0xff, 0x30, 0x06, 0x86, 0x75, 0xe8, 0x21, 0x4c, - 0x75, 0x2f, 0x31, 0xd5, 0x47, 0xb4, 0x6c, 0x18, 0xb6, 0xae, 0x61, 0x21, 0x7d, 0xbb, 0xa9, 0x90, - 0xbe, 0x9b, 0xb9, 0x71, 0x3c, 0x3c, 0xa2, 0xef, 0xfb, 0x16, 0x3c, 0x11, 0x23, 0x0f, 0x1a, 0x6e, - 0x8f, 0x5e, 0xb7, 0x5f, 0x84, 0x8a, 0x13, 0x57, 0x93, 0x13, 0xcb, 0x88, 0xa7, 0xd2, 0x20, 0x34, - 0xf1, 0xe2, 0x58, 0x90, 0xc2, 0x03, 0xc6, 0x82, 0x8c, 0x1f, 0x1e, 0x0b, 0x62, 0xff, 0x68, 0x0c, - 0x2e, 0x0e, 0x7e, 0x99, 0xe9, 0x20, 0x7d, 0xf4, 0xb7, 0xa5, 0x5d, 0xa8, 0xc7, 0x1e, 0xd8, 0x85, - 0xba, 0x70, 0x5c, 0x17, 0x6a, 0xed, 0xb8, 0x3c, 0x7e, 0xea, 0x8e, 0xcb, 0x0d, 0xb8, 0xa0, 0xbc, - 0x24, 0xaf, 0xf9, 0x81, 0x0c, 0x88, 0x50, 0x2b, 0x48, 0xa9, 0x7e, 0x51, 0x56, 0xb9, 0x80, 0x59, - 0x48, 0x98, 0x5d, 0xd7, 0xfe, 0x7e, 0x01, 0xce, 0xc5, 0xcd, 0xbe, 0xe4, 0x7b, 0x2d, 0x97, 0x3b, - 0xda, 0xbc, 0x0c, 0xe3, 0xd1, 0x5e, 0x4f, 0x35, 0xf6, 0x5f, 0x56, 0xe2, 0x6c, 0xec, 0xf5, 0x58, - 0x6f, 0x3f, 0x96, 0x51, 0x85, 0x9b, 0xce, 0x79, 0x25, 0xb2, 0xaa, 0x67, 0x87, 0xe8, 0x81, 0x17, - 0x92, 0xa3, 0xf9, 0xbd, 0xfd, 0x6a, 0x46, 0x6a, 0x83, 0x05, 0x4d, 0x29, 0x39, 0xe6, 0xc9, 0x5d, - 0x98, 0xee, 0x38, 0x61, 0x74, 0xbb, 0xd7, 0x72, 0x22, 0xba, 0xe1, 0x4a, 0x17, 0x96, 0x93, 0xc5, - 0x90, 0xe8, 0xbb, 0xfe, 0xd5, 0x04, 0x25, 0x4c, 0x51, 0x26, 0xbb, 0x40, 0x58, 0xc9, 0x46, 0xe0, - 0x78, 0xa1, 0xf8, 0x2a, 0xc6, 0xef, 0xe4, 0x01, 0x41, 0xfa, 0xe8, 0xbc, 0x3a, 0x40, 0x0d, 0x33, - 0x38, 0x90, 0xa7, 0x61, 0x22, 0xa0, 0x4e, 0xa8, 0xb7, 0x03, 0x3d, 0xff, 0x91, 0x97, 0xa2, 0x84, - 0x9a, 0x13, 0x6a, 0xe2, 0x88, 0x09, 0xf5, 0xc7, 0x16, 0x4c, 0xc7, 0xdd, 0xf4, 0x10, 0x54, 0x8f, - 0x6e, 0x52, 0xf5, 0xb8, 0x9e, 0xd7, 0x92, 0x38, 0x44, 0xdb, 0xf8, 0xb3, 0x49, 0xf3, 0xfb, 0x78, - 0xd4, 0xc2, 0xe7, 0x4d, 0x27, 0x76, 0x2b, 0x8f, 0x50, 0xb2, 0x84, 0xb6, 0x77, 0xa8, 0xf7, 0x3a, - 0xd3, 0x75, 0x5a, 0x52, 0x8f, 0x91, 0xc3, 0x5e, 0xeb, 0x3a, 0x4a, 0xbf, 0xc9, 0xd2, 0x75, 0x54, - 0x1d, 0x72, 0x1b, 0x1e, 0xeb, 0x05, 0x3e, 0x0f, 0xae, 0x5f, 0xa6, 0x4e, 0xab, 0xe3, 0x7a, 0x54, - 0x99, 0x79, 0x84, 0xab, 0xc9, 0x13, 0x07, 0xfb, 0xd5, 0xc7, 0xd6, 0xb3, 0x51, 0x70, 0x58, 0xdd, - 0x64, 0x78, 0xe6, 0xf8, 0x31, 0xc2, 0x33, 0x7f, 0x51, 0x1b, 0x53, 0x75, 0x24, 0xc0, 0xa7, 0xf3, - 0xea, 0xca, 0xac, 0x98, 0x00, 0x3d, 0xa4, 0x6a, 0x92, 0x29, 0x6a, 0xf6, 0xc3, 0x2d, 0x76, 0x13, - 0x0f, 0x68, 0xb1, 0x8b, 0x83, 0x3f, 0x26, 0xdf, 0xcf, 0xe0, 0x8f, 0xd2, 0x07, 0x2a, 0xf8, 0xe3, - 0x5b, 0x16, 0x9c, 0x73, 0x06, 0xc3, 0xae, 0xf3, 0x31, 0x1e, 0x67, 0xc4, 0x73, 0xd7, 0x9f, 0x90, - 0x42, 0x66, 0x45, 0xb7, 0x63, 0x96, 0x28, 0xf6, 0xbb, 0x45, 0x98, 0x4d, 0x2b, 0x49, 0xa7, 0x1f, - 0x9f, 0xfa, 0xcb, 0x16, 0xcc, 0xaa, 0x09, 0x2e, 0x78, 0xea, 0x23, 0xc6, 0x6a, 0x4e, 0xeb, 0x8a, - 0x50, 0xf7, 0x74, 0xda, 0x90, 0x8d, 0x14, 0x37, 0x1c, 0xe0, 0x4f, 0xde, 0x84, 0x8a, 0xbe, 0x55, - 0x79, 0xa0, 0x60, 0x55, 0x1e, 0x4f, 0x59, 0x8b, 0x49, 0xa0, 0x49, 0x8f, 0xbc, 0x6b, 0x01, 0x34, - 0xd5, 0x4e, 0x9c, 0x53, 0x28, 0x50, 0x86, 0xb6, 0x10, 0xeb, 0xf3, 0xba, 0x28, 0x44, 0x83, 0x31, - 0xf9, 0x15, 0x7e, 0x9f, 0xa2, 0x47, 0x82, 0x48, 0x47, 0x32, 0xb2, 0xdb, 0xfb, 0x21, 0xba, 0x73, - 0xac, 0xed, 0x19, 0xa0, 0x10, 0x13, 0x42, 0xd8, 0x2f, 0x83, 0x76, 0x54, 0x66, 0x2b, 0x2b, 0x77, - 0x55, 0x5e, 0x77, 0xa2, 0x6d, 0x39, 0x04, 0xf5, 0xca, 0x7a, 0x4d, 0x01, 0x30, 0xc6, 0xb1, 0x3f, - 0x0b, 0xd3, 0xaf, 0x06, 0x4e, 0x6f, 0xdb, 0xe5, 0xf7, 0x16, 0xec, 0x7c, 0xfc, 0x2c, 0x4c, 0x3a, - 0xad, 0x56, 0x56, 0x86, 0x9b, 0x9a, 0x28, 0x46, 0x05, 0x3f, 0xd6, 0x51, 0xd8, 0xfe, 0x7d, 0x0b, - 0x48, 0x7c, 0xf7, 0xeb, 0x7a, 0xed, 0x35, 0x27, 0x6a, 0x6e, 0xb3, 0x23, 0xdc, 0x36, 0x2f, 0xcd, - 0x3a, 0xc2, 0x5d, 0xd7, 0x10, 0x34, 0xb0, 0xc8, 0xdb, 0x50, 0x11, 0xff, 0xde, 0xd0, 0x07, 0xc4, - 0xd1, 0xfd, 0xad, 0xf9, 0x9e, 0xc7, 0x65, 0x12, 0xa3, 0xf0, 0x7a, 0xcc, 0x01, 0x4d, 0x76, 0xac, - 0xa9, 0x56, 0xbc, 0xad, 0x4e, 0xff, 0x7e, 0x6b, 0x33, 0x6e, 0xaa, 0x5e, 0xe0, 0x6f, 0xb9, 0x1d, - 0x9a, 0x6e, 0xaa, 0x75, 0x51, 0x8c, 0x0a, 0x7e, 0xbc, 0xa6, 0xfa, 0x37, 0x16, 0x9c, 0x5f, 0x09, - 0x23, 0xd7, 0x5f, 0xa6, 0x61, 0xc4, 0x76, 0x3e, 0xb6, 0x3e, 0xf6, 0x3b, 0xc7, 0x89, 0x39, 0x58, - 0x86, 0x59, 0x79, 0x0f, 0xdd, 0xdf, 0x0c, 0x69, 0x64, 0x1c, 0x35, 0xf4, 0x3c, 0x5e, 0x4a, 0xc1, - 0x71, 0xa0, 0x06, 0xa3, 0x22, 0x2f, 0xa4, 0x63, 0x2a, 0x85, 0x24, 0x95, 0x46, 0x0a, 0x8e, 0x03, - 0x35, 0xec, 0xef, 0x15, 0xe0, 0x1c, 0xff, 0x8c, 0x54, 0xbc, 0xd0, 0xd7, 0x87, 0xc5, 0x0b, 0x8d, - 0x38, 0x95, 0x39, 0xaf, 0x07, 0x88, 0x16, 0xfa, 0x5b, 0x16, 0xcc, 0xb4, 0x92, 0x2d, 0x9d, 0x8f, - 0x5d, 0x2e, 0xab, 0x0f, 0x85, 0xdb, 0x5d, 0xaa, 0x10, 0xd3, 0xfc, 0xc9, 0xaf, 0x5a, 0x30, 0x93, - 0x14, 0x53, 0xad, 0xee, 0xa7, 0xd0, 0x48, 0xda, 0x4f, 0x3e, 0x59, 0x1e, 0x62, 0x5a, 0x04, 0xfb, - 0xbb, 0x63, 0xb2, 0x4b, 0x4f, 0x23, 0x18, 0x86, 0xdc, 0x83, 0x72, 0xd4, 0x09, 0x45, 0xa1, 0xfc, - 0xda, 0x11, 0x0f, 0xad, 0x1b, 0xab, 0x0d, 0xe1, 0x02, 0x12, 0xeb, 0x95, 0xb2, 0x84, 0xe9, 0xc7, - 0x8a, 0x17, 0x67, 0xdc, 0xec, 0x49, 0xc6, 0xb9, 0x9c, 0x96, 0x37, 0x96, 0xd6, 0xd3, 0x8c, 0x65, - 0x09, 0x63, 0xac, 0x78, 0xd9, 0xbf, 0x69, 0x41, 0xf9, 0x86, 0xaf, 0xd6, 0x91, 0x9f, 0xc9, 0xc1, - 0x16, 0xa5, 0x55, 0x56, 0xad, 0xb4, 0xc4, 0xa7, 0xa0, 0x57, 0x12, 0x96, 0xa8, 0x27, 0x0d, 0xda, - 0x0b, 0x3c, 0xd1, 0x1f, 0x23, 0x75, 0xc3, 0xdf, 0x1c, 0x6a, 0x3e, 0xfe, 0xb5, 0x22, 0x9c, 0x79, - 0xcd, 0xd9, 0xa3, 0x5e, 0xe4, 0x9c, 0x7c, 0x93, 0x78, 0x11, 0x2a, 0x4e, 0x8f, 0xdf, 0x65, 0x1a, - 0xc7, 0x90, 0xd8, 0xb8, 0x13, 0x83, 0xd0, 0xc4, 0x8b, 0x17, 0x34, 0x11, 0x99, 0x92, 0xb5, 0x14, - 0x2d, 0xa5, 0xe0, 0x38, 0x50, 0x83, 0xdc, 0x00, 0x22, 0xa3, 0xb9, 0x6b, 0xcd, 0xa6, 0xdf, 0xf7, - 0xc4, 0x92, 0x26, 0xec, 0x3e, 0xfa, 0x3c, 0xbc, 0x36, 0x80, 0x81, 0x19, 0xb5, 0xc8, 0x67, 0x60, - 0xae, 0xc9, 0x29, 0xcb, 0xd3, 0x91, 0x49, 0x51, 0x9c, 0x90, 0x75, 0xac, 0xc7, 0xd2, 0x10, 0x3c, - 0x1c, 0x4a, 0x81, 0x49, 0x1a, 0x46, 0x7e, 0xe0, 0xb4, 0xa9, 0x49, 0x77, 0x22, 0x29, 0x69, 0x63, - 0x00, 0x03, 0x33, 0x6a, 0x91, 0x2f, 0x40, 0x39, 0xda, 0x0e, 0x68, 0xb8, 0xed, 0x77, 0x5a, 0xd2, - 0xf7, 0x64, 0x44, 0x63, 0xa0, 0xec, 0xfd, 0x0d, 0x45, 0xd5, 0x18, 0xde, 0xaa, 0x08, 0x63, 0x9e, - 0x24, 0x80, 0x89, 0xb0, 0xe9, 0xf7, 0x68, 0x28, 0x4f, 0x15, 0x37, 0x72, 0xe1, 0xce, 0x8d, 0x5b, - 0x86, 0x19, 0x92, 0x73, 0x40, 0xc9, 0xc9, 0xfe, 0xbd, 0x31, 0x98, 0x32, 0x11, 0x8f, 0xb1, 0x36, - 0x7d, 0xd9, 0x82, 0xa9, 0xa6, 0xef, 0x45, 0x81, 0xdf, 0x89, 0xb3, 0x14, 0x8c, 0xae, 0x51, 0x30, - 0x52, 0xcb, 0x34, 0x72, 0xdc, 0x8e, 0x61, 0xad, 0x33, 0xd8, 0x60, 0x82, 0x29, 0xf9, 0x9a, 0x05, - 0x33, 0xb1, 0xab, 0x62, 0x6c, 0xeb, 0xcb, 0x55, 0x10, 0xbd, 0xd4, 0x5f, 0x4d, 0x72, 0xc2, 0x34, - 0x6b, 0x7b, 0x13, 0x66, 0xd3, 0xbd, 0xcd, 0x9a, 0xb2, 0xe7, 0xc8, 0xb9, 0x5e, 0x88, 0x9b, 0x72, - 0xdd, 0x09, 0x43, 0xe4, 0x10, 0xf2, 0x1c, 0x94, 0xba, 0x4e, 0xd0, 0x76, 0x3d, 0xa7, 0xc3, 0x5b, - 0xb1, 0x60, 0x2c, 0x48, 0xb2, 0x1c, 0x35, 0x86, 0xfd, 0x51, 0x98, 0x5a, 0x73, 0xbc, 0x36, 0x6d, - 0xc9, 0x75, 0xf8, 0xe8, 0x70, 0xcc, 0x3f, 0x1d, 0x87, 0x8a, 0x71, 0x7c, 0x3c, 0xfd, 0x73, 0x56, - 0x22, 0xfb, 0x4e, 0x21, 0xc7, 0xec, 0x3b, 0x9f, 0x02, 0xd8, 0x72, 0x3d, 0x37, 0xdc, 0x7e, 0xc0, - 0xbc, 0x3e, 0xfc, 0x6e, 0xfe, 0x9a, 0xa6, 0x80, 0x06, 0xb5, 0xf8, 0x02, 0xb4, 0x78, 0x48, 0x8a, - 0xbc, 0x77, 0x2d, 0x63, 0xbb, 0x99, 0xc8, 0xc3, 0xe1, 0xc3, 0xe8, 0x98, 0x05, 0xb5, 0xfd, 0x88, - 0xbb, 0xa9, 0xc3, 0x76, 0xa5, 0x0d, 0x28, 0x05, 0x34, 0xec, 0x77, 0xe9, 0x03, 0x65, 0xe0, 0xe1, - 0xae, 0x37, 0x28, 0xeb, 0xa3, 0xa6, 0x34, 0xff, 0x32, 0x9c, 0x49, 0x88, 0x70, 0xa2, 0x1b, 0x26, - 0x1f, 0x32, 0x6d, 0x14, 0x0f, 0x72, 0xdf, 0xc4, 0xfa, 0xa2, 0x63, 0x64, 0xde, 0xd1, 0x7d, 0x21, - 0x1c, 0xac, 0x04, 0xcc, 0xfe, 0xd1, 0x04, 0x48, 0x1f, 0x86, 0x63, 0x2c, 0x57, 0xe6, 0xcd, 0xe5, - 0xd8, 0x03, 0xdc, 0x5c, 0xde, 0x80, 0x29, 0xd7, 0x73, 0x23, 0xd7, 0xe9, 0x70, 0xfb, 0x93, 0xdc, - 0x4e, 0x95, 0x07, 0xfa, 0xd4, 0x8a, 0x01, 0xcb, 0xa0, 0x93, 0xa8, 0x4b, 0x5e, 0x87, 0x22, 0xdf, - 0x6f, 0xe4, 0x00, 0x3e, 0xb9, 0xa3, 0x05, 0xf7, 0xb1, 0x11, 0x61, 0x69, 0x82, 0x12, 0x3f, 0x7c, - 0x88, 0xd4, 0x43, 0xfa, 0xf8, 0x2d, 0xc7, 0x71, 0x7c, 0xf8, 0x48, 0xc1, 0x71, 0xa0, 0x06, 0xa3, - 0xb2, 0xe5, 0xb8, 0x9d, 0x7e, 0x40, 0x63, 0x2a, 0x13, 0x49, 0x2a, 0xd7, 0x52, 0x70, 0x1c, 0xa8, - 0x41, 0xb6, 0x60, 0x4a, 0x96, 0x09, 0xb7, 0xb9, 0xc9, 0x07, 0xfc, 0x4a, 0xee, 0x1e, 0x79, 0xcd, - 0xa0, 0x84, 0x09, 0xba, 0xa4, 0x0f, 0x67, 0x5d, 0xaf, 0xe9, 0x7b, 0xcd, 0x4e, 0x3f, 0x74, 0x77, - 0x69, 0x1c, 0x13, 0xf6, 0x20, 0xcc, 0x2e, 0x1c, 0xec, 0x57, 0xcf, 0xae, 0xa4, 0xc9, 0xe1, 0x20, - 0x07, 0xf2, 0x45, 0x0b, 0x2e, 0x34, 0x7d, 0x2f, 0xe4, 0xa9, 0x2b, 0x76, 0xe9, 0xd5, 0x20, 0xf0, - 0x03, 0xc1, 0xbb, 0xfc, 0x80, 0xbc, 0xb9, 0xd9, 0x73, 0x29, 0x8b, 0x24, 0x66, 0x73, 0x22, 0x6f, - 0x41, 0xa9, 0x17, 0xf8, 0xbb, 0x6e, 0x8b, 0x06, 0xd2, 0x05, 0x73, 0x35, 0x8f, 0x7c, 0x3e, 0xeb, - 0x92, 0x66, 0xbc, 0xf4, 0xa8, 0x12, 0xd4, 0xfc, 0xec, 0xff, 0x53, 0x81, 0xe9, 0x24, 0x3a, 0xf9, - 0x39, 0x80, 0x5e, 0xe0, 0x77, 0x69, 0xb4, 0x4d, 0x75, 0x6c, 0xcf, 0xcd, 0x51, 0x33, 0xb6, 0x28, - 0x7a, 0xca, 0x6d, 0x89, 0x2d, 0x17, 0x71, 0x29, 0x1a, 0x1c, 0x49, 0x00, 0x93, 0x3b, 0x62, 0xdb, - 0x95, 0x5a, 0xc8, 0x6b, 0xb9, 0xe8, 0x4c, 0x92, 0x33, 0x0f, 0x4a, 0x91, 0x45, 0xa8, 0x18, 0x91, - 0x4d, 0x28, 0xdc, 0xa3, 0x9b, 0xf9, 0xa4, 0x0b, 0xb8, 0x43, 0xe5, 0x69, 0xa6, 0x3e, 0x79, 0xb0, - 0x5f, 0x2d, 0xdc, 0xa1, 0x9b, 0xc8, 0x88, 0xb3, 0xef, 0x6a, 0x09, 0xdf, 0x05, 0xb9, 0x54, 0xbc, - 0x96, 0xa3, 0x23, 0x84, 0xf8, 0x2e, 0x59, 0x84, 0x8a, 0x11, 0x79, 0x0b, 0xca, 0xf7, 0x9c, 0x5d, - 0xba, 0x15, 0xf8, 0x5e, 0x24, 0x7d, 0xe5, 0x46, 0x0c, 0xf7, 0xb8, 0xa3, 0xc8, 0x49, 0xbe, 0x7c, - 0x7b, 0xd7, 0x85, 0x18, 0xb3, 0x23, 0xbb, 0x50, 0xf2, 0xe8, 0x3d, 0xa4, 0x1d, 0xb7, 0x99, 0x4f, - 0x78, 0xc5, 0x4d, 0x49, 0x4d, 0x72, 0xe6, 0xfb, 0x9e, 0x2a, 0x43, 0xcd, 0x8b, 0xf5, 0xe5, 0x5d, - 0x7f, 0x53, 0x2e, 0x54, 0x23, 0xf6, 0xa5, 0x3e, 0x99, 0x8a, 0xbe, 0xbc, 0xe1, 0x6f, 0x22, 0x23, - 0xce, 0xe6, 0x48, 0x53, 0x3b, 0x6a, 0xc9, 0x65, 0xea, 0x66, 0xbe, 0x0e, 0x6a, 0x62, 0x8e, 0xc4, - 0xa5, 0x68, 0x70, 0x64, 0x6d, 0xdb, 0x96, 0xc6, 0x4a, 0xb9, 0x50, 0x8d, 0xd8, 0xb6, 0x49, 0xd3, - 0xa7, 0x68, 0x5b, 0x55, 0x86, 0x9a, 0x17, 0xe3, 0xeb, 0x4a, 0xcb, 0x5f, 0x3e, 0x4b, 0x55, 0xd2, - 0x8e, 0x28, 0xf8, 0xaa, 0x32, 0xd4, 0xbc, 0x58, 0x7b, 0x87, 0x3b, 0x7b, 0xf7, 0x9c, 0xce, 0x8e, - 0xeb, 0xb5, 0x65, 0xac, 0xea, 0xa8, 0x69, 0xb8, 0x77, 0xf6, 0xee, 0x08, 0x7a, 0x66, 0x7b, 0xc7, - 0xa5, 0x68, 0x70, 0x24, 0x7f, 0xcf, 0x82, 0x89, 0x5e, 0xa7, 0xdf, 0x76, 0xbd, 0xb9, 0xa9, 0x3c, - 0x9c, 0x98, 0x92, 0x4b, 0xee, 0xc2, 0x3a, 0x27, 0x2d, 0x14, 0xc5, 0x9f, 0xd4, 0x7e, 0x97, 0xbc, - 0xf0, 0xab, 0x7f, 0x52, 0x9d, 0xa3, 0x5e, 0xd3, 0x6f, 0xb9, 0x5e, 0x7b, 0xf1, 0x6e, 0xe8, 0x7b, - 0x0b, 0xe8, 0xdc, 0x53, 0x3a, 0xba, 0x94, 0x69, 0xfe, 0xe3, 0x50, 0x31, 0x48, 0x1c, 0xa5, 0xe8, - 0x4d, 0x99, 0x8a, 0xde, 0x6f, 0x4e, 0xc0, 0x94, 0x99, 0x7c, 0xf3, 0x18, 0xda, 0x97, 0x3e, 0x71, - 0x8c, 0x9d, 0xe4, 0xc4, 0xc1, 0x8e, 0x98, 0xc6, 0x05, 0x97, 0x32, 0x6f, 0xad, 0xe4, 0xa6, 0x70, - 0xc7, 0x47, 0x4c, 0xa3, 0x30, 0xc4, 0x04, 0xd3, 0x13, 0xf8, 0xbc, 0x30, 0xb5, 0x55, 0x28, 0x76, - 0xc5, 0xa4, 0xda, 0x9a, 0x50, 0xd5, 0xae, 0x00, 0xc4, 0x59, 0x22, 0xe5, 0xc5, 0xa7, 0xd6, 0x87, - 0x8d, 0xec, 0x95, 0x06, 0x16, 0x79, 0x1a, 0x26, 0x98, 0xea, 0x43, 0x5b, 0x32, 0x94, 0x5e, 0x9f, - 0xe3, 0xaf, 0xf1, 0x52, 0x94, 0x50, 0xf2, 0x12, 0xd3, 0x52, 0x63, 0x85, 0x45, 0x46, 0xc8, 0x9f, - 0x8f, 0xb5, 0xd4, 0x18, 0x86, 0x09, 0x4c, 0x26, 0x3a, 0x65, 0xfa, 0x05, 0x5f, 0x1b, 0x0c, 0xd1, - 0xb9, 0xd2, 0x81, 0x02, 0xc6, 0xed, 0x4a, 0x29, 0x7d, 0x84, 0xcf, 0xe9, 0xa2, 0x61, 0x57, 0x4a, - 0xc1, 0x71, 0xa0, 0x06, 0xfb, 0x18, 0x79, 0x67, 0x5b, 0x11, 0x0e, 0xd3, 0x43, 0x6e, 0x5b, 0x7f, - 0xde, 0x3c, 0x6b, 0xe5, 0x38, 0x87, 0xc4, 0xa8, 0x3d, 0xfe, 0x61, 0x6b, 0xb4, 0x63, 0xd1, 0x67, - 0x61, 0x3a, 0xb9, 0x0b, 0xe5, 0x7e, 0xf3, 0xf1, 0x0f, 0x27, 0xe0, 0xdc, 0xcd, 0xb6, 0xeb, 0xa5, - 0x13, 0x9d, 0x65, 0xbd, 0x6a, 0x60, 0x9d, 0xf8, 0x55, 0x03, 0x1d, 0x93, 0x27, 0xdf, 0x0c, 0xc8, - 0x8e, 0xc9, 0x53, 0x0f, 0x38, 0x24, 0x71, 0xc9, 0x1f, 0x5b, 0xf0, 0xa4, 0xd3, 0x12, 0xe7, 0x02, - 0xa7, 0x23, 0x4b, 0x8d, 0x64, 0xdc, 0x72, 0x46, 0x87, 0x23, 0xee, 0xf2, 0x83, 0x1f, 0xbf, 0x50, - 0x3b, 0x84, 0xab, 0xe8, 0xf1, 0x9f, 0x90, 0x5f, 0xf0, 0xe4, 0x61, 0xa8, 0x78, 0xa8, 0xf8, 0xe4, - 0xaf, 0xc1, 0x4c, 0xe2, 0x83, 0xa5, 0x25, 0xbc, 0x2c, 0x2e, 0x2c, 0x1a, 0x49, 0x10, 0xa6, 0x71, - 0xc9, 0x77, 0x2d, 0x98, 0x13, 0x66, 0xd7, 0x8c, 0xa6, 0x11, 0x37, 0xb5, 0x7e, 0xfe, 0x4d, 0xb3, - 0x34, 0x84, 0xa3, 0x68, 0x96, 0xd8, 0x0e, 0x3b, 0x04, 0x0d, 0x87, 0x8a, 0x3c, 0x7f, 0x0b, 0x3e, - 0x74, 0x64, 0xbb, 0x9f, 0x28, 0x75, 0xfb, 0x6b, 0x70, 0xf1, 0x50, 0x69, 0x4f, 0x34, 0x13, 0xbf, - 0x63, 0xc1, 0x94, 0x99, 0xb0, 0x89, 0x3c, 0x07, 0xa5, 0xc8, 0xdf, 0xa1, 0xde, 0xed, 0x40, 0x79, - 0x33, 0xeb, 0x55, 0x60, 0x83, 0x97, 0xe3, 0x2a, 0x6a, 0x0c, 0x86, 0xdd, 0xec, 0xb8, 0xd4, 0x8b, - 0x56, 0x5a, 0x72, 0x0e, 0x68, 0xec, 0x25, 0x51, 0xbe, 0x8c, 0x1a, 0x43, 0x38, 0x20, 0xb2, 0xdf, - 0x0d, 0xda, 0x0c, 0xa8, 0x8a, 0x7d, 0x30, 0x1c, 0x10, 0x63, 0x18, 0x26, 0x30, 0x89, 0xad, 0xed, - 0xbf, 0xe3, 0xf1, 0xa5, 0x4f, 0xca, 0x5e, 0xfb, 0x3b, 0x16, 0x94, 0xc5, 0xfd, 0x05, 0xd2, 0xad, - 0x94, 0xff, 0x71, 0xca, 0xc2, 0x52, 0x5b, 0x5f, 0xc9, 0xf2, 0x3f, 0xbe, 0x0c, 0xe3, 0x3b, 0xae, - 0xa7, 0xbe, 0x44, 0xef, 0xd9, 0xaf, 0xb9, 0x5e, 0x0b, 0x39, 0x44, 0xef, 0xea, 0x85, 0xa1, 0xbb, - 0xfa, 0x22, 0x94, 0xb5, 0x57, 0x8e, 0xdc, 0x1b, 0xb5, 0x69, 0x5b, 0x7b, 0xf1, 0x60, 0x8c, 0x63, - 0xff, 0xba, 0x05, 0xd3, 0x3c, 0xc0, 0x3d, 0x36, 0x16, 0xbc, 0xa8, 0x1d, 0xe5, 0x84, 0xdc, 0x17, - 0x93, 0x8e, 0x72, 0xef, 0xed, 0x57, 0x2b, 0x22, 0x24, 0x3e, 0xe9, 0x37, 0xf7, 0x69, 0x69, 0x61, - 0xe4, 0xee, 0x7c, 0x63, 0x27, 0x36, 0x80, 0xc5, 0x62, 0x2a, 0x22, 0x18, 0xd3, 0xb3, 0xdf, 0x86, - 0x29, 0x33, 0x52, 0x8d, 0xbc, 0x08, 0x95, 0x9e, 0xeb, 0xb5, 0x93, 0x11, 0xcd, 0xfa, 0x16, 0x66, - 0x3d, 0x06, 0xa1, 0x89, 0xc7, 0xab, 0xf9, 0x71, 0xb5, 0xd4, 0xe5, 0xcd, 0xba, 0x6f, 0x56, 0x8b, - 0xff, 0xf0, 0x57, 0x22, 0x32, 0x22, 0x22, 0x73, 0x7f, 0x25, 0x22, 0x83, 0xc7, 0xfb, 0xf7, 0x4a, - 0x44, 0x96, 0x30, 0x7f, 0xb1, 0x5e, 0x89, 0xf8, 0x69, 0x38, 0x69, 0xc2, 0x58, 0xa6, 0x08, 0xdd, - 0x33, 0xb3, 0x4e, 0xe8, 0x16, 0x97, 0x69, 0x27, 0x24, 0xd4, 0xfe, 0x83, 0x71, 0x98, 0x4d, 0xdb, - 0x43, 0xf2, 0x76, 0x35, 0x21, 0x5f, 0xb3, 0x60, 0xda, 0x49, 0x24, 0xe7, 0xcb, 0xe9, 0xc9, 0xa9, - 0x04, 0x4d, 0x23, 0x39, 0x5c, 0xa2, 0x1c, 0x53, 0xbc, 0xc9, 0x5f, 0x82, 0xc9, 0xc8, 0xed, 0x52, - 0xbf, 0x2f, 0xac, 0xa4, 0x05, 0x61, 0xad, 0xd8, 0x10, 0x45, 0xa8, 0x60, 0x6c, 0x51, 0x76, 0xb9, - 0x7a, 0x19, 0x50, 0xe9, 0x36, 0x3d, 0x1b, 0x9b, 0x75, 0x45, 0x39, 0x6a, 0x0c, 0x72, 0x1f, 0x26, - 0x85, 0x53, 0x8a, 0xf2, 0x3e, 0x5a, 0xcb, 0xc9, 0x6e, 0x23, 0xfc, 0x5e, 0xe2, 0x2e, 0x10, 0xff, - 0x43, 0x54, 0xec, 0x98, 0x2e, 0x0b, 0x81, 0xe3, 0xb5, 0x29, 0x6f, 0x73, 0x69, 0x69, 0x78, 0x23, - 0x2f, 0x13, 0x19, 0x6a, 0xca, 0xb5, 0xa0, 0x1d, 0xca, 0x08, 0x44, 0x5d, 0x86, 0x06, 0x67, 0xfb, - 0x97, 0x2d, 0x98, 0x1b, 0x56, 0x91, 0x0d, 0x14, 0xbe, 0x0a, 0xca, 0x11, 0x65, 0x24, 0x3e, 0x70, - 0x82, 0x08, 0x05, 0x8c, 0x5c, 0x84, 0x02, 0xd5, 0x1b, 0x87, 0x4e, 0x4d, 0x78, 0xd5, 0x6b, 0x21, - 0x2b, 0x27, 0x57, 0x60, 0x3c, 0x8c, 0x68, 0x2f, 0x15, 0x57, 0x30, 0xde, 0x88, 0x68, 0x2f, 0xc3, - 0x30, 0xce, 0x71, 0xed, 0x8f, 0xc2, 0x09, 0xf3, 0x0b, 0xdb, 0x57, 0x81, 0xa0, 0xdf, 0xe9, 0x6c, - 0x3a, 0xcd, 0x9d, 0x3b, 0xae, 0xd7, 0xf2, 0xef, 0xf1, 0x85, 0x7a, 0x11, 0xca, 0x81, 0x8c, 0xb6, - 0x0e, 0xe5, 0x9c, 0xd2, 0x2b, 0xbd, 0x0a, 0xc3, 0x0e, 0x31, 0xc6, 0xb1, 0xbf, 0x3b, 0x06, 0x93, - 0x32, 0x35, 0xc0, 0x43, 0x08, 0x6a, 0xd9, 0x49, 0xb8, 0x12, 0xac, 0xe4, 0x92, 0xd1, 0x60, 0x68, - 0x44, 0x4b, 0x98, 0x8a, 0x68, 0x79, 0x2d, 0x1f, 0x76, 0x87, 0x87, 0xb3, 0x7c, 0xbb, 0x08, 0x33, - 0xa9, 0x54, 0x0b, 0xa9, 0x54, 0xe4, 0xd6, 0xfb, 0x92, 0x8a, 0x9c, 0x84, 0x89, 0x74, 0xf4, 0xf9, - 0xb9, 0xc0, 0xfe, 0x38, 0x33, 0x7d, 0x5e, 0xce, 0xc9, 0xc5, 0x0f, 0x8e, 0x73, 0xf2, 0x7f, 0xb1, - 0xe0, 0xf1, 0xa1, 0x09, 0x43, 0x78, 0xbe, 0xb9, 0x20, 0x09, 0x95, 0xeb, 0x45, 0xce, 0x69, 0x91, - 0xb4, 0xdb, 0x41, 0x3a, 0x45, 0x58, 0x9a, 0x3d, 0x79, 0x01, 0xa6, 0xf8, 0xda, 0xcc, 0x56, 0x4e, - 0xb6, 0xf6, 0x8a, 0x5b, 0x53, 0x7e, 0x7f, 0xd6, 0x30, 0xca, 0x31, 0x81, 0x65, 0x7f, 0xcb, 0x82, - 0xb9, 0x61, 0xd9, 0xc7, 0x8e, 0x61, 0xd3, 0xfb, 0xab, 0xa9, 0xa0, 0xa0, 0xea, 0x40, 0x50, 0x50, - 0xca, 0xaa, 0xa7, 0xe2, 0x7f, 0x0c, 0x83, 0x5a, 0xe1, 0x88, 0x98, 0x97, 0x3f, 0x2c, 0xc0, 0xac, - 0x14, 0x31, 0x3e, 0x32, 0xbc, 0x94, 0x08, 0x65, 0xfa, 0x89, 0x54, 0x28, 0xd3, 0xf9, 0x34, 0xfe, - 0x8f, 0xe3, 0x98, 0x3e, 0x58, 0x71, 0x4c, 0x5f, 0x2d, 0xc2, 0x85, 0xcc, 0x24, 0x64, 0xe4, 0x2b, - 0x19, 0x3b, 0xc5, 0x9d, 0x9c, 0xb3, 0x9d, 0xe9, 0x90, 0xe7, 0xd3, 0x0d, 0xfe, 0xf9, 0x55, 0x33, - 0xe8, 0x46, 0xac, 0xfe, 0x5b, 0xa7, 0x90, 0xb7, 0xed, 0xa4, 0xf1, 0x37, 0x0f, 0xf7, 0xa9, 0xb6, - 0xbf, 0x00, 0x4b, 0xfd, 0x57, 0x0b, 0xf0, 0xcc, 0x71, 0x5b, 0xf6, 0x03, 0x1a, 0xb0, 0x1a, 0x26, - 0x02, 0x56, 0x1f, 0x92, 0x6a, 0x73, 0x2a, 0xb1, 0xab, 0xff, 0x60, 0x5c, 0xef, 0xbb, 0x83, 0x13, - 0xf6, 0x58, 0x3e, 0x3e, 0x93, 0x4c, 0xf5, 0x55, 0x09, 0xed, 0xe3, 0xbd, 0x61, 0xb2, 0x21, 0x8a, - 0xdf, 0xdb, 0xaf, 0x9e, 0x8d, 0x73, 0x03, 0xc9, 0x42, 0x54, 0x95, 0xc8, 0x33, 0x50, 0x0a, 0x04, - 0x54, 0x85, 0xe8, 0x49, 0x47, 0x29, 0x51, 0x86, 0x1a, 0x4a, 0xbe, 0x60, 0x9c, 0x15, 0xc6, 0x4f, - 0x2b, 0x05, 0xd6, 0x61, 0xfe, 0x5f, 0x6f, 0x42, 0x29, 0x54, 0x59, 0xd7, 0xc5, 0x74, 0x7a, 0xfe, - 0x98, 0x91, 0x9f, 0xce, 0x26, 0xed, 0xa8, 0x14, 0xec, 0xe2, 0xfb, 0x74, 0x82, 0x76, 0x4d, 0x92, - 0xd8, 0xda, 0x32, 0x21, 0xee, 0xa7, 0x60, 0xd0, 0x2a, 0x41, 0x22, 0x98, 0x94, 0x4f, 0x2f, 0xcb, - 0xe3, 0xec, 0x5a, 0x4e, 0x21, 0x54, 0xd2, 0xc1, 0x9e, 0x1f, 0xf8, 0x95, 0x85, 0x4c, 0xb1, 0xb2, - 0xbf, 0x6f, 0x41, 0x45, 0x8e, 0x91, 0x87, 0x10, 0x02, 0x7b, 0x37, 0x19, 0x02, 0x7b, 0x35, 0x97, - 0x25, 0x7c, 0x48, 0xfc, 0xeb, 0x5d, 0x98, 0x32, 0xd3, 0x81, 0x92, 0x4f, 0x19, 0x5b, 0x90, 0x35, - 0x4a, 0x82, 0x3d, 0xb5, 0x49, 0xc5, 0xdb, 0x93, 0xfd, 0x5b, 0x65, 0xdd, 0x8a, 0xfc, 0xe0, 0x6c, - 0x8e, 0x7c, 0xeb, 0xd0, 0x91, 0x6f, 0x0e, 0xbc, 0xb1, 0xfc, 0x07, 0xde, 0xeb, 0x50, 0x52, 0xcb, - 0xa2, 0xd4, 0xa6, 0x9e, 0x32, 0x3d, 0xee, 0x99, 0x4a, 0xc6, 0x88, 0x19, 0xd3, 0x85, 0x1f, 0x80, - 0x63, 0xbb, 0xbd, 0x5a, 0xae, 0x35, 0x19, 0xf2, 0x16, 0x54, 0xee, 0xf9, 0xc1, 0x4e, 0xc7, 0x77, - 0xf8, 0x53, 0x17, 0x90, 0x87, 0x93, 0x87, 0xb6, 0xbd, 0x8b, 0xb0, 0xa7, 0x3b, 0x31, 0x7d, 0x34, - 0x99, 0x91, 0x1a, 0xcc, 0x74, 0x5d, 0x0f, 0xa9, 0xd3, 0xd2, 0x91, 0xae, 0xe3, 0x22, 0xcd, 0xbc, - 0xd2, 0xed, 0xd7, 0x92, 0x60, 0x4c, 0xe3, 0x73, 0xbb, 0x5c, 0x90, 0x30, 0x75, 0xc8, 0x5c, 0xd2, - 0xeb, 0xa3, 0x0f, 0xc6, 0xa4, 0xf9, 0x44, 0xc4, 0xfd, 0x24, 0xcb, 0x31, 0xc5, 0x9b, 0x7c, 0x1e, - 0x4a, 0xa1, 0x7a, 0xd4, 0xb4, 0x98, 0xe3, 0xa9, 0x47, 0x3f, 0x6c, 0xaa, 0xbb, 0x52, 0xbf, 0x6c, - 0xaa, 0x19, 0x92, 0x55, 0x38, 0xaf, 0x6c, 0x37, 0x89, 0xf7, 0x19, 0x27, 0xe2, 0xd4, 0x70, 0x98, - 0x01, 0xc7, 0xcc, 0x5a, 0x4c, 0xb7, 0xe5, 0x69, 0x76, 0xc5, 0xa5, 0xba, 0x71, 0x0f, 0xcd, 0xe7, - 0x5f, 0x0b, 0x25, 0xf4, 0xb0, 0x40, 0xee, 0xd2, 0x08, 0x81, 0xdc, 0x0d, 0xb8, 0x90, 0x06, 0xf1, - 0x9c, 0x7f, 0x3c, 0xcd, 0xa0, 0xb1, 0x85, 0xae, 0x67, 0x21, 0x61, 0x76, 0x5d, 0x72, 0x07, 0xca, - 0x01, 0xe5, 0xa7, 0xbc, 0x9a, 0xf2, 0x47, 0x3c, 0xb1, 0xe7, 0x35, 0x2a, 0x02, 0x18, 0xd3, 0x62, - 0xfd, 0xee, 0x24, 0x13, 0xbf, 0xbf, 0x9e, 0xe3, 0xab, 0xe7, 0xb2, 0xef, 0x87, 0xe4, 0xe2, 0xb4, - 0xff, 0xed, 0x0c, 0x9c, 0x49, 0x18, 0xa0, 0xc8, 0x53, 0x50, 0xe4, 0x49, 0x10, 0xf9, 0x6a, 0x55, - 0x8a, 0x57, 0x54, 0xd1, 0x38, 0x02, 0x46, 0x7e, 0xc9, 0x82, 0x99, 0x5e, 0xe2, 0xba, 0x49, 0x2d, - 0xe4, 0x23, 0xda, 0xb4, 0x93, 0x77, 0x58, 0xc6, 0x93, 0x29, 0x49, 0x66, 0x98, 0xe6, 0xce, 0xd6, - 0x03, 0x19, 0xbe, 0xd0, 0xa1, 0x01, 0xc7, 0x96, 0x8a, 0x9e, 0x26, 0xb1, 0x94, 0x04, 0x63, 0x1a, - 0x9f, 0xf5, 0x30, 0xff, 0xba, 0x51, 0x5e, 0xb6, 0xad, 0x29, 0x02, 0x18, 0xd3, 0x22, 0xaf, 0xc0, - 0xb4, 0xcc, 0xf7, 0xbd, 0xee, 0xb7, 0xae, 0x3b, 0xe1, 0xb6, 0x3c, 0xf2, 0xe9, 0x23, 0xea, 0x52, - 0x02, 0x8a, 0x29, 0x6c, 0xfe, 0x6d, 0x71, 0x52, 0x75, 0x4e, 0x60, 0x22, 0xf9, 0xa2, 0xcc, 0x52, - 0x12, 0x8c, 0x69, 0x7c, 0xf2, 0x9c, 0xb1, 0x0d, 0x09, 0x47, 0x17, 0xbd, 0x1a, 0x64, 0x6c, 0x45, - 0x35, 0x98, 0xe9, 0xf3, 0x13, 0x72, 0x4b, 0x01, 0xe5, 0x7c, 0xd4, 0x0c, 0x6f, 0x27, 0xc1, 0x98, - 0xc6, 0x27, 0x2f, 0xc3, 0x99, 0x80, 0x2d, 0xb6, 0x9a, 0x80, 0xf0, 0x7e, 0xd1, 0xce, 0x0d, 0x68, - 0x02, 0x31, 0x89, 0x4b, 0x5e, 0x85, 0xb3, 0x71, 0x7a, 0x5c, 0x45, 0x40, 0xb8, 0xc3, 0xe8, 0x5c, - 0x8d, 0xb5, 0x34, 0x02, 0x0e, 0xd6, 0x21, 0x7f, 0x03, 0x66, 0x8d, 0x96, 0x58, 0xf1, 0x5a, 0xf4, - 0xbe, 0x4c, 0x61, 0xca, 0x5f, 0x48, 0x5b, 0x4a, 0xc1, 0x70, 0x00, 0x9b, 0x7c, 0x02, 0xa6, 0x9b, - 0x7e, 0xa7, 0xc3, 0xd7, 0x38, 0xf1, 0x9a, 0x89, 0xc8, 0x55, 0x2a, 0xb2, 0xba, 0x26, 0x20, 0x98, - 0xc2, 0x24, 0x37, 0x80, 0xf8, 0x9b, 0x4c, 0xbd, 0xa2, 0xad, 0x57, 0xa9, 0x47, 0xa5, 0xc6, 0x71, - 0x26, 0x19, 0x3c, 0x75, 0x6b, 0x00, 0x03, 0x33, 0x6a, 0xf1, 0x54, 0x8f, 0x46, 0xb0, 0xf9, 0x74, - 0x1e, 0xcf, 0xb0, 0xa6, 0xed, 0x39, 0x47, 0x46, 0x9a, 0x07, 0x30, 0x21, 0x3c, 0x14, 0xf2, 0x49, - 0x5a, 0x6a, 0x3e, 0x6c, 0x10, 0xef, 0x11, 0xa2, 0x14, 0x25, 0x27, 0xf2, 0x73, 0x50, 0xde, 0x54, - 0xaf, 0xdc, 0xf0, 0x4c, 0xa5, 0x23, 0xef, 0x8b, 0xa9, 0x07, 0x9b, 0x62, 0x7b, 0x85, 0x06, 0x60, - 0xcc, 0x92, 0x3c, 0x0d, 0x95, 0xeb, 0xeb, 0x35, 0x3d, 0x0a, 0xcf, 0xf2, 0xde, 0x1f, 0x67, 0x55, - 0xd0, 0x04, 0xb0, 0x19, 0xa6, 0xd5, 0x37, 0x92, 0x74, 0x62, 0xc8, 0xd0, 0xc6, 0x18, 0x36, 0x77, - 0x59, 0xc1, 0xc6, 0xdc, 0xb9, 0x14, 0xb6, 0x2c, 0x47, 0x8d, 0x41, 0xde, 0x84, 0x8a, 0xdc, 0x2f, - 0xf8, 0xda, 0x74, 0xfe, 0xc1, 0x12, 0x19, 0x60, 0x4c, 0x02, 0x4d, 0x7a, 0xfc, 0x3a, 0x9d, 0x3f, - 0xfe, 0x41, 0xaf, 0xf5, 0x3b, 0x9d, 0xb9, 0x0b, 0x7c, 0xdd, 0x8c, 0xaf, 0xd3, 0x63, 0x10, 0x9a, - 0x78, 0xe4, 0x79, 0xe5, 0x7a, 0xf8, 0x68, 0xc2, 0xbf, 0x40, 0xbb, 0x1e, 0x6a, 0xa5, 0x7b, 0x48, - 0xac, 0xd3, 0x63, 0x47, 0xf8, 0xfc, 0x6d, 0xc2, 0xbc, 0xd2, 0xf8, 0x06, 0x27, 0xc9, 0xdc, 0x5c, - 0xc2, 0x76, 0x34, 0x7f, 0x67, 0x28, 0x26, 0x1e, 0x42, 0x85, 0x6c, 0x42, 0xc1, 0xe9, 0x6c, 0xce, - 0x3d, 0x9e, 0x87, 0xea, 0x5a, 0x5b, 0xad, 0xcb, 0x11, 0xc5, 0xfd, 0x93, 0x6b, 0xab, 0x75, 0x64, - 0xc4, 0x89, 0x0b, 0xe3, 0x4e, 0x67, 0x33, 0x9c, 0x9b, 0xe7, 0x73, 0x36, 0x37, 0x26, 0xb1, 0xf1, - 0x60, 0xb5, 0x1e, 0x22, 0x67, 0x61, 0x7f, 0x71, 0x4c, 0xdf, 0x12, 0xe9, 0xbc, 0xf1, 0x6f, 0x9b, - 0x13, 0x48, 0x1c, 0x77, 0x6e, 0xe5, 0x36, 0x81, 0xa4, 0x7a, 0x71, 0x66, 0xe8, 0xf4, 0xe9, 0xe9, - 0x25, 0x23, 0x97, 0x84, 0x73, 0xc9, 0x9c, 0xf8, 0xe2, 0xf4, 0x9c, 0x5c, 0x30, 0xec, 0x2f, 0x55, - 0xb4, 0x15, 0x34, 0xe5, 0xb6, 0x17, 0x40, 0xd1, 0x0d, 0x23, 0xd7, 0xcf, 0x31, 0xbe, 0x3f, 0x95, - 0x4c, 0x9e, 0x87, 0x0f, 0x71, 0x00, 0x0a, 0x56, 0x8c, 0xa7, 0xd7, 0x76, 0xbd, 0xfb, 0xf2, 0xf3, - 0x5f, 0xcf, 0xdd, 0xe9, 0x4c, 0xf0, 0xe4, 0x00, 0x14, 0xac, 0xc8, 0x5d, 0x31, 0xa8, 0x0b, 0x79, - 0xf4, 0x75, 0x6d, 0xb5, 0x9e, 0xe2, 0x97, 0x1c, 0xdc, 0x77, 0xa1, 0x10, 0x76, 0x5d, 0xa9, 0x2e, - 0x8d, 0xc8, 0xab, 0xb1, 0xb6, 0x92, 0xc5, 0xab, 0xb1, 0xb6, 0x82, 0x8c, 0x09, 0xbf, 0xea, 0x77, - 0xba, 0x9b, 0x4e, 0x18, 0x3a, 0x2d, 0x6d, 0x9d, 0x19, 0xf1, 0xaa, 0xbf, 0xa6, 0xe9, 0xa5, 0x58, - 0xf3, 0xab, 0xfe, 0x18, 0x8a, 0x06, 0x67, 0xf2, 0x16, 0x4c, 0x3a, 0xe2, 0x15, 0x4e, 0x19, 0x4c, - 0x91, 0xcf, 0xd3, 0xb2, 0x29, 0x09, 0xb8, 0x99, 0x46, 0x82, 0x50, 0x31, 0x64, 0xbc, 0xa3, 0xc0, - 0xa1, 0x5b, 0xee, 0x8e, 0x34, 0x0e, 0x35, 0x46, 0x7e, 0x27, 0x86, 0x11, 0xcb, 0xe2, 0x2d, 0x41, - 0xa8, 0x18, 0x92, 0x5f, 0xb0, 0xe0, 0x4c, 0xd7, 0xf1, 0x1c, 0x1d, 0x22, 0x9b, 0x4f, 0x20, 0xb5, - 0x19, 0x74, 0x1b, 0x6b, 0x88, 0x6b, 0x26, 0x23, 0x4c, 0xf2, 0x25, 0xbb, 0x30, 0xe1, 0xf0, 0xf7, - 0x81, 0xe5, 0x51, 0x0c, 0xf3, 0x78, 0x6b, 0x38, 0xd5, 0x06, 0x7c, 0x71, 0x91, 0xaf, 0x10, 0x4b, - 0x6e, 0xe4, 0x37, 0x2c, 0x98, 0x14, 0x7e, 0xfe, 0x4c, 0x21, 0x65, 0xdf, 0xfe, 0xd9, 0x53, 0x78, - 0x94, 0x42, 0xc6, 0x20, 0x48, 0xe7, 0xac, 0x0f, 0x6b, 0x27, 0x66, 0x51, 0x7a, 0x68, 0x14, 0x82, - 0x92, 0x8e, 0xa9, 0xbe, 0x5d, 0xe7, 0x7e, 0xe2, 0x15, 0x20, 0x53, 0xf5, 0x5d, 0x4b, 0xc1, 0x70, - 0x00, 0x7b, 0xfe, 0x13, 0x30, 0x65, 0xca, 0x71, 0xa2, 0x48, 0x86, 0x1f, 0x16, 0x00, 0x78, 0x57, - 0x89, 0xb4, 0x3a, 0x5d, 0x9e, 0x83, 0x7b, 0xdb, 0x6f, 0xe5, 0xf4, 0x1a, 0xa9, 0x91, 0x1d, 0x07, - 0x64, 0xc2, 0xed, 0x6d, 0xbf, 0x85, 0x92, 0x09, 0x69, 0xc3, 0x78, 0xcf, 0x89, 0xb6, 0xf3, 0x4f, - 0xc5, 0x53, 0x12, 0xf1, 0xe5, 0xd1, 0x36, 0x72, 0x06, 0xe4, 0x1d, 0x2b, 0xf6, 0x7b, 0x2a, 0xe4, - 0x91, 0x46, 0x38, 0x6e, 0xb3, 0x05, 0xe9, 0xe9, 0x94, 0xca, 0xa6, 0x9b, 0xf6, 0x7f, 0x9a, 0x7f, - 0xd7, 0x82, 0x29, 0x13, 0x35, 0xa3, 0x9b, 0x7e, 0xd6, 0xec, 0xa6, 0x3c, 0xdb, 0xc3, 0xec, 0xf1, - 0xff, 0x66, 0x01, 0x60, 0xdf, 0x6b, 0xf4, 0xbb, 0x5d, 0xa6, 0xb6, 0xeb, 0x80, 0x0d, 0xeb, 0xd8, - 0x01, 0x1b, 0x63, 0x27, 0x0c, 0xd8, 0x28, 0x9c, 0x28, 0x60, 0x63, 0xfc, 0xe4, 0x01, 0x1b, 0xc5, - 0xe1, 0x01, 0x1b, 0xf6, 0x37, 0x2c, 0x38, 0x3b, 0xb0, 0x5f, 0x31, 0x4d, 0x3a, 0xf0, 0xfd, 0x68, - 0x88, 0x3f, 0x2b, 0xc6, 0x20, 0x34, 0xf1, 0xc8, 0x32, 0xcc, 0xca, 0x17, 0x67, 0x1a, 0xbd, 0x8e, - 0x9b, 0x99, 0x26, 0x69, 0x23, 0x05, 0xc7, 0x81, 0x1a, 0xf6, 0xbf, 0xb2, 0xa0, 0x62, 0x24, 0x57, - 0xe0, 0x3e, 0x67, 0xfc, 0xc6, 0x2b, 0xed, 0x73, 0xc6, 0xaf, 0xba, 0x04, 0x4c, 0x5c, 0x43, 0xb7, - 0x8d, 0xf7, 0x08, 0xe2, 0x6b, 0x68, 0x56, 0x8a, 0x12, 0x2a, 0x32, 0xcd, 0x4b, 0xe7, 0xb3, 0x82, - 0x99, 0x69, 0x9e, 0xf6, 0x84, 0xab, 0x59, 0xec, 0xe2, 0x36, 0x7e, 0xb4, 0x8b, 0x5b, 0x31, 0xdb, - 0xc5, 0xcd, 0xbe, 0x05, 0x53, 0xc2, 0x57, 0xfb, 0x35, 0xba, 0x77, 0xec, 0xe7, 0x7c, 0xd9, 0x68, - 0x4f, 0xf9, 0xcc, 0xb1, 0xea, 0xac, 0xdc, 0xfe, 0x27, 0x16, 0xa4, 0x1e, 0xa0, 0x32, 0x6e, 0x60, - 0xac, 0xa1, 0x37, 0x30, 0xa6, 0xd5, 0x7e, 0xec, 0x50, 0xab, 0xfd, 0x0d, 0x20, 0x5d, 0x36, 0x15, - 0x92, 0x0b, 0x6d, 0x21, 0xf9, 0x2a, 0xc8, 0xda, 0x00, 0x06, 0x66, 0xd4, 0xb2, 0xff, 0xb1, 0x10, - 0xd6, 0x7c, 0x92, 0xea, 0xe8, 0x06, 0xe8, 0x43, 0x91, 0x93, 0x92, 0xf6, 0xb7, 0x11, 0x6d, 0xd7, - 0x83, 0x29, 0xd1, 0xe2, 0x8e, 0x94, 0x53, 0x9e, 0x73, 0xb3, 0xff, 0x50, 0xc8, 0x6a, 0xbc, 0x59, - 0x75, 0x0c, 0x59, 0xbb, 0x49, 0x59, 0xaf, 0xe7, 0xb5, 0x56, 0x66, 0xcb, 0x48, 0x16, 0x00, 0x7a, - 0x34, 0x68, 0x52, 0x2f, 0x52, 0x21, 0x66, 0x45, 0x19, 0xec, 0xac, 0x4b, 0xd1, 0xc0, 0xb0, 0xbf, - 0xce, 0x26, 0x50, 0xfc, 0xd0, 0x35, 0x79, 0x26, 0xed, 0x08, 0x9c, 0x9e, 0x1c, 0xda, 0x0f, 0xd8, - 0x08, 0x3c, 0x1a, 0x3b, 0x22, 0xf0, 0xe8, 0x59, 0x98, 0x0c, 0xfc, 0x0e, 0xad, 0x05, 0x5e, 0xda, - 0x47, 0x07, 0x59, 0x31, 0xde, 0x44, 0x05, 0xb7, 0x7f, 0xcd, 0x82, 0xd9, 0x74, 0x64, 0x64, 0xee, - 0xde, 0xc9, 0x66, 0xfa, 0x86, 0xc2, 0xc9, 0xd3, 0x37, 0xd8, 0xef, 0x30, 0x21, 0x23, 0xb7, 0xb9, - 0xe3, 0x7a, 0x22, 0xe3, 0x01, 0x6b, 0xb9, 0x67, 0x61, 0x92, 0xca, 0x07, 0x7b, 0x85, 0x19, 0x59, - 0x0b, 0xa9, 0xde, 0xe9, 0x55, 0x70, 0x52, 0x83, 0x19, 0x75, 0x79, 0xa6, 0x6c, 0xff, 0x22, 0x53, - 0x8b, 0xb6, 0x35, 0x2e, 0x27, 0xc1, 0x98, 0xc6, 0xb7, 0xbf, 0x00, 0x15, 0x63, 0x53, 0xe2, 0xeb, - 0xf7, 0x7d, 0xa7, 0x39, 0xe0, 0x6b, 0x7b, 0x95, 0x15, 0xa2, 0x80, 0xf1, 0x2b, 0x0a, 0x11, 0xb8, - 0x95, 0x5a, 0xf7, 0x64, 0xb8, 0x96, 0x84, 0x32, 0x62, 0x01, 0x6d, 0xd3, 0xfb, 0xea, 0xb9, 0x08, - 0x45, 0x0c, 0x59, 0x21, 0x0a, 0x98, 0xfd, 0x1c, 0x94, 0x54, 0x3e, 0x2d, 0x9e, 0x94, 0x46, 0x99, - 0xcf, 0xcd, 0xa4, 0x34, 0x7e, 0x10, 0x21, 0x87, 0xd8, 0x6f, 0x40, 0x49, 0xa5, 0xfd, 0x3a, 0x1a, - 0x9b, 0x2d, 0x45, 0xa1, 0xe7, 0x5e, 0xf7, 0xc3, 0x48, 0xe5, 0x2a, 0x13, 0x37, 0x7c, 0x37, 0x57, - 0x78, 0x19, 0x6a, 0xa8, 0xfd, 0xe7, 0x16, 0x54, 0x36, 0x36, 0x56, 0xf5, 0xc1, 0x1f, 0xe1, 0xd1, - 0x50, 0xb4, 0x50, 0x6d, 0x2b, 0xa2, 0xa6, 0x2b, 0x81, 0x58, 0xf8, 0xe6, 0x0f, 0xf6, 0xab, 0x8f, - 0x36, 0x32, 0x31, 0x70, 0x48, 0x4d, 0xb2, 0x02, 0xe7, 0x4c, 0x88, 0xcc, 0x21, 0x21, 0xd7, 0x48, - 0xfe, 0xc2, 0x73, 0x63, 0x10, 0x8c, 0x59, 0x75, 0xd2, 0xa4, 0xe4, 0x76, 0x6f, 0x3e, 0x16, 0xdd, - 0x18, 0x04, 0x63, 0x56, 0x1d, 0xfb, 0x79, 0x98, 0x49, 0xdd, 0x71, 0x1f, 0x23, 0x77, 0xcf, 0xef, - 0x15, 0x60, 0xca, 0xbc, 0xea, 0x3c, 0xc6, 0xfa, 0x75, 0xfc, 0x6d, 0x21, 0xe3, 0x7a, 0xb2, 0x70, - 0xc2, 0xeb, 0x49, 0xf3, 0x3e, 0x78, 0xfc, 0x74, 0xef, 0x83, 0x8b, 0xf9, 0xdc, 0x07, 0x1b, 0x7e, - 0x0b, 0x13, 0x0f, 0xcf, 0x6f, 0xe1, 0x77, 0x8b, 0x30, 0x9d, 0x4c, 0x06, 0x7b, 0x8c, 0x9e, 0x7c, - 0x6e, 0xa0, 0x27, 0x4f, 0x78, 0x1f, 0x52, 0x18, 0xf5, 0x3e, 0x64, 0x7c, 0xd4, 0xfb, 0x90, 0xe2, - 0x03, 0xdc, 0x87, 0x0c, 0xde, 0x66, 0x4c, 0x1c, 0xfb, 0x36, 0xe3, 0x93, 0xda, 0xc5, 0x73, 0x32, - 0xe1, 0x02, 0x14, 0xbb, 0x78, 0x92, 0x64, 0x37, 0x2c, 0xf9, 0xad, 0x4c, 0xd7, 0xd4, 0xd2, 0x11, - 0x76, 0xdf, 0x20, 0xd3, 0x23, 0xf3, 0xe4, 0x57, 0xae, 0x8f, 0x9e, 0xc0, 0x1b, 0xf3, 0x45, 0xa8, - 0xc8, 0xf1, 0xc4, 0x95, 0x6f, 0x48, 0x2a, 0xee, 0x8d, 0x18, 0x84, 0x26, 0x1e, 0x1b, 0x18, 0xbd, - 0x78, 0x82, 0xf0, 0x9b, 0xb9, 0x4a, 0xf2, 0x66, 0x6e, 0x3d, 0x09, 0xc6, 0x34, 0xbe, 0xfd, 0x79, - 0xb8, 0x90, 0x69, 0x82, 0xe1, 0xe6, 0x6f, 0xae, 0x17, 0xd2, 0x96, 0x44, 0x30, 0xc4, 0x48, 0xbd, - 0x11, 0x33, 0x7f, 0x67, 0x28, 0x26, 0x1e, 0x42, 0xc5, 0xfe, 0xed, 0x02, 0x4c, 0x27, 0x1f, 0x0a, - 0x26, 0xf7, 0xb4, 0xc1, 0x36, 0x17, 0x5b, 0xb1, 0x20, 0x6b, 0x24, 0x18, 0x1d, 0x7a, 0xd1, 0x73, - 0x8f, 0x8f, 0xaf, 0x4d, 0x9d, 0xed, 0xf4, 0xf4, 0x18, 0xcb, 0x1b, 0x16, 0xc9, 0x8e, 0xbf, 0x05, - 0x1c, 0xc7, 0x22, 0xcb, 0x73, 0x7c, 0xee, 0xdc, 0xe3, 0xb0, 0x51, 0xcd, 0x0a, 0x0d, 0xb6, 0x6c, - 0x6f, 0xd9, 0xa5, 0x81, 0xbb, 0xe5, 0xd2, 0x96, 0x4c, 0x3e, 0xcf, 0x57, 0xee, 0x37, 0x64, 0x19, - 0x6a, 0xa8, 0xfd, 0xce, 0x18, 0x94, 0x79, 0xea, 0xb4, 0x6b, 0x81, 0xdf, 0xe5, 0xaf, 0x69, 0x86, - 0xc6, 0x99, 0x49, 0x76, 0xdb, 0x8d, 0x51, 0x9f, 0xac, 0x8d, 0x29, 0x4a, 0x77, 0x77, 0xa3, 0x04, - 0x13, 0x1c, 0x49, 0x0f, 0x4a, 0x5b, 0x32, 0xd5, 0xb3, 0xec, 0xbb, 0x11, 0xd3, 0x95, 0xaa, 0xc4, - 0xd1, 0xa2, 0x09, 0xd4, 0x3f, 0xd4, 0x5c, 0x6c, 0x07, 0x66, 0x52, 0xb9, 0x6f, 0x72, 0x4f, 0x10, - 0xfd, 0x3f, 0xc7, 0xa1, 0xac, 0xa3, 0xd0, 0xc8, 0xc7, 0x13, 0x06, 0xac, 0x72, 0xfd, 0x43, 0xc6, - 0x53, 0x6f, 0xdb, 0x7e, 0xeb, 0xbd, 0xfd, 0xea, 0x8c, 0x46, 0x4e, 0x19, 0xa3, 0x2e, 0x42, 0xa1, - 0x1f, 0x74, 0xd2, 0x27, 0xd4, 0xdb, 0xb8, 0x8a, 0xac, 0xdc, 0x8c, 0x9c, 0x2b, 0x3c, 0xdc, 0xc8, - 0xb9, 0xcb, 0x30, 0xbe, 0xe9, 0xb7, 0xf6, 0xd2, 0x4f, 0xc3, 0xd5, 0xfd, 0xd6, 0x1e, 0x72, 0x08, - 0x79, 0x05, 0xa6, 0x65, 0x38, 0xa0, 0x52, 0x62, 0x8a, 0x5c, 0x4f, 0xd5, 0x8e, 0x0b, 0x1b, 0x09, - 0x28, 0xa6, 0xb0, 0xd9, 0x2e, 0x7b, 0x37, 0xf4, 0x3d, 0x9e, 0xf6, 0x7b, 0x22, 0x79, 0xcb, 0x79, - 0xa3, 0x71, 0xeb, 0x26, 0x37, 0xa4, 0x69, 0x8c, 0x44, 0xc4, 0xe1, 0xe4, 0x91, 0x11, 0x87, 0xcb, - 0x82, 0x36, 0x93, 0x96, 0xef, 0x28, 0x53, 0xf5, 0x67, 0x14, 0x5d, 0x56, 0xf6, 0xde, 0xfe, 0x21, - 0x46, 0x52, 0x5d, 0x33, 0x2b, 0x36, 0xb3, 0xfc, 0xfe, 0xc5, 0x66, 0xda, 0xb7, 0x61, 0x26, 0xd5, - 0x7f, 0xca, 0xc0, 0x61, 0x65, 0x1b, 0x38, 0x8e, 0xf7, 0xb8, 0xdc, 0x3f, 0xb3, 0xe0, 0xec, 0xc0, - 0x8a, 0x74, 0xdc, 0x20, 0xd9, 0xf4, 0xde, 0x38, 0xf6, 0xe0, 0x7b, 0x63, 0xe1, 0x64, 0x7b, 0x63, - 0x7d, 0xf3, 0x3b, 0x3f, 0xb8, 0xf4, 0xc8, 0xf7, 0x7e, 0x70, 0xe9, 0x91, 0x3f, 0xfa, 0xc1, 0xa5, - 0x47, 0xde, 0x39, 0xb8, 0x64, 0x7d, 0xe7, 0xe0, 0x92, 0xf5, 0xbd, 0x83, 0x4b, 0xd6, 0x1f, 0x1d, - 0x5c, 0xb2, 0xfe, 0xf3, 0xc1, 0x25, 0xeb, 0x1b, 0x7f, 0x7a, 0xe9, 0x91, 0x4f, 0x7d, 0x32, 0xee, - 0xa9, 0x45, 0xd5, 0x53, 0xfc, 0xc7, 0x47, 0x54, 0xbf, 0x2c, 0xf6, 0x76, 0xda, 0x8b, 0xac, 0xa7, - 0x16, 0x75, 0x89, 0xea, 0xa9, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xa4, 0xe6, 0x16, 0xde, 0x1b, - 0xa9, 0x00, 0x00, + 0x75, 0x98, 0x1e, 0x87, 0x43, 0xce, 0x9c, 0xe1, 0x92, 0xdc, 0xbb, 0xbb, 0x12, 0x45, 0x69, 0x97, + 0xeb, 0xa7, 0x54, 0x5d, 0xc5, 0x32, 0x69, 0xaf, 0xa4, 0x54, 0xb6, 0x5c, 0xb5, 0x33, 0xe4, 0xae, + 0x96, 0x2b, 0x72, 0x97, 0x3a, 0xc3, 0xd5, 0xc6, 0x1f, 0x4a, 0xfc, 0x38, 0x73, 0x39, 0x7c, 0xcb, + 0x99, 0xf7, 0xc6, 0xef, 0xbd, 0xe1, 0x2e, 0x65, 0x21, 0x96, 0x6d, 0x28, 0x71, 0x5c, 0x1b, 0x71, + 0x93, 0x18, 0x45, 0x3f, 0x50, 0xb8, 0x41, 0x8a, 0xb4, 0x4d, 0x7f, 0x14, 0x81, 0x8b, 0xf6, 0x47, + 0x80, 0x16, 0x75, 0x53, 0xd8, 0x40, 0x5d, 0x38, 0x3f, 0x5a, 0xa7, 0x05, 0xc2, 0xd4, 0x4c, 0xff, + 0x34, 0x68, 0x61, 0xa4, 0x70, 0x11, 0x54, 0x3f, 0x8a, 0xe2, 0x7e, 0xbe, 0xfb, 0xde, 0xbc, 0xe1, + 0xd7, 0x3c, 0xae, 0x94, 0xc6, 0xff, 0x66, 0xee, 0x39, 0xf7, 0x9c, 0xf3, 0xee, 0xe7, 0xb9, 0xe7, + 0x9e, 0x73, 0x2e, 0xac, 0xb4, 0xdc, 0x68, 0xab, 0xb7, 0x31, 0xdf, 0xf0, 0x3b, 0x0b, 0x4e, 0xd0, + 0xf2, 0xbb, 0x81, 0x7f, 0x8f, 0xff, 0xf8, 0x50, 0xe0, 0xb7, 0xdb, 0x7e, 0x2f, 0x0a, 0x17, 0xba, + 0xdb, 0xad, 0x05, 0xa7, 0xeb, 0x86, 0x0b, 0xba, 0x64, 0xe7, 0x23, 0x4e, 0xbb, 0xbb, 0xe5, 0x7c, + 0x64, 0xa1, 0x45, 0x3d, 0x1a, 0x38, 0x11, 0x6d, 0xce, 0x77, 0x03, 0x3f, 0xf2, 0xc9, 0xc7, 0x63, + 0x6a, 0xf3, 0x8a, 0x1a, 0xff, 0xf1, 0xf3, 0xaa, 0xee, 0x7c, 0x77, 0xbb, 0x35, 0xcf, 0xa8, 0xcd, + 0xeb, 0x12, 0x45, 0x6d, 0xf6, 0x43, 0x86, 0x2c, 0x2d, 0xbf, 0xe5, 0x2f, 0x70, 0xa2, 0x1b, 0xbd, + 0x4d, 0xfe, 0x8f, 0xff, 0xe1, 0xbf, 0x04, 0xb3, 0xd9, 0xa7, 0xb6, 0x5f, 0x0c, 0xe7, 0x5d, 0x9f, + 0xc9, 0xb6, 0xb0, 0xe1, 0x44, 0x8d, 0xad, 0x85, 0x9d, 0x3e, 0x89, 0x66, 0x6d, 0x03, 0xa9, 0xe1, + 0x07, 0x34, 0x0b, 0xe7, 0xf9, 0x18, 0xa7, 0xe3, 0x34, 0xb6, 0x5c, 0x8f, 0x06, 0xbb, 0xf1, 0x57, + 0x77, 0x68, 0xe4, 0x64, 0xd5, 0x5a, 0x18, 0x54, 0x2b, 0xe8, 0x79, 0x91, 0xdb, 0xa1, 0x7d, 0x15, + 0x7e, 0xe6, 0xb0, 0x0a, 0x61, 0x63, 0x8b, 0x76, 0x9c, 0xbe, 0x7a, 0xcf, 0x0d, 0xaa, 0xd7, 0x8b, + 0xdc, 0xf6, 0x82, 0xeb, 0x45, 0x61, 0x14, 0xa4, 0x2b, 0xd9, 0x3f, 0x2a, 0x40, 0xb9, 0xba, 0x52, + 0xab, 0x47, 0x4e, 0xd4, 0x0b, 0xc9, 0x2f, 0x5a, 0x30, 0xd1, 0xf6, 0x9d, 0x66, 0xcd, 0x69, 0x3b, + 0x5e, 0x83, 0x06, 0x33, 0xd6, 0x65, 0xeb, 0x4a, 0xe5, 0xea, 0xca, 0xfc, 0x30, 0xfd, 0x35, 0x5f, + 0xbd, 0x1f, 0x22, 0x0d, 0xfd, 0x5e, 0xd0, 0xa0, 0x48, 0x37, 0x6b, 0xe7, 0xbf, 0xb3, 0x37, 0xf7, + 0xc8, 0xfe, 0xde, 0xdc, 0xc4, 0x8a, 0xc1, 0x09, 0x13, 0x7c, 0xc9, 0x37, 0x2c, 0x38, 0xdb, 0x70, + 0x3c, 0x27, 0xd8, 0x5d, 0x77, 0x82, 0x16, 0x8d, 0x5e, 0x09, 0xfc, 0x5e, 0x77, 0x66, 0xe4, 0x14, + 0xa4, 0x79, 0x5c, 0x4a, 0x73, 0x76, 0x31, 0xcd, 0x0e, 0xfb, 0x25, 0xe0, 0x72, 0x85, 0x91, 0xb3, + 0xd1, 0xa6, 0xa6, 0x5c, 0x85, 0xd3, 0x94, 0xab, 0x9e, 0x66, 0x87, 0xfd, 0x12, 0x90, 0x67, 0x60, + 0xdc, 0xf5, 0x5a, 0x01, 0x0d, 0xc3, 0x99, 0xd1, 0xcb, 0xd6, 0x95, 0x72, 0x6d, 0x4a, 0x56, 0x1f, + 0x5f, 0x16, 0xc5, 0xa8, 0xe0, 0xf6, 0xef, 0x14, 0xe0, 0x6c, 0x75, 0xa5, 0xb6, 0x1e, 0x38, 0x9b, + 0x9b, 0x6e, 0x03, 0xfd, 0x5e, 0xe4, 0x7a, 0x2d, 0x93, 0x80, 0x75, 0x30, 0x01, 0xf2, 0x02, 0x54, + 0x42, 0x1a, 0xec, 0xb8, 0x0d, 0xba, 0xe6, 0x07, 0x11, 0xef, 0x94, 0x62, 0xed, 0x9c, 0x44, 0xaf, + 0xd4, 0x63, 0x10, 0x9a, 0x78, 0xac, 0x5a, 0xe0, 0xfb, 0x91, 0x84, 0xf3, 0x36, 0x2b, 0xc7, 0xd5, + 0x30, 0x06, 0xa1, 0x89, 0x47, 0x96, 0x60, 0xda, 0xf1, 0x3c, 0x3f, 0x72, 0x22, 0xd7, 0xf7, 0xd6, + 0x02, 0xba, 0xe9, 0x3e, 0x90, 0x9f, 0x38, 0x23, 0xeb, 0x4e, 0x57, 0x53, 0x70, 0xec, 0xab, 0x41, + 0xbe, 0x6e, 0xc1, 0x74, 0x18, 0xb9, 0x8d, 0x6d, 0xd7, 0xa3, 0x61, 0xb8, 0xe8, 0x7b, 0x9b, 0x6e, + 0x6b, 0xa6, 0xc8, 0xbb, 0xed, 0xd6, 0x70, 0xdd, 0x56, 0x4f, 0x51, 0xad, 0x9d, 0x67, 0x22, 0xa5, + 0x4b, 0xb1, 0x8f, 0x3b, 0xf9, 0x20, 0x94, 0x65, 0x8b, 0xd2, 0x70, 0x66, 0xec, 0x72, 0xe1, 0x4a, + 0xb9, 0x76, 0x66, 0x7f, 0x6f, 0xae, 0xbc, 0xac, 0x0a, 0x31, 0x86, 0xdb, 0x4b, 0x30, 0x53, 0xed, + 0x6c, 0x38, 0x61, 0xe8, 0x34, 0xfd, 0x20, 0xd5, 0x75, 0x57, 0xa0, 0xd4, 0x71, 0xba, 0x5d, 0xd7, + 0x6b, 0xb1, 0xbe, 0x63, 0x74, 0x26, 0xf6, 0xf7, 0xe6, 0x4a, 0xab, 0xb2, 0x0c, 0x35, 0xd4, 0xfe, + 0xcf, 0x23, 0x50, 0xa9, 0x7a, 0x4e, 0x7b, 0x37, 0x74, 0x43, 0xec, 0x79, 0xe4, 0x33, 0x50, 0x62, + 0xab, 0x56, 0xd3, 0x89, 0x1c, 0x39, 0xd3, 0x3f, 0x3c, 0x2f, 0x16, 0x91, 0x79, 0x73, 0x11, 0x89, + 0x3f, 0x9f, 0x61, 0xcf, 0xef, 0x7c, 0x64, 0xfe, 0xf6, 0xc6, 0x3d, 0xda, 0x88, 0x56, 0x69, 0xe4, + 0xd4, 0x88, 0xec, 0x05, 0x88, 0xcb, 0x50, 0x53, 0x25, 0x3e, 0x8c, 0x86, 0x5d, 0xda, 0x90, 0x33, + 0x77, 0x75, 0xc8, 0x19, 0x12, 0x8b, 0x5e, 0xef, 0xd2, 0x46, 0x6d, 0x42, 0xb2, 0x1e, 0x65, 0xff, + 0x90, 0x33, 0x22, 0xf7, 0x61, 0x2c, 0xe4, 0x6b, 0x99, 0x9c, 0x94, 0xb7, 0xf3, 0x63, 0xc9, 0xc9, + 0xd6, 0x26, 0x25, 0xd3, 0x31, 0xf1, 0x1f, 0x25, 0x3b, 0xfb, 0xbf, 0x58, 0x70, 0xce, 0xc0, 0xae, + 0x06, 0xad, 0x5e, 0x87, 0x7a, 0x11, 0xb9, 0x0c, 0xa3, 0x9e, 0xd3, 0xa1, 0x72, 0x56, 0x69, 0x91, + 0x6f, 0x39, 0x1d, 0x8a, 0x1c, 0x42, 0x9e, 0x82, 0xe2, 0x8e, 0xd3, 0xee, 0x51, 0xde, 0x48, 0xe5, + 0xda, 0x19, 0x89, 0x52, 0x7c, 0x9d, 0x15, 0xa2, 0x80, 0x91, 0xb7, 0xa0, 0xcc, 0x7f, 0x5c, 0x0f, + 0xfc, 0x4e, 0x4e, 0x9f, 0x26, 0x25, 0x7c, 0x5d, 0x91, 0x15, 0xc3, 0x4f, 0xff, 0xc5, 0x98, 0xa1, + 0xfd, 0x47, 0x16, 0x4c, 0x19, 0x1f, 0xb7, 0xe2, 0x86, 0x11, 0xf9, 0x74, 0xdf, 0xe0, 0x99, 0x3f, + 0xda, 0xe0, 0x61, 0xb5, 0xf9, 0xd0, 0x99, 0x96, 0x5f, 0x5a, 0x52, 0x25, 0xc6, 0xc0, 0xf1, 0xa0, + 0xe8, 0x46, 0xb4, 0x13, 0xce, 0x8c, 0x5c, 0x2e, 0x5c, 0xa9, 0x5c, 0x5d, 0xce, 0xad, 0x1b, 0xe3, + 0xf6, 0x5d, 0x66, 0xf4, 0x51, 0xb0, 0xb1, 0xbf, 0x55, 0x48, 0x74, 0xdf, 0xaa, 0x92, 0xe3, 0x1d, + 0x0b, 0xc6, 0xda, 0xce, 0x06, 0x6d, 0x8b, 0xb9, 0x55, 0xb9, 0xfa, 0x46, 0x6e, 0x92, 0x28, 0x1e, + 0xf3, 0x2b, 0x9c, 0xfe, 0x35, 0x2f, 0x0a, 0x76, 0xe3, 0xe1, 0x25, 0x0a, 0x51, 0x32, 0x27, 0x7f, + 0xdb, 0x82, 0x4a, 0xbc, 0xaa, 0xa9, 0x66, 0xd9, 0xc8, 0x5f, 0x98, 0x78, 0x31, 0x95, 0x12, 0xe9, + 0x25, 0xda, 0x80, 0xa0, 0x29, 0xcb, 0xec, 0x47, 0xa1, 0x62, 0x7c, 0x02, 0x99, 0x86, 0xc2, 0x36, + 0xdd, 0x15, 0x03, 0x1e, 0xd9, 0x4f, 0x72, 0x3e, 0x31, 0xc2, 0xe5, 0x90, 0xfe, 0xd8, 0xc8, 0x8b, + 0xd6, 0xec, 0xcb, 0x30, 0x9d, 0x66, 0x78, 0x9c, 0xfa, 0xf6, 0x3f, 0x2b, 0x26, 0x06, 0x26, 0x5b, + 0x08, 0x88, 0x0f, 0xe3, 0x1d, 0x1a, 0x05, 0x6e, 0x43, 0x75, 0xd9, 0xd2, 0x70, 0xad, 0xb4, 0xca, + 0x89, 0xc5, 0x1b, 0xa2, 0xf8, 0x1f, 0xa2, 0xe2, 0x42, 0xb6, 0x60, 0xd4, 0x09, 0x5a, 0xaa, 0x4f, + 0xae, 0xe7, 0x33, 0x2d, 0xe3, 0xa5, 0xa2, 0x1a, 0xb4, 0x42, 0xe4, 0x1c, 0xc8, 0x02, 0x94, 0x23, + 0x1a, 0x74, 0x5c, 0xcf, 0x89, 0xc4, 0x0e, 0x5a, 0xaa, 0x9d, 0x95, 0x68, 0xe5, 0x75, 0x05, 0xc0, + 0x18, 0x87, 0xb4, 0x61, 0xac, 0x19, 0xec, 0x62, 0xcf, 0x9b, 0x19, 0xcd, 0xa3, 0x29, 0x96, 0x38, + 0xad, 0x78, 0x90, 0x8a, 0xff, 0x28, 0x79, 0x90, 0xdf, 0xb4, 0xe0, 0x7c, 0x87, 0x3a, 0x61, 0x2f, + 0xa0, 0xec, 0x13, 0x90, 0x46, 0xd4, 0x63, 0x1d, 0x3b, 0x53, 0xe4, 0xcc, 0x71, 0xd8, 0x7e, 0xe8, + 0xa7, 0x5c, 0x7b, 0x52, 0x8a, 0x72, 0x3e, 0x0b, 0x8a, 0x99, 0xd2, 0x90, 0xb7, 0xa0, 0x12, 0x45, + 0xed, 0x7a, 0xc4, 0xf4, 0xe0, 0xd6, 0xee, 0xcc, 0x18, 0x5f, 0xbc, 0x86, 0x5c, 0x61, 0xd6, 0xd7, + 0x57, 0x14, 0xc1, 0xda, 0x14, 0x9b, 0x2d, 0x46, 0x01, 0x9a, 0xec, 0xec, 0x7f, 0x59, 0x84, 0xb3, + 0x7d, 0xdb, 0x0a, 0x79, 0x1e, 0x8a, 0xdd, 0x2d, 0x27, 0x54, 0xfb, 0xc4, 0x25, 0xb5, 0x48, 0xad, + 0xb1, 0xc2, 0x77, 0xf7, 0xe6, 0xce, 0xa8, 0x2a, 0xbc, 0x00, 0x05, 0x32, 0xd3, 0xda, 0x3a, 0x34, + 0x0c, 0x9d, 0x96, 0xda, 0x3c, 0x8c, 0x41, 0xca, 0x8b, 0x51, 0xc1, 0xc9, 0x2f, 0x59, 0x70, 0x46, + 0x0c, 0x58, 0xa4, 0x61, 0xaf, 0x1d, 0xb1, 0x0d, 0x92, 0x75, 0xca, 0xcd, 0x3c, 0x26, 0x87, 0x20, + 0x59, 0xbb, 0x20, 0xb9, 0x9f, 0x31, 0x4b, 0x43, 0x4c, 0xf2, 0x25, 0x77, 0xa1, 0x1c, 0x46, 0x4e, + 0x10, 0xd1, 0x66, 0x35, 0xe2, 0xaa, 0x5c, 0xe5, 0xea, 0x4f, 0x1f, 0x6d, 0xe7, 0x58, 0x77, 0x3b, + 0x54, 0xec, 0x52, 0x75, 0x45, 0x00, 0x63, 0x5a, 0xe4, 0x2d, 0x80, 0xa0, 0xe7, 0xd5, 0x7b, 0x9d, + 0x8e, 0x13, 0xec, 0x4a, 0xed, 0xee, 0xc6, 0x70, 0x9f, 0x87, 0x9a, 0x5e, 0xac, 0xe8, 0xc4, 0x65, + 0x68, 0xf0, 0x23, 0x5f, 0xb0, 0xe0, 0x8c, 0x98, 0x07, 0x4a, 0x82, 0xb1, 0x9c, 0x25, 0x38, 0xcb, + 0x9a, 0x76, 0xc9, 0x64, 0x81, 0x49, 0x8e, 0xe4, 0x0d, 0xa8, 0x34, 0xfc, 0x4e, 0xb7, 0x4d, 0x45, + 0xe3, 0x8e, 0x1f, 0xbb, 0x71, 0xf9, 0xd0, 0x5d, 0x8c, 0x49, 0xa0, 0x49, 0xcf, 0xfe, 0x8f, 0x49, + 0x1d, 0x47, 0x0d, 0x69, 0xf2, 0x29, 0x78, 0x3c, 0xec, 0x35, 0x1a, 0x34, 0x0c, 0x37, 0x7b, 0x6d, + 0xec, 0x79, 0x37, 0xdc, 0x30, 0xf2, 0x83, 0xdd, 0x15, 0xb7, 0xe3, 0x46, 0x7c, 0x40, 0x17, 0x6b, + 0x17, 0xf7, 0xf7, 0xe6, 0x1e, 0xaf, 0x0f, 0x42, 0xc2, 0xc1, 0xf5, 0x89, 0x03, 0x4f, 0xf4, 0xbc, + 0xc1, 0xe4, 0xc5, 0xf1, 0x63, 0x6e, 0x7f, 0x6f, 0xee, 0x89, 0x3b, 0x83, 0xd1, 0xf0, 0x20, 0x1a, + 0xf6, 0x9f, 0x58, 0x6c, 0x1b, 0x12, 0xdf, 0xb5, 0x4e, 0x3b, 0xdd, 0x36, 0x5b, 0x3a, 0x4f, 0x5f, + 0x39, 0x8e, 0x12, 0xca, 0x31, 0xe6, 0xb3, 0x97, 0x2b, 0xf9, 0x07, 0x69, 0xc8, 0xf6, 0x7f, 0xb7, + 0xe0, 0x7c, 0x1a, 0xf9, 0x21, 0x28, 0x74, 0x61, 0x52, 0xa1, 0xbb, 0x95, 0xef, 0xd7, 0x0e, 0xd0, + 0xea, 0x7e, 0xd9, 0x18, 0xb0, 0x0a, 0x15, 0xe9, 0x26, 0x79, 0x11, 0x26, 0x22, 0xf9, 0xf7, 0x56, + 0xac, 0x9c, 0x6b, 0xc3, 0xc4, 0xba, 0x01, 0xc3, 0x04, 0x26, 0xab, 0xd9, 0x68, 0xf7, 0xc2, 0x88, + 0x06, 0xf5, 0x86, 0xdf, 0x15, 0xcb, 0x6e, 0x29, 0xae, 0xb9, 0x68, 0xc0, 0x30, 0x81, 0x69, 0xff, + 0x8d, 0x62, 0x7f, 0xbb, 0xff, 0xff, 0xae, 0xaf, 0xc4, 0xea, 0x47, 0xe1, 0xbd, 0x54, 0x3f, 0x46, + 0xdf, 0x57, 0xea, 0xc7, 0x17, 0x2d, 0xa6, 0xc5, 0x89, 0x01, 0x10, 0x4a, 0xd5, 0xe8, 0xb5, 0x7c, + 0xa7, 0x03, 0xd2, 0x4d, 0x53, 0x31, 0x94, 0xbc, 0x30, 0x66, 0x6b, 0xff, 0xa3, 0x51, 0x98, 0xa8, + 0x7a, 0x91, 0x5b, 0xdd, 0xdc, 0x74, 0x3d, 0x37, 0xda, 0x25, 0x5f, 0x1d, 0x81, 0x85, 0x6e, 0x40, + 0x37, 0x69, 0x10, 0xd0, 0xe6, 0x52, 0x2f, 0x70, 0xbd, 0x56, 0xbd, 0xb1, 0x45, 0x9b, 0xbd, 0xb6, + 0xeb, 0xb5, 0x96, 0x5b, 0x9e, 0xaf, 0x8b, 0xaf, 0x3d, 0xa0, 0x8d, 0x1e, 0x6f, 0x57, 0xb1, 0x4a, + 0x74, 0x86, 0x93, 0x7d, 0xed, 0x78, 0x4c, 0x6b, 0xcf, 0xed, 0xef, 0xcd, 0x2d, 0x1c, 0xb3, 0x12, + 0x1e, 0xf7, 0xd3, 0xc8, 0x97, 0x47, 0x60, 0x3e, 0xa0, 0x9f, 0xed, 0xb9, 0x47, 0x6f, 0x0d, 0xb1, + 0x8c, 0xb7, 0x87, 0xdc, 0xee, 0x8f, 0xc5, 0xb3, 0x76, 0x75, 0x7f, 0x6f, 0xee, 0x98, 0x75, 0xf0, + 0x98, 0xdf, 0x65, 0xaf, 0x41, 0xa5, 0xda, 0x75, 0x43, 0xf7, 0x01, 0xfa, 0xbd, 0x88, 0x1e, 0xc1, + 0xa0, 0x31, 0x07, 0xc5, 0xa0, 0xd7, 0xa6, 0x62, 0x81, 0x29, 0xd7, 0xca, 0x6c, 0x59, 0x46, 0x56, + 0x80, 0xa2, 0xdc, 0xfe, 0x22, 0xdb, 0x82, 0x38, 0xc9, 0x94, 0x29, 0xeb, 0x1e, 0x14, 0x03, 0xc6, + 0x44, 0x8e, 0xac, 0x61, 0x4f, 0xfd, 0xb1, 0xd4, 0x52, 0x08, 0xf6, 0x13, 0x05, 0x0b, 0xfb, 0xdb, + 0x23, 0x70, 0xa1, 0xda, 0xed, 0xae, 0xd2, 0x70, 0x2b, 0x25, 0xc5, 0xaf, 0x58, 0x30, 0xb9, 0xe3, + 0x06, 0x51, 0xcf, 0x69, 0x2b, 0x6b, 0xa5, 0x90, 0xa7, 0x3e, 0xac, 0x3c, 0x9c, 0xdb, 0xeb, 0x09, + 0xd2, 0x35, 0xb2, 0xbf, 0x37, 0x37, 0x99, 0x2c, 0xc3, 0x14, 0x7b, 0xf2, 0xb7, 0x2c, 0x98, 0x96, + 0x45, 0xb7, 0xfc, 0x26, 0x35, 0xad, 0xe1, 0x77, 0xf2, 0x94, 0x49, 0x13, 0x17, 0x56, 0xcc, 0x74, + 0x29, 0xf6, 0x09, 0x61, 0xff, 0xcf, 0x11, 0x78, 0x6c, 0x00, 0x0d, 0xf2, 0x5b, 0x16, 0x9c, 0x17, + 0x26, 0x74, 0x03, 0x84, 0x74, 0x53, 0xb6, 0xe6, 0x27, 0xf2, 0x96, 0x1c, 0xd9, 0x14, 0xa7, 0x5e, + 0x83, 0xd6, 0x66, 0xd8, 0x92, 0xbc, 0x98, 0xc1, 0x1a, 0x33, 0x05, 0xe2, 0x92, 0x0a, 0xa3, 0x7a, + 0x4a, 0xd2, 0x91, 0x87, 0x22, 0x69, 0x3d, 0x83, 0x35, 0x66, 0x0a, 0x64, 0xff, 0x35, 0x78, 0xe2, + 0x00, 0x72, 0x87, 0x4f, 0x4e, 0xfb, 0x0d, 0x3d, 0xea, 0x93, 0x63, 0xee, 0x08, 0xf3, 0xda, 0x86, + 0x31, 0x3e, 0x75, 0xd4, 0xc4, 0x06, 0xb6, 0x07, 0xf3, 0x39, 0x15, 0xa2, 0x84, 0xd8, 0xdf, 0xb6, + 0xa0, 0x74, 0x0c, 0xdb, 0xe7, 0x5c, 0xd2, 0xf6, 0x59, 0xee, 0xb3, 0x7b, 0x46, 0xfd, 0x76, 0xcf, + 0x57, 0x86, 0xeb, 0x8d, 0xa3, 0xd8, 0x3b, 0x7f, 0x64, 0xc1, 0xd9, 0x3e, 0xfb, 0x28, 0xd9, 0x82, + 0xf3, 0x5d, 0xbf, 0xa9, 0xb6, 0xd3, 0x1b, 0x4e, 0xb8, 0xc5, 0x61, 0xf2, 0xf3, 0x9e, 0x67, 0x3d, + 0xb9, 0x96, 0x01, 0x7f, 0x77, 0x6f, 0x6e, 0x46, 0x13, 0x49, 0x21, 0x60, 0x26, 0x45, 0xd2, 0x85, + 0xd2, 0xa6, 0x4b, 0xdb, 0xcd, 0x78, 0x08, 0x0e, 0xa9, 0xa5, 0x5d, 0x97, 0xd4, 0xc4, 0xd5, 0x80, + 0xfa, 0x87, 0x9a, 0x8b, 0xfd, 0x63, 0x0b, 0x26, 0xab, 0xbd, 0x68, 0x8b, 0xe9, 0x28, 0x0d, 0x6e, + 0x8d, 0x23, 0x1e, 0x14, 0x43, 0xb7, 0xb5, 0xf3, 0x7c, 0x3e, 0x8b, 0x71, 0x9d, 0x91, 0x92, 0x57, + 0x24, 0x5a, 0x59, 0xe7, 0x85, 0x28, 0xd8, 0x90, 0x00, 0xc6, 0x7c, 0xa7, 0x17, 0x6d, 0x5d, 0x95, + 0x9f, 0x3c, 0xa4, 0x65, 0xe2, 0x36, 0xfb, 0x9c, 0xab, 0x92, 0xa3, 0x56, 0x19, 0x45, 0x29, 0x4a, + 0x4e, 0xf6, 0xe7, 0x61, 0x32, 0x79, 0xef, 0x76, 0x84, 0x31, 0x7b, 0x11, 0x0a, 0x4e, 0xe0, 0xc9, + 0x11, 0x5b, 0x91, 0x08, 0x85, 0x2a, 0xde, 0x42, 0x56, 0x4e, 0x9e, 0x85, 0xd2, 0x66, 0xaf, 0xdd, + 0xe6, 0xe7, 0x0a, 0x71, 0xc9, 0xa5, 0x8f, 0x45, 0xd7, 0x65, 0x39, 0x6a, 0x0c, 0xfb, 0xff, 0x8c, + 0xc2, 0x54, 0xad, 0xdd, 0xa3, 0xaf, 0x04, 0x94, 0x2a, 0x5b, 0x50, 0x15, 0xa6, 0xba, 0x01, 0xdd, + 0x71, 0xe9, 0xfd, 0x3a, 0x6d, 0xd3, 0x46, 0xe4, 0x07, 0x52, 0x9a, 0xc7, 0x24, 0xa1, 0xa9, 0xb5, + 0x24, 0x18, 0xd3, 0xf8, 0xe4, 0x65, 0x98, 0x74, 0x1a, 0x91, 0xbb, 0x43, 0x35, 0x05, 0x21, 0xee, + 0xa3, 0x92, 0xc2, 0x64, 0x35, 0x01, 0xc5, 0x14, 0x36, 0xf9, 0x34, 0xcc, 0x84, 0x0d, 0xa7, 0x4d, + 0xef, 0x74, 0x25, 0xab, 0xc5, 0x2d, 0xda, 0xd8, 0x5e, 0xf3, 0x5d, 0x2f, 0x92, 0x76, 0xc7, 0xcb, + 0x92, 0xd2, 0x4c, 0x7d, 0x00, 0x1e, 0x0e, 0xa4, 0x40, 0xfe, 0x95, 0x05, 0x17, 0xbb, 0x01, 0x5d, + 0x0b, 0xfc, 0x8e, 0xcf, 0x86, 0x5a, 0x9f, 0x39, 0x4c, 0x9a, 0x85, 0x5e, 0x1f, 0x52, 0x97, 0x12, + 0x25, 0xfd, 0x77, 0x38, 0x1f, 0xd8, 0xdf, 0x9b, 0xbb, 0xb8, 0x76, 0x90, 0x00, 0x78, 0xb0, 0x7c, + 0xe4, 0xdf, 0x58, 0x70, 0xa9, 0xeb, 0x87, 0xd1, 0x01, 0x9f, 0x50, 0x3c, 0xd5, 0x4f, 0xb0, 0xf7, + 0xf7, 0xe6, 0x2e, 0xad, 0x1d, 0x28, 0x01, 0x1e, 0x22, 0xa1, 0xbd, 0x5f, 0x81, 0xb3, 0xc6, 0xd8, + 0x93, 0xc6, 0x9c, 0x97, 0xe0, 0x8c, 0x1a, 0x0c, 0xb1, 0xee, 0x53, 0x8e, 0x6d, 0x7b, 0x55, 0x13, + 0x88, 0x49, 0x5c, 0x36, 0xee, 0xf4, 0x50, 0x14, 0xb5, 0x53, 0xe3, 0x6e, 0x2d, 0x01, 0xc5, 0x14, + 0x36, 0x59, 0x86, 0x73, 0xb2, 0x04, 0x69, 0xb7, 0xed, 0x36, 0x9c, 0x45, 0xbf, 0x27, 0x87, 0x5c, + 0xb1, 0xf6, 0xd8, 0xfe, 0xde, 0xdc, 0xb9, 0xb5, 0x7e, 0x30, 0x66, 0xd5, 0x21, 0x2b, 0x70, 0xde, + 0xe9, 0x45, 0xbe, 0xfe, 0xfe, 0x6b, 0x1e, 0xdb, 0x4e, 0x9b, 0x7c, 0x68, 0x95, 0xc4, 0xbe, 0x5b, + 0xcd, 0x80, 0x63, 0x66, 0x2d, 0xb2, 0x96, 0xa2, 0x56, 0xa7, 0x0d, 0xdf, 0x6b, 0x8a, 0x5e, 0x2e, + 0xc6, 0xc7, 0xc0, 0x6a, 0x06, 0x0e, 0x66, 0xd6, 0x24, 0x6d, 0x98, 0xec, 0x38, 0x0f, 0xee, 0x78, + 0xce, 0x8e, 0xe3, 0xb6, 0x19, 0x13, 0x69, 0x2f, 0x1c, 0x6c, 0x65, 0xea, 0x45, 0x6e, 0x7b, 0x5e, + 0xf8, 0x71, 0xcc, 0x2f, 0x7b, 0xd1, 0xed, 0xa0, 0x1e, 0x31, 0x4d, 0x5d, 0x68, 0x90, 0xab, 0x09, + 0x5a, 0x98, 0xa2, 0x4d, 0x6e, 0xc3, 0x05, 0x3e, 0x1d, 0x97, 0xfc, 0xfb, 0xde, 0x12, 0x6d, 0x3b, + 0xbb, 0xea, 0x03, 0xc6, 0xf9, 0x07, 0x3c, 0xbe, 0xbf, 0x37, 0x77, 0xa1, 0x9e, 0x85, 0x80, 0xd9, + 0xf5, 0x88, 0x03, 0x4f, 0x24, 0x01, 0x48, 0x77, 0xdc, 0xd0, 0xf5, 0x3d, 0x61, 0x96, 0x2b, 0xc5, + 0x66, 0xb9, 0xfa, 0x60, 0x34, 0x3c, 0x88, 0x06, 0xf9, 0xbb, 0x16, 0x9c, 0xcf, 0x9a, 0x86, 0x33, + 0xe5, 0x3c, 0x6e, 0x93, 0x53, 0x53, 0x4b, 0x8c, 0x88, 0xcc, 0x45, 0x21, 0x53, 0x08, 0xf2, 0xb6, + 0x05, 0x13, 0x8e, 0x71, 0x82, 0x9e, 0x81, 0x3c, 0x76, 0x2d, 0xf3, 0x4c, 0x5e, 0x9b, 0xde, 0xdf, + 0x9b, 0x4b, 0x9c, 0xd2, 0x31, 0xc1, 0x91, 0xfc, 0x7d, 0x0b, 0x2e, 0x64, 0xce, 0xf1, 0x99, 0xca, + 0x69, 0xb4, 0x10, 0x1f, 0x24, 0xd9, 0x6b, 0x4e, 0xb6, 0x18, 0xe4, 0xeb, 0x96, 0xde, 0xca, 0xd4, + 0x05, 0xe3, 0xcc, 0x04, 0x17, 0x6d, 0x48, 0x83, 0x87, 0xa1, 0x46, 0x29, 0xc2, 0xb5, 0x73, 0xc6, + 0xce, 0xa8, 0x0a, 0x31, 0xcd, 0x9e, 0x7c, 0xcd, 0x52, 0x5b, 0xa3, 0x96, 0xe8, 0xcc, 0x69, 0x49, + 0x44, 0xe2, 0x9d, 0x56, 0x0b, 0x94, 0x62, 0x4e, 0x7e, 0x0e, 0x66, 0x9d, 0x0d, 0x3f, 0x88, 0x32, + 0x27, 0xdf, 0xcc, 0x24, 0x9f, 0x46, 0x97, 0xf6, 0xf7, 0xe6, 0x66, 0xab, 0x03, 0xb1, 0xf0, 0x00, + 0x0a, 0xf6, 0x77, 0xc7, 0x60, 0x42, 0x9c, 0x84, 0xe4, 0xd6, 0xf5, 0xbb, 0x16, 0x3c, 0xd9, 0xe8, + 0x05, 0x01, 0xf5, 0xa2, 0x7a, 0x44, 0xbb, 0xfd, 0x1b, 0x97, 0x75, 0xaa, 0x1b, 0xd7, 0xe5, 0xfd, + 0xbd, 0xb9, 0x27, 0x17, 0x0f, 0xe0, 0x8f, 0x07, 0x4a, 0x47, 0xfe, 0x83, 0x05, 0xb6, 0x44, 0xa8, + 0x39, 0x8d, 0xed, 0x56, 0xe0, 0xf7, 0xbc, 0x66, 0xff, 0x47, 0x8c, 0x9c, 0xea, 0x47, 0x3c, 0xbd, + 0xbf, 0x37, 0x67, 0x2f, 0x1e, 0x2a, 0x05, 0x1e, 0x41, 0x52, 0xf2, 0x0a, 0x9c, 0x95, 0x58, 0xd7, + 0x1e, 0x74, 0x69, 0xe0, 0xb2, 0x33, 0x87, 0x54, 0x1c, 0x63, 0xdf, 0xb4, 0x34, 0x02, 0xf6, 0xd7, + 0x21, 0x21, 0x8c, 0xdf, 0xa7, 0x6e, 0x6b, 0x2b, 0x52, 0xea, 0xd3, 0x90, 0x0e, 0x69, 0xd2, 0x2a, + 0x72, 0x57, 0xd0, 0xac, 0x55, 0xf6, 0xf7, 0xe6, 0xc6, 0xe5, 0x1f, 0x54, 0x9c, 0xc8, 0x2d, 0x98, + 0x14, 0xe7, 0xd4, 0x35, 0xd7, 0x6b, 0xad, 0xf9, 0x9e, 0xf0, 0xaa, 0x2a, 0xd7, 0x9e, 0x56, 0x1b, + 0x7e, 0x3d, 0x01, 0x7d, 0x77, 0x6f, 0x6e, 0x42, 0xfd, 0x5e, 0xdf, 0xed, 0x52, 0x4c, 0xd5, 0x26, + 0x7f, 0xc7, 0x02, 0x12, 0x46, 0xb4, 0xbb, 0xd6, 0xee, 0xb5, 0x5c, 0xd9, 0x44, 0xd2, 0x3f, 0x2a, + 0x07, 0x57, 0xad, 0x24, 0xdd, 0xda, 0xac, 0x14, 0x92, 0xd4, 0xfb, 0x38, 0x62, 0x86, 0x14, 0xf6, + 0xb7, 0xc6, 0x01, 0xd4, 0x5c, 0xa2, 0x5d, 0xf2, 0x41, 0x28, 0x87, 0x34, 0x12, 0x4d, 0x22, 0xaf, + 0xb9, 0xc4, 0xe5, 0xa4, 0x2a, 0xc4, 0x18, 0x4e, 0xb6, 0xa1, 0xd8, 0x75, 0x7a, 0x21, 0xcd, 0xe7, + 0x70, 0x23, 0x47, 0xe6, 0x1a, 0xa3, 0x28, 0x4e, 0xcd, 0xfc, 0x27, 0x0a, 0x1e, 0xe4, 0x4b, 0x16, + 0x00, 0x4d, 0x8e, 0xa6, 0xa1, 0xad, 0x57, 0x92, 0x65, 0x3c, 0xe0, 0x58, 0x1b, 0xd4, 0x26, 0xf7, + 0xf7, 0xe6, 0xc0, 0x18, 0x97, 0x06, 0x5b, 0x72, 0x1f, 0x4a, 0x8e, 0xda, 0x90, 0x46, 0x4f, 0x63, + 0x43, 0xe2, 0x87, 0x59, 0x3d, 0xa3, 0x34, 0x33, 0xf2, 0x65, 0x0b, 0x26, 0x43, 0x1a, 0xc9, 0xae, + 0x62, 0xcb, 0xa2, 0xd4, 0xc6, 0x87, 0x9c, 0x11, 0xf5, 0x04, 0x4d, 0xb1, 0xbc, 0x27, 0xcb, 0x30, + 0xc5, 0x57, 0x89, 0x72, 0x83, 0x3a, 0x4d, 0x1a, 0x70, 0x5b, 0x89, 0x54, 0xf3, 0x86, 0x17, 0xc5, + 0xa0, 0xa9, 0x45, 0x31, 0xca, 0x30, 0xc5, 0x57, 0x89, 0xb2, 0xea, 0x06, 0x81, 0x2f, 0x45, 0x29, + 0xe5, 0x24, 0x8a, 0x41, 0x53, 0x8b, 0x62, 0x94, 0x61, 0x8a, 0x2f, 0x69, 0xc3, 0x58, 0x97, 0x4f, + 0x2d, 0xa9, 0xca, 0x0d, 0x79, 0x47, 0xae, 0xa6, 0x29, 0xed, 0x0a, 0x9b, 0x94, 0xf8, 0x8f, 0x92, + 0x87, 0xfd, 0xcd, 0x33, 0x30, 0xa9, 0xa6, 0x6d, 0x7c, 0xc8, 0x11, 0x86, 0xc0, 0x01, 0x87, 0x9c, + 0x45, 0x13, 0x88, 0x49, 0x5c, 0x56, 0x59, 0xac, 0x5a, 0xc9, 0x33, 0x8e, 0xae, 0x5c, 0x37, 0x81, + 0x98, 0xc4, 0x25, 0x1d, 0x28, 0xb2, 0x95, 0x45, 0xb9, 0x5f, 0x0c, 0xf9, 0xe5, 0xf1, 0x6a, 0x64, + 0x18, 0x55, 0x18, 0x79, 0x14, 0x5c, 0xb8, 0x2d, 0x3b, 0x4a, 0x98, 0xb7, 0xe5, 0x54, 0xcc, 0x67, + 0x35, 0x48, 0x5a, 0xce, 0x45, 0xdf, 0x27, 0xcb, 0x30, 0xc5, 0x3e, 0xe3, 0xdc, 0x53, 0x3c, 0xc5, + 0x73, 0xcf, 0x27, 0xa1, 0xd4, 0x71, 0x1e, 0xd4, 0x7b, 0x41, 0xeb, 0xe4, 0xe7, 0x2b, 0xe9, 0x4e, + 0x2b, 0xa8, 0xa0, 0xa6, 0x47, 0xbe, 0x60, 0x19, 0x0b, 0x9c, 0xf0, 0xb5, 0xb8, 0x9b, 0xef, 0x02, + 0xa7, 0xd5, 0x86, 0x81, 0x4b, 0x5d, 0xdf, 0x29, 0xa4, 0xf4, 0xd0, 0x4f, 0x21, 0x4c, 0xa3, 0x16, + 0x13, 0x44, 0x6b, 0xd4, 0xe5, 0x53, 0xd5, 0xa8, 0x17, 0x13, 0xcc, 0x30, 0xc5, 0x9c, 0xcb, 0x23, + 0xe6, 0x9c, 0x96, 0x07, 0x4e, 0x55, 0x9e, 0x7a, 0x82, 0x19, 0xa6, 0x98, 0x0f, 0x3e, 0x7a, 0x57, + 0x4e, 0xe7, 0xe8, 0x3d, 0x91, 0xc3, 0xd1, 0xfb, 0xe0, 0x53, 0xc9, 0x99, 0x61, 0x4f, 0x25, 0xe4, + 0x26, 0x90, 0xe6, 0xae, 0xe7, 0x74, 0xdc, 0x86, 0x5c, 0x2c, 0xf9, 0x26, 0x3d, 0xc9, 0x4d, 0x33, + 0x5a, 0x2b, 0x5b, 0xea, 0xc3, 0xc0, 0x8c, 0x5a, 0x24, 0x82, 0x52, 0x57, 0x29, 0x9f, 0x53, 0x79, + 0x8c, 0x7e, 0xa5, 0x8c, 0x0a, 0x17, 0x1a, 0x36, 0xf1, 0x54, 0x09, 0x6a, 0x4e, 0x64, 0x05, 0xce, + 0x77, 0x5c, 0x6f, 0xcd, 0x6f, 0x86, 0x6b, 0x34, 0x90, 0x86, 0xa7, 0x3a, 0x8d, 0x66, 0xa6, 0x79, + 0xdb, 0x70, 0x63, 0xc2, 0x6a, 0x06, 0x1c, 0x33, 0x6b, 0xd9, 0xff, 0xdb, 0x82, 0xe9, 0xc5, 0xb6, + 0xdf, 0x6b, 0xde, 0x75, 0xa2, 0xc6, 0x96, 0xf0, 0xd8, 0x20, 0x2f, 0x43, 0xc9, 0xf5, 0x22, 0x1a, + 0xec, 0x38, 0x6d, 0xb9, 0x3f, 0xd9, 0xca, 0x92, 0xbc, 0x2c, 0xcb, 0xdf, 0xdd, 0x9b, 0x9b, 0x5c, + 0xea, 0x05, 0xdc, 0x60, 0x2f, 0x56, 0x2b, 0xd4, 0x75, 0xc8, 0x37, 0x2d, 0x38, 0x2b, 0x7c, 0x3e, + 0x96, 0x9c, 0xc8, 0x79, 0xad, 0x47, 0x03, 0x97, 0x2a, 0xaf, 0x8f, 0x21, 0x17, 0xaa, 0xb4, 0xac, + 0x8a, 0xc1, 0x6e, 0x7c, 0x66, 0x59, 0x4d, 0x73, 0xc6, 0x7e, 0x61, 0xec, 0x5f, 0x2b, 0xc0, 0xe3, + 0x03, 0x69, 0x91, 0x59, 0x18, 0x71, 0x9b, 0xf2, 0xd3, 0x41, 0xd2, 0x1d, 0x59, 0x6e, 0xe2, 0x88, + 0xdb, 0x24, 0xf3, 0x5c, 0xc3, 0x0d, 0x68, 0x18, 0xaa, 0xbb, 0xf7, 0xb2, 0x56, 0x46, 0x65, 0x29, + 0x1a, 0x18, 0x64, 0x0e, 0x8a, 0xdc, 0x95, 0x5a, 0x1e, 0xad, 0xb8, 0xce, 0xcc, 0xbd, 0x96, 0x51, + 0x94, 0x93, 0x2f, 0x5a, 0x00, 0x42, 0x40, 0xa6, 0xef, 0xcb, 0x5d, 0x12, 0xf3, 0x6d, 0x26, 0x46, + 0x59, 0x48, 0x19, 0xff, 0x47, 0x83, 0x2b, 0x59, 0x87, 0x31, 0xa6, 0x3e, 0xfb, 0xcd, 0x13, 0x6f, + 0x8a, 0x42, 0x01, 0xe2, 0x34, 0x50, 0xd2, 0x62, 0x6d, 0x15, 0xd0, 0xa8, 0x17, 0x78, 0xac, 0x69, + 0xf9, 0x36, 0x58, 0x12, 0x52, 0xa0, 0x2e, 0x45, 0x03, 0xc3, 0xfe, 0x17, 0x23, 0x70, 0x3e, 0x4b, + 0x74, 0xb6, 0xdb, 0x8c, 0x09, 0x69, 0xa5, 0x95, 0xe0, 0x67, 0xf3, 0x6f, 0x1f, 0xe9, 0xbe, 0xa4, + 0x6f, 0x6c, 0xa4, 0x2f, 0xa9, 0xe4, 0x4b, 0x7e, 0x56, 0xb7, 0xd0, 0xc8, 0x09, 0x5b, 0x48, 0x53, + 0x4e, 0xb5, 0xd2, 0x65, 0x18, 0x0d, 0x59, 0xcf, 0x17, 0x92, 0x37, 0x3f, 0xbc, 0x8f, 0x38, 0x84, + 0x61, 0xf4, 0x3c, 0x37, 0x92, 0xf1, 0x47, 0x1a, 0xe3, 0x8e, 0xe7, 0x46, 0xc8, 0x21, 0xf6, 0x37, + 0x46, 0x60, 0x76, 0xf0, 0x47, 0x91, 0x6f, 0x58, 0x00, 0x4d, 0x76, 0x38, 0x0a, 0xb9, 0x13, 0xbf, + 0x70, 0xf7, 0x72, 0x4e, 0xab, 0x0d, 0x97, 0x14, 0xa7, 0xd8, 0x0f, 0x51, 0x17, 0x85, 0x68, 0x08, + 0x42, 0xae, 0xaa, 0xa1, 0xcf, 0x6f, 0xad, 0xc4, 0x64, 0xd2, 0x75, 0x56, 0x35, 0x04, 0x0d, 0x2c, + 0x76, 0xfa, 0xf5, 0x9c, 0x0e, 0x0d, 0xbb, 0x8e, 0x8e, 0xe6, 0xe2, 0xa7, 0xdf, 0x5b, 0xaa, 0x10, + 0x63, 0xb8, 0xdd, 0x86, 0xa7, 0x8e, 0x20, 0x67, 0x4e, 0xc1, 0x32, 0xf6, 0x9f, 0x5a, 0xf0, 0x98, + 0xf4, 0xc4, 0xfb, 0x0b, 0xe3, 0xd6, 0xf9, 0x67, 0x16, 0x3c, 0x31, 0xe0, 0x9b, 0x1f, 0x82, 0x77, + 0xe7, 0x9b, 0x49, 0xef, 0xce, 0x3b, 0xc3, 0x0e, 0xe9, 0xcc, 0xef, 0x18, 0xe0, 0xe4, 0xf9, 0xdd, + 0x02, 0x9c, 0x61, 0xcb, 0x56, 0xd3, 0x6f, 0xe5, 0xb4, 0x71, 0x3e, 0x05, 0xc5, 0xcf, 0xb2, 0x0d, + 0x28, 0x3d, 0xc8, 0xf8, 0xae, 0x84, 0x02, 0x46, 0xbe, 0x64, 0xc1, 0xf8, 0x67, 0xe5, 0x9e, 0x2a, + 0xce, 0x72, 0x43, 0x2e, 0x86, 0x89, 0x6f, 0x98, 0x97, 0x3b, 0xa4, 0x88, 0xc1, 0xd1, 0xbe, 0x9c, + 0x6a, 0x2b, 0x55, 0x9c, 0xc9, 0x33, 0x30, 0xbe, 0xe9, 0x07, 0x9d, 0x5e, 0xdb, 0x49, 0x07, 0x7e, + 0x5e, 0x17, 0xc5, 0xa8, 0xe0, 0x6c, 0x92, 0x3b, 0x5d, 0xf7, 0x75, 0x1a, 0x84, 0x22, 0x24, 0x23, + 0x31, 0xc9, 0xab, 0x1a, 0x82, 0x06, 0x16, 0xaf, 0xd3, 0x6a, 0x05, 0xb4, 0xe5, 0x44, 0x7e, 0xc0, + 0x77, 0x0e, 0xb3, 0x8e, 0x86, 0xa0, 0x81, 0x35, 0xfb, 0x31, 0x98, 0x30, 0x85, 0x3f, 0x56, 0x3c, + 0xcf, 0xc7, 0x41, 0x3a, 0x75, 0xa6, 0x96, 0x24, 0xeb, 0x28, 0x4b, 0x92, 0xfd, 0x9f, 0x46, 0xc0, + 0xb0, 0x45, 0x3d, 0x84, 0xa9, 0xee, 0x25, 0xa6, 0xfa, 0x90, 0x76, 0x14, 0xc3, 0xb2, 0x36, 0x28, + 0xba, 0x71, 0x27, 0x15, 0xdd, 0x78, 0x2b, 0x37, 0x8e, 0x07, 0x07, 0x37, 0xfe, 0xc0, 0x82, 0x27, + 0x62, 0xe4, 0x7e, 0x1b, 0xf6, 0xe1, 0xeb, 0xf6, 0x0b, 0x50, 0x71, 0xe2, 0x6a, 0x72, 0x62, 0x19, + 0xa1, 0x65, 0x1a, 0x84, 0x26, 0x5e, 0x1c, 0x16, 0x53, 0x38, 0x61, 0x58, 0xcc, 0xe8, 0xc1, 0x61, + 0x31, 0xf6, 0x8f, 0x47, 0xe0, 0x62, 0xff, 0x97, 0x99, 0xbe, 0xe2, 0x87, 0x7f, 0x5b, 0xda, 0x9b, + 0x7c, 0xe4, 0xc4, 0xde, 0xe4, 0x85, 0xa3, 0x7a, 0x93, 0x6b, 0x1f, 0xee, 0xd1, 0x53, 0xf7, 0xe1, + 0xae, 0xc3, 0x05, 0xe5, 0x30, 0x7a, 0xdd, 0x0f, 0x64, 0x6c, 0x88, 0x5a, 0x41, 0x4a, 0xb5, 0x8b, + 0xb2, 0xca, 0x05, 0xcc, 0x42, 0xc2, 0xec, 0xba, 0xf6, 0x0f, 0x0a, 0x70, 0x2e, 0x6e, 0xf6, 0x45, + 0xdf, 0x6b, 0xba, 0xdc, 0xe7, 0xe8, 0x25, 0x18, 0x8d, 0x76, 0xbb, 0xaa, 0xb1, 0xff, 0xb2, 0x12, + 0x67, 0x7d, 0xb7, 0xcb, 0x7a, 0xfb, 0xb1, 0x8c, 0x2a, 0xfc, 0x16, 0x81, 0x57, 0x22, 0x2b, 0x7a, + 0x76, 0x88, 0x1e, 0x78, 0x3e, 0x39, 0x9a, 0xdf, 0xdd, 0x9b, 0xcb, 0xc8, 0xf2, 0x30, 0xaf, 0x29, + 0x25, 0xc7, 0x3c, 0xb9, 0x07, 0x93, 0x6d, 0x27, 0x8c, 0xee, 0x74, 0x9b, 0x4e, 0x44, 0xd7, 0x5d, + 0xe9, 0xcd, 0x73, 0xbc, 0x70, 0x1a, 0xed, 0xf6, 0xb0, 0x92, 0xa0, 0x84, 0x29, 0xca, 0x64, 0x07, + 0x08, 0x2b, 0x59, 0x0f, 0x1c, 0x2f, 0x14, 0x5f, 0xc5, 0xf8, 0x1d, 0x3f, 0x36, 0x4a, 0x1f, 0x9d, + 0x57, 0xfa, 0xa8, 0x61, 0x06, 0x07, 0xf2, 0x34, 0x8c, 0x05, 0xd4, 0x09, 0xf5, 0x76, 0xa0, 0xe7, + 0x3f, 0xf2, 0x52, 0x94, 0x50, 0x73, 0x42, 0x8d, 0x1d, 0x32, 0xa1, 0xfe, 0xd0, 0x82, 0xc9, 0xb8, + 0x9b, 0x1e, 0x82, 0xea, 0xd1, 0x49, 0xaa, 0x1e, 0x37, 0xf2, 0x5a, 0x12, 0x07, 0x68, 0x1b, 0x7f, + 0x32, 0x6e, 0x7e, 0x1f, 0x0f, 0xe0, 0xf8, 0x9c, 0xe9, 0xcf, 0x6f, 0xe5, 0x11, 0x55, 0x97, 0xd0, + 0xf6, 0x0e, 0x74, 0xe4, 0x67, 0xba, 0x4e, 0x53, 0xea, 0x31, 0x72, 0xd8, 0x6b, 0x5d, 0x47, 0xe9, + 0x37, 0x59, 0xba, 0x8e, 0xaa, 0x43, 0xee, 0xc0, 0x63, 0xdd, 0xc0, 0xe7, 0x79, 0x06, 0x96, 0xa8, + 0xd3, 0x6c, 0xbb, 0x1e, 0x55, 0x66, 0x1e, 0xe1, 0x75, 0xf3, 0xc4, 0xfe, 0xde, 0xdc, 0x63, 0x6b, + 0xd9, 0x28, 0x38, 0xa8, 0x6e, 0x32, 0x52, 0x75, 0xf4, 0x08, 0x91, 0xaa, 0xbf, 0xac, 0x8d, 0xa9, + 0x3a, 0x28, 0xe2, 0x53, 0x79, 0x75, 0x65, 0x56, 0x78, 0x84, 0x1e, 0x52, 0x55, 0xc9, 0x14, 0x35, + 0xfb, 0xc1, 0x16, 0xbb, 0xb1, 0x13, 0x5a, 0xec, 0xe2, 0x38, 0x98, 0xf1, 0xf7, 0x32, 0x0e, 0xa6, + 0xf4, 0xbe, 0x8a, 0x83, 0xf9, 0xa6, 0x05, 0xe7, 0x9c, 0xfe, 0x08, 0xf4, 0x7c, 0x8c, 0xc7, 0x19, + 0xa1, 0xed, 0xb5, 0x27, 0xa4, 0x90, 0x59, 0x81, 0xfe, 0x98, 0x25, 0x8a, 0xfd, 0x4e, 0x11, 0xa6, + 0xd3, 0x4a, 0xd2, 0xe9, 0x87, 0xea, 0xfe, 0xaa, 0x05, 0xd3, 0x6a, 0x82, 0xeb, 0x1b, 0x70, 0x71, + 0xc4, 0x58, 0xc9, 0x69, 0x5d, 0x11, 0xea, 0x9e, 0xce, 0xa0, 0xb2, 0x9e, 0xe2, 0x86, 0x7d, 0xfc, + 0xc9, 0x1b, 0x50, 0xd1, 0xb7, 0x2a, 0x27, 0x8a, 0xdb, 0xe5, 0xa1, 0xa5, 0xd5, 0x98, 0x04, 0x9a, + 0xf4, 0xc8, 0x3b, 0x16, 0x40, 0x43, 0xed, 0xc4, 0x39, 0x45, 0x45, 0x65, 0x68, 0x0b, 0xb1, 0x3e, + 0xaf, 0x8b, 0x42, 0x34, 0x18, 0x93, 0x5f, 0xe3, 0xf7, 0x29, 0x7a, 0x24, 0x28, 0xcf, 0x83, 0x4f, + 0xe4, 0xbd, 0x14, 0xc5, 0xbe, 0x24, 0x5a, 0xdb, 0x33, 0x40, 0x21, 0x26, 0x84, 0xb0, 0x5f, 0x02, + 0xed, 0xb3, 0xcd, 0x56, 0x56, 0xee, 0xb5, 0xbd, 0xe6, 0x44, 0x5b, 0x72, 0x08, 0xea, 0x95, 0xf5, + 0xba, 0x02, 0x60, 0x8c, 0x63, 0x7f, 0x06, 0x26, 0x5f, 0x09, 0x9c, 0xee, 0x96, 0xcb, 0xef, 0x2d, + 0xd8, 0xf9, 0xf8, 0x19, 0x18, 0x77, 0x9a, 0xcd, 0xac, 0x64, 0x3f, 0x55, 0x51, 0x8c, 0x0a, 0x7e, + 0xa4, 0xa3, 0xb0, 0xfd, 0xef, 0x2c, 0x20, 0xf1, 0x4d, 0xb3, 0xeb, 0xb5, 0x56, 0x9d, 0xa8, 0xb1, + 0xc5, 0x8e, 0x70, 0x5b, 0xbc, 0x34, 0xeb, 0x08, 0x77, 0x43, 0x43, 0xd0, 0xc0, 0x22, 0x6f, 0x41, + 0x45, 0xfc, 0x7b, 0x5d, 0x1f, 0x10, 0x87, 0x77, 0x3d, 0xe7, 0x7b, 0x1e, 0x97, 0x49, 0x8c, 0xc2, + 0x1b, 0x31, 0x07, 0x34, 0xd9, 0xb1, 0xa6, 0x5a, 0xf6, 0x36, 0xdb, 0xbd, 0x07, 0xcd, 0x8d, 0xb8, + 0xa9, 0xba, 0x81, 0xbf, 0xe9, 0xb6, 0x69, 0xba, 0xa9, 0xd6, 0x44, 0x31, 0x2a, 0xf8, 0xd1, 0x9a, + 0xea, 0xdf, 0x5a, 0x70, 0x7e, 0x39, 0x8c, 0x5c, 0x7f, 0x89, 0x86, 0x11, 0xdb, 0xf9, 0xd8, 0xfa, + 0xd8, 0x6b, 0x1f, 0x25, 0xfc, 0x62, 0x09, 0xa6, 0xe5, 0x3d, 0x74, 0x6f, 0x23, 0xa4, 0x91, 0x71, + 0xd4, 0xd0, 0xf3, 0x78, 0x31, 0x05, 0xc7, 0xbe, 0x1a, 0x8c, 0x8a, 0xbc, 0x90, 0x8e, 0xa9, 0x14, + 0x92, 0x54, 0xea, 0x29, 0x38, 0xf6, 0xd5, 0xb0, 0xbf, 0x5f, 0x80, 0x73, 0xfc, 0x33, 0x52, 0xa1, + 0x53, 0x5f, 0x1b, 0x14, 0x3a, 0x35, 0xe4, 0x54, 0xe6, 0xbc, 0x4e, 0x10, 0x38, 0xf5, 0x37, 0x2d, + 0x98, 0x6a, 0x26, 0x5b, 0x3a, 0x1f, 0xbb, 0x5c, 0x56, 0x1f, 0x0a, 0x0f, 0xc4, 0x54, 0x21, 0xa6, + 0xf9, 0x93, 0x5f, 0xb7, 0x60, 0x2a, 0x29, 0xa6, 0x5a, 0xdd, 0x4f, 0xa1, 0x91, 0x74, 0xc8, 0x40, + 0xb2, 0x3c, 0xc4, 0xb4, 0x08, 0xf6, 0xf7, 0x46, 0x64, 0x97, 0x9e, 0x46, 0x5c, 0x10, 0xb9, 0x0f, + 0xe5, 0xa8, 0x1d, 0x8a, 0x42, 0xf9, 0xb5, 0x43, 0x1e, 0x5a, 0xd7, 0x57, 0xea, 0xc2, 0xe1, 0x24, + 0xd6, 0x2b, 0x65, 0x09, 0xd3, 0x8f, 0x15, 0x2f, 0xce, 0xb8, 0xd1, 0x95, 0x8c, 0x73, 0x39, 0x2d, + 0xaf, 0x2f, 0xae, 0xa5, 0x19, 0xcb, 0x12, 0xc6, 0x58, 0xf1, 0xb2, 0x7f, 0xdb, 0x82, 0xf2, 0x4d, + 0x5f, 0xad, 0x23, 0x3f, 0x97, 0x83, 0x2d, 0x4a, 0xab, 0xac, 0x5a, 0x69, 0x89, 0x4f, 0x41, 0x2f, + 0x27, 0x2c, 0x51, 0x4f, 0x1a, 0xb4, 0xe7, 0x79, 0xce, 0x43, 0x46, 0xea, 0xa6, 0xbf, 0x31, 0xd0, + 0x7c, 0xfc, 0x1b, 0x45, 0x38, 0xf3, 0xaa, 0xb3, 0x4b, 0xbd, 0xc8, 0x39, 0xfe, 0x26, 0xf1, 0x02, + 0x54, 0x9c, 0x2e, 0xbf, 0xcb, 0x34, 0x8e, 0x21, 0xb1, 0x71, 0x27, 0x06, 0xa1, 0x89, 0x17, 0x2f, + 0x68, 0x22, 0x48, 0x27, 0x6b, 0x29, 0x5a, 0x4c, 0xc1, 0xb1, 0xaf, 0x06, 0xb9, 0x09, 0x44, 0x06, + 0xb6, 0x57, 0x1b, 0x0d, 0xbf, 0xe7, 0x89, 0x25, 0x4d, 0xd8, 0x7d, 0xf4, 0x79, 0x78, 0xb5, 0x0f, + 0x03, 0x33, 0x6a, 0x91, 0x4f, 0xc3, 0x4c, 0x83, 0x53, 0x96, 0xa7, 0x23, 0x93, 0xa2, 0x38, 0x21, + 0xeb, 0xb0, 0x97, 0xc5, 0x01, 0x78, 0x38, 0x90, 0x02, 0x93, 0x34, 0x8c, 0xfc, 0xc0, 0x69, 0x51, + 0x93, 0xee, 0x58, 0x52, 0xd2, 0x7a, 0x1f, 0x06, 0x66, 0xd4, 0x22, 0x9f, 0x87, 0x72, 0xb4, 0x15, + 0xd0, 0x70, 0xcb, 0x6f, 0x37, 0xa5, 0xef, 0xc9, 0x90, 0xc6, 0x40, 0xd9, 0xfb, 0xeb, 0x8a, 0xaa, + 0x31, 0xbc, 0x55, 0x11, 0xc6, 0x3c, 0x49, 0x00, 0x63, 0x61, 0xc3, 0xef, 0xd2, 0x50, 0x9e, 0x2a, + 0x6e, 0xe6, 0xc2, 0x9d, 0x1b, 0xb7, 0x0c, 0x33, 0x24, 0xe7, 0x80, 0x92, 0x93, 0xfd, 0x7b, 0x23, + 0x30, 0x61, 0x22, 0x1e, 0x61, 0x6d, 0xfa, 0x92, 0x05, 0x13, 0x0d, 0xdf, 0x8b, 0x02, 0xbf, 0x1d, + 0x27, 0x6c, 0x18, 0x5e, 0xa3, 0x60, 0xa4, 0x96, 0x68, 0xe4, 0xb8, 0x6d, 0xc3, 0x5a, 0x67, 0xb0, + 0xc1, 0x04, 0x53, 0xf2, 0x55, 0x0b, 0xa6, 0x62, 0xc7, 0xc8, 0xd8, 0xd6, 0x97, 0xab, 0x20, 0x7a, + 0xa9, 0xbf, 0x96, 0xe4, 0x84, 0x69, 0xd6, 0xf6, 0x06, 0x4c, 0xa7, 0x7b, 0x9b, 0x35, 0x65, 0xd7, + 0x91, 0x73, 0xbd, 0x10, 0x37, 0xe5, 0x9a, 0x13, 0x86, 0xc8, 0x21, 0xe4, 0x59, 0x28, 0x75, 0x9c, + 0xa0, 0xe5, 0x7a, 0x4e, 0x9b, 0xb7, 0x62, 0xc1, 0x58, 0x90, 0x64, 0x39, 0x6a, 0x0c, 0xfb, 0xc3, + 0x30, 0xb1, 0xea, 0x78, 0x2d, 0xda, 0x94, 0xeb, 0xf0, 0xe1, 0x91, 0xa9, 0x7f, 0x3c, 0x0a, 0x15, + 0xe3, 0xf8, 0x78, 0xfa, 0xe7, 0xac, 0x44, 0x22, 0xa2, 0x42, 0x8e, 0x89, 0x88, 0x3e, 0x09, 0xb0, + 0xe9, 0x7a, 0x6e, 0xb8, 0x75, 0xc2, 0x14, 0x47, 0xfc, 0x6e, 0xfe, 0xba, 0xa6, 0x80, 0x06, 0xb5, + 0xf8, 0x02, 0xb4, 0x78, 0x40, 0xb6, 0xc0, 0x77, 0x2c, 0x63, 0xbb, 0x19, 0xcb, 0xc3, 0xe1, 0xc3, + 0xe8, 0x98, 0x79, 0xb5, 0xfd, 0x88, 0xbb, 0xa9, 0x83, 0x76, 0xa5, 0x75, 0x28, 0x05, 0x34, 0xec, + 0x75, 0xe8, 0x89, 0x92, 0x11, 0x71, 0xd7, 0x1b, 0x94, 0xf5, 0x51, 0x53, 0x9a, 0x7d, 0x09, 0xce, + 0x24, 0x44, 0x38, 0xd6, 0x0d, 0x93, 0x0f, 0x99, 0x36, 0x8a, 0x93, 0xdc, 0x37, 0xb1, 0xbe, 0x68, + 0x1b, 0x49, 0x88, 0x74, 0x5f, 0x08, 0x07, 0x2b, 0x01, 0xb3, 0x7f, 0x3c, 0x06, 0xd2, 0x87, 0xe1, + 0x08, 0xcb, 0x95, 0x79, 0x73, 0x39, 0x72, 0x82, 0x9b, 0xcb, 0x9b, 0x30, 0xe1, 0x7a, 0x6e, 0xe4, + 0x3a, 0x6d, 0x6e, 0x7f, 0x92, 0xdb, 0xa9, 0x72, 0xc6, 0x9f, 0x58, 0x36, 0x60, 0x19, 0x74, 0x12, + 0x75, 0xc9, 0x6b, 0x50, 0xe4, 0xfb, 0x8d, 0x1c, 0xc0, 0xc7, 0x77, 0xb4, 0xe0, 0x3e, 0x36, 0x22, + 0x42, 0x4f, 0x50, 0xe2, 0x87, 0x0f, 0x91, 0x85, 0x49, 0x1f, 0xbf, 0xe5, 0x38, 0x8e, 0x0f, 0x1f, + 0x29, 0x38, 0xf6, 0xd5, 0x60, 0x54, 0x36, 0x1d, 0xb7, 0xdd, 0x0b, 0x68, 0x4c, 0x65, 0x2c, 0x49, + 0xe5, 0x7a, 0x0a, 0x8e, 0x7d, 0x35, 0xc8, 0x26, 0x4c, 0xc8, 0x32, 0xe1, 0x36, 0x37, 0x7e, 0xc2, + 0xaf, 0xe4, 0xee, 0x91, 0xd7, 0x0d, 0x4a, 0x98, 0xa0, 0x4b, 0x7a, 0x70, 0xd6, 0xf5, 0x1a, 0xbe, + 0xd7, 0x68, 0xf7, 0x42, 0x77, 0x87, 0xc6, 0xe1, 0x71, 0x27, 0x61, 0x76, 0x61, 0x7f, 0x6f, 0xee, + 0xec, 0x72, 0x9a, 0x1c, 0xf6, 0x73, 0x20, 0x5f, 0xb0, 0xe0, 0x42, 0xc3, 0xf7, 0x42, 0x9e, 0xc5, + 0x63, 0x87, 0x5e, 0x0b, 0x02, 0x3f, 0x10, 0xbc, 0xcb, 0x27, 0xe4, 0xcd, 0xcd, 0x9e, 0x8b, 0x59, + 0x24, 0x31, 0x9b, 0x13, 0x79, 0x13, 0x4a, 0xdd, 0xc0, 0xdf, 0x71, 0x9b, 0x34, 0x90, 0x2e, 0x98, + 0x2b, 0x79, 0xa4, 0x36, 0x5a, 0x93, 0x34, 0xe3, 0xa5, 0x47, 0x95, 0xa0, 0xe6, 0x67, 0xff, 0xdf, + 0x0a, 0x4c, 0x26, 0xd1, 0xc9, 0x2f, 0x00, 0x74, 0x03, 0xbf, 0x43, 0xa3, 0x2d, 0xaa, 0xc3, 0x9c, + 0x6e, 0x0d, 0x9b, 0xbc, 0x46, 0xd1, 0x53, 0x6e, 0x4b, 0x6c, 0xb9, 0x88, 0x4b, 0xd1, 0xe0, 0x48, + 0x02, 0x18, 0xdf, 0x16, 0xdb, 0xae, 0xd4, 0x42, 0x5e, 0xcd, 0x45, 0x67, 0x92, 0x9c, 0x79, 0x7c, + 0x8e, 0x2c, 0x42, 0xc5, 0x88, 0x6c, 0x40, 0xe1, 0x3e, 0xdd, 0xc8, 0x27, 0x73, 0xc2, 0x5d, 0x2a, + 0x4f, 0x33, 0xb5, 0xf1, 0xfd, 0xbd, 0xb9, 0xc2, 0x5d, 0xba, 0x81, 0x8c, 0x38, 0xfb, 0xae, 0xa6, + 0xf0, 0x5d, 0x90, 0x4b, 0xc5, 0xab, 0x39, 0x3a, 0x42, 0x88, 0xef, 0x92, 0x45, 0xa8, 0x18, 0x91, + 0x37, 0xa1, 0x7c, 0xdf, 0xd9, 0xa1, 0x9b, 0x81, 0xef, 0x45, 0xd2, 0x57, 0x6e, 0xc8, 0xe0, 0x92, + 0xbb, 0x8a, 0x9c, 0xe4, 0xcb, 0xb7, 0x77, 0x5d, 0x88, 0x31, 0x3b, 0xb2, 0x03, 0x25, 0x8f, 0xde, + 0x47, 0xda, 0x76, 0x1b, 0xf9, 0x04, 0x73, 0xdc, 0x92, 0xd4, 0x24, 0x67, 0xbe, 0xef, 0xa9, 0x32, + 0xd4, 0xbc, 0x58, 0x5f, 0xde, 0xf3, 0x37, 0xe4, 0x42, 0x35, 0x64, 0x5f, 0xea, 0x93, 0xa9, 0xe8, + 0xcb, 0x9b, 0xfe, 0x06, 0x32, 0xe2, 0x6c, 0x8e, 0x34, 0xb4, 0xa3, 0x96, 0x5c, 0xa6, 0x6e, 0xe5, + 0xeb, 0xa0, 0x26, 0xe6, 0x48, 0x5c, 0x8a, 0x06, 0x47, 0xd6, 0xb6, 0x2d, 0x69, 0xac, 0x94, 0x0b, + 0xd5, 0x90, 0x6d, 0x9b, 0x34, 0x7d, 0x8a, 0xb6, 0x55, 0x65, 0xa8, 0x79, 0x31, 0xbe, 0xae, 0xb4, + 0xfc, 0xe5, 0xb3, 0x54, 0x25, 0xed, 0x88, 0x82, 0xaf, 0x2a, 0x43, 0xcd, 0x8b, 0xb5, 0x77, 0xb8, + 0xbd, 0x7b, 0xdf, 0x69, 0x6f, 0xbb, 0x5e, 0x4b, 0x86, 0xed, 0x0e, 0x1b, 0xe6, 0xb6, 0xbd, 0x7b, + 0x57, 0xd0, 0x33, 0xdb, 0x3b, 0x2e, 0x45, 0x83, 0x23, 0xf9, 0x7b, 0x96, 0x0e, 0xc5, 0x99, 0xc8, + 0xc3, 0x89, 0x29, 0xb9, 0xe4, 0xca, 0xc8, 0x1c, 0xa1, 0x28, 0xfe, 0xb4, 0xf6, 0xbb, 0xe4, 0x85, + 0x5f, 0xf9, 0xa3, 0xb9, 0x19, 0xea, 0x35, 0xfc, 0xa6, 0xeb, 0xb5, 0x16, 0xee, 0x85, 0xbe, 0x37, + 0x8f, 0xce, 0x7d, 0xa5, 0xa3, 0x4b, 0x99, 0x66, 0x3f, 0x0a, 0x15, 0x83, 0xc4, 0x61, 0x8a, 0xde, + 0x84, 0xa9, 0xe8, 0xfd, 0xf6, 0x18, 0x4c, 0x98, 0x79, 0x48, 0x8f, 0xa0, 0x7d, 0xe9, 0x13, 0xc7, + 0xc8, 0x71, 0x4e, 0x1c, 0xec, 0x88, 0x69, 0x5c, 0x70, 0x29, 0xf3, 0xd6, 0x72, 0x6e, 0x0a, 0x77, + 0x7c, 0xc4, 0x34, 0x0a, 0x43, 0x4c, 0x30, 0x3d, 0x86, 0xcf, 0x0b, 0x53, 0x5b, 0x85, 0x62, 0x57, + 0x4c, 0xaa, 0xad, 0x09, 0x55, 0xed, 0x2a, 0x40, 0x9c, 0x30, 0x53, 0x5e, 0x7c, 0x6a, 0x7d, 0xd8, + 0x48, 0xe4, 0x69, 0x60, 0x91, 0xa7, 0x61, 0x8c, 0xa9, 0x3e, 0xb4, 0x29, 0xb3, 0x0a, 0xe8, 0x73, + 0xfc, 0x75, 0x5e, 0x8a, 0x12, 0x4a, 0x5e, 0x64, 0x5a, 0x6a, 0xac, 0xb0, 0xc8, 0x64, 0x01, 0xe7, + 0x63, 0x2d, 0x35, 0x86, 0x61, 0x02, 0x93, 0x89, 0x4e, 0x99, 0x7e, 0xc1, 0xd7, 0x06, 0x43, 0x74, + 0xae, 0x74, 0xa0, 0x80, 0x71, 0xbb, 0x52, 0x4a, 0x1f, 0xe1, 0x73, 0xba, 0x68, 0xd8, 0x95, 0x52, + 0x70, 0xec, 0xab, 0xc1, 0x3e, 0x46, 0xde, 0xd9, 0x56, 0x84, 0xc3, 0xf4, 0x80, 0xdb, 0xd6, 0x5f, + 0x34, 0xcf, 0x5a, 0x39, 0xce, 0x21, 0x31, 0x6a, 0x8f, 0x7e, 0xd8, 0x1a, 0xee, 0x58, 0xf4, 0x19, + 0x98, 0x4c, 0xee, 0x42, 0xb9, 0xdf, 0x7c, 0xfc, 0xc3, 0x31, 0x38, 0x77, 0xab, 0xe5, 0x7a, 0xe9, + 0x9c, 0x6f, 0x59, 0x0f, 0x3c, 0x58, 0xc7, 0x7e, 0xe0, 0x41, 0xc7, 0xe4, 0xc9, 0xe7, 0x13, 0xb2, + 0x63, 0xf2, 0xd4, 0x5b, 0x16, 0x49, 0x5c, 0xf2, 0x87, 0x16, 0x3c, 0xe9, 0x34, 0xc5, 0xb9, 0xc0, + 0x69, 0xcb, 0x52, 0x23, 0x2f, 0xb9, 0x9c, 0xd1, 0xe1, 0x90, 0xbb, 0x7c, 0xff, 0xc7, 0xcf, 0x57, + 0x0f, 0xe0, 0x2a, 0x7a, 0xfc, 0xa7, 0xe4, 0x17, 0x3c, 0x79, 0x10, 0x2a, 0x1e, 0x28, 0x3e, 0xf9, + 0xab, 0x30, 0x95, 0xf8, 0x60, 0x69, 0x09, 0x2f, 0x8b, 0x0b, 0x8b, 0x7a, 0x12, 0x84, 0x69, 0x5c, + 0xf2, 0x3d, 0x0b, 0x66, 0x84, 0xd9, 0x35, 0xa3, 0x69, 0xc4, 0x4d, 0xad, 0x9f, 0x7f, 0xd3, 0x2c, + 0x0e, 0xe0, 0x28, 0x9a, 0x25, 0xb6, 0xc3, 0x0e, 0x40, 0xc3, 0x81, 0x22, 0xcf, 0xde, 0x86, 0x0f, + 0x1c, 0xda, 0xee, 0xc7, 0xca, 0x62, 0xff, 0x2a, 0x5c, 0x3c, 0x50, 0xda, 0x63, 0xcd, 0xc4, 0xef, + 0x58, 0x30, 0x61, 0xe6, 0xae, 0x22, 0xcf, 0x42, 0x29, 0xf2, 0xb7, 0xa9, 0x77, 0x27, 0x50, 0xde, + 0xcc, 0x7a, 0x15, 0x58, 0xe7, 0xe5, 0xb8, 0x82, 0x1a, 0x83, 0x61, 0x37, 0xda, 0x2e, 0xf5, 0xa2, + 0xe5, 0xa6, 0x9c, 0x03, 0x1a, 0x7b, 0x51, 0x94, 0x2f, 0xa1, 0xc6, 0x10, 0x0e, 0x88, 0xec, 0x77, + 0x9d, 0x36, 0x02, 0xaa, 0x62, 0x1f, 0x0c, 0x07, 0xc4, 0x18, 0x86, 0x09, 0x4c, 0x62, 0x6b, 0xfb, + 0xef, 0x68, 0x7c, 0xe9, 0x93, 0xb2, 0xd7, 0x7e, 0xcb, 0x82, 0xb2, 0xb8, 0xbf, 0x40, 0xba, 0x99, + 0xf2, 0x3f, 0x4e, 0x59, 0x58, 0xaa, 0x6b, 0xcb, 0x59, 0xfe, 0xc7, 0x97, 0x61, 0x74, 0xdb, 0xf5, + 0xd4, 0x97, 0xe8, 0x3d, 0xfb, 0x55, 0xd7, 0x6b, 0x22, 0x87, 0xe8, 0x5d, 0xbd, 0x30, 0x70, 0x57, + 0x5f, 0x80, 0xb2, 0xf6, 0xca, 0x91, 0x7b, 0xa3, 0x36, 0x6d, 0x6b, 0x2f, 0x1e, 0x8c, 0x71, 0xec, + 0xdf, 0xb4, 0x60, 0x92, 0x87, 0xd3, 0xc7, 0xc6, 0x82, 0x17, 0xb4, 0xa3, 0x9c, 0x90, 0xfb, 0x62, + 0xd2, 0x51, 0xee, 0xdd, 0xbd, 0xb9, 0x8a, 0x08, 0xc0, 0x4f, 0xfa, 0xcd, 0x7d, 0x4a, 0x5a, 0x18, + 0xb9, 0x3b, 0xdf, 0xc8, 0xb1, 0x0d, 0x60, 0xb1, 0x98, 0x8a, 0x08, 0xc6, 0xf4, 0xec, 0xb7, 0x60, + 0xc2, 0x8c, 0x54, 0x23, 0x2f, 0x40, 0xa5, 0xeb, 0x7a, 0xad, 0x64, 0x44, 0xb3, 0xbe, 0x85, 0x59, + 0x8b, 0x41, 0x68, 0xe2, 0xf1, 0x6a, 0x7e, 0x5c, 0x2d, 0x75, 0x79, 0xb3, 0xe6, 0x9b, 0xd5, 0xe2, + 0x3f, 0xb6, 0x07, 0x10, 0x87, 0x5d, 0x1f, 0xc9, 0xb2, 0x35, 0x26, 0x2e, 0x46, 0x84, 0xa6, 0xc6, + 0x53, 0x68, 0x8c, 0x89, 0x11, 0xfe, 0xee, 0xde, 0x41, 0x9a, 0xa0, 0xa8, 0xc5, 0x1f, 0xe8, 0xc8, + 0x88, 0xc0, 0xcc, 0xfd, 0x81, 0x8e, 0x0c, 0x1e, 0xef, 0xdd, 0x03, 0x1d, 0x59, 0xc2, 0xfc, 0xf9, + 0x7a, 0xa0, 0xe3, 0x13, 0x70, 0xdc, 0x5c, 0xbd, 0x4c, 0xf1, 0xba, 0x6f, 0xe6, 0xd4, 0xd0, 0x2d, + 0x2e, 0x93, 0x6a, 0x48, 0xa8, 0xfd, 0xdd, 0x51, 0x98, 0x4e, 0xdb, 0x5f, 0xf2, 0x76, 0x6d, 0x21, + 0x5f, 0xb5, 0x60, 0xd2, 0x49, 0xe4, 0x45, 0xcc, 0xe9, 0xb5, 0xaf, 0x04, 0x4d, 0x23, 0x2f, 0x5f, + 0xa2, 0x1c, 0x53, 0xbc, 0xc9, 0x5f, 0x82, 0xf1, 0xc8, 0xed, 0x50, 0xbf, 0x27, 0xac, 0xb2, 0x05, + 0x61, 0x1d, 0x59, 0x17, 0x45, 0xa8, 0x60, 0x6c, 0x13, 0x70, 0xb9, 0x3a, 0x1b, 0x50, 0xe9, 0xa6, + 0x3d, 0x1d, 0x9b, 0x91, 0x45, 0x39, 0x6a, 0x0c, 0xf2, 0x00, 0xc6, 0x85, 0x13, 0x8c, 0xf2, 0x76, + 0x5a, 0xcd, 0xc9, 0x4e, 0x24, 0xfc, 0x6c, 0xe2, 0x2e, 0x10, 0xff, 0x43, 0x54, 0xec, 0x98, 0xee, + 0x0c, 0x81, 0xe3, 0xb5, 0x28, 0x6f, 0x73, 0x69, 0xd9, 0x78, 0x3d, 0x2f, 0x93, 0x1c, 0x6a, 0xca, + 0xd5, 0xa0, 0x15, 0xca, 0x88, 0x47, 0x5d, 0x86, 0x06, 0x67, 0xfb, 0x57, 0x2d, 0x98, 0x19, 0x54, + 0x91, 0x0d, 0x14, 0xbe, 0xea, 0xca, 0x11, 0x65, 0x24, 0x5a, 0x70, 0x82, 0x08, 0x05, 0x8c, 0x5c, + 0x84, 0x02, 0xd5, 0x1b, 0x95, 0xce, 0x0a, 0x79, 0xcd, 0x6b, 0x22, 0x2b, 0x27, 0x57, 0x61, 0x34, + 0x8c, 0x68, 0x37, 0x15, 0xc7, 0x30, 0xca, 0x16, 0xcf, 0x0c, 0x43, 0x3c, 0xc7, 0xb5, 0x3f, 0x0c, + 0xc7, 0x4c, 0xed, 0x6c, 0x5f, 0x03, 0x82, 0x7e, 0xbb, 0xbd, 0xe1, 0x34, 0xb6, 0xef, 0xba, 0x5e, + 0xd3, 0xbf, 0xcf, 0x37, 0x86, 0x05, 0x28, 0x07, 0x32, 0xba, 0x3b, 0x94, 0x73, 0x4a, 0xef, 0x2c, + 0x2a, 0xec, 0x3b, 0xc4, 0x18, 0xc7, 0xfe, 0xde, 0x08, 0x8c, 0xcb, 0x54, 0x04, 0x0f, 0x21, 0x88, + 0x66, 0x3b, 0xe1, 0xba, 0xb0, 0x9c, 0x4b, 0x06, 0x85, 0x81, 0x11, 0x34, 0x61, 0x2a, 0x82, 0xe6, + 0xd5, 0x7c, 0xd8, 0x1d, 0x1c, 0x3e, 0xf3, 0xed, 0x22, 0x4c, 0xa5, 0x52, 0x3b, 0xa4, 0xb2, 0xc0, + 0x5b, 0xef, 0x49, 0x16, 0x78, 0x12, 0x26, 0x5e, 0x02, 0xc8, 0xcf, 0xe5, 0xf6, 0x27, 0x8f, 0x02, + 0xe4, 0xe5, 0x0c, 0x5d, 0x7c, 0xff, 0x38, 0x43, 0xff, 0x37, 0x0b, 0x1e, 0x1f, 0x98, 0xa0, 0x84, + 0xa7, 0xfa, 0x0b, 0x92, 0x50, 0xb9, 0x5e, 0xe4, 0x9c, 0xf4, 0x49, 0xbb, 0x39, 0xa4, 0xb3, 0xb3, + 0xa5, 0xd9, 0x93, 0xe7, 0x61, 0x82, 0xaf, 0xcd, 0x6c, 0xe5, 0x64, 0x6b, 0xaf, 0xb8, 0xa5, 0xe5, + 0xf7, 0x75, 0x75, 0xa3, 0x1c, 0x13, 0x58, 0xf6, 0x37, 0x2d, 0x98, 0x19, 0x94, 0xf8, 0xed, 0x08, + 0x7a, 0xee, 0x5f, 0x49, 0x05, 0x21, 0xcd, 0xf5, 0x05, 0x21, 0xa5, 0xac, 0x88, 0x2a, 0xde, 0xc8, + 0x30, 0xe0, 0x15, 0x0e, 0x89, 0xb1, 0xf9, 0xfd, 0x02, 0x4c, 0x4b, 0x11, 0xe3, 0x23, 0xca, 0x8b, + 0x89, 0xd0, 0xa9, 0x9f, 0x4a, 0x85, 0x4e, 0x9d, 0x4f, 0xe3, 0xff, 0x24, 0x6e, 0xea, 0xfd, 0x15, + 0x37, 0xf5, 0x95, 0x22, 0x5c, 0xc8, 0x4c, 0xb1, 0x46, 0xbe, 0x9c, 0xb1, 0x53, 0xdc, 0xcd, 0x39, + 0x97, 0x9b, 0x0e, 0xb1, 0x3e, 0xdd, 0x60, 0xa3, 0x5f, 0x37, 0x83, 0x7c, 0xc4, 0xea, 0xbf, 0x79, + 0x0a, 0x59, 0xe9, 0x8e, 0x1b, 0xef, 0xf3, 0x70, 0x5f, 0xc9, 0xfb, 0x73, 0xb0, 0xd4, 0x7f, 0xa5, + 0x00, 0x57, 0x8e, 0xda, 0xb2, 0xef, 0xd3, 0x00, 0xd9, 0x30, 0x11, 0x20, 0xfb, 0x90, 0x54, 0x9b, + 0x53, 0x89, 0x95, 0xfd, 0x07, 0xa3, 0x7a, 0xdf, 0xed, 0x9f, 0xb0, 0x47, 0xb2, 0xbc, 0x8c, 0x33, + 0xd5, 0x57, 0xbd, 0x25, 0x10, 0xef, 0x0d, 0xe3, 0x75, 0x51, 0xfc, 0xee, 0xde, 0xdc, 0xd9, 0x38, + 0x17, 0x91, 0x2c, 0x44, 0x55, 0x89, 0x5c, 0x81, 0x52, 0x20, 0xa0, 0x2a, 0x24, 0x50, 0x3a, 0x66, + 0x89, 0x32, 0xd4, 0x50, 0xf2, 0x79, 0xe3, 0xac, 0x30, 0x7a, 0x5a, 0x29, 0xb7, 0x0e, 0xf2, 0x37, + 0x7b, 0x03, 0x4a, 0xa1, 0x4a, 0x78, 0x2f, 0xa6, 0xd3, 0x73, 0x47, 0x8c, 0x34, 0x75, 0x36, 0x68, + 0x5b, 0x65, 0xbf, 0x17, 0xdf, 0xa7, 0x73, 0xe3, 0x6b, 0x92, 0xc4, 0xd6, 0x96, 0x09, 0x71, 0x1f, + 0x06, 0xfd, 0x56, 0x09, 0x12, 0xc1, 0xb8, 0x7c, 0xf5, 0x5a, 0x1e, 0x67, 0x57, 0x73, 0x0a, 0xd9, + 0x92, 0x0e, 0xfd, 0xfc, 0xc0, 0xaf, 0x2c, 0x72, 0x8a, 0x95, 0xfd, 0x03, 0x0b, 0x2a, 0x72, 0x8c, + 0x3c, 0x84, 0x90, 0xdb, 0x7b, 0xc9, 0x90, 0xdb, 0x6b, 0xb9, 0x2c, 0xe1, 0x03, 0xe2, 0x6d, 0xef, + 0xc1, 0x84, 0x99, 0xec, 0x94, 0x7c, 0xd2, 0xd8, 0x82, 0xac, 0x61, 0x12, 0xfa, 0xa9, 0x4d, 0x2a, + 0xde, 0x9e, 0xec, 0x7f, 0x5a, 0xd6, 0xad, 0xc8, 0x0f, 0xce, 0xe6, 0xc8, 0xb7, 0x0e, 0x1c, 0xf9, + 0xe6, 0xc0, 0x1b, 0xc9, 0x7f, 0xe0, 0xbd, 0x06, 0x25, 0xb5, 0x2c, 0x4a, 0x6d, 0xea, 0x29, 0xd3, + 0xc3, 0x9f, 0xa9, 0x64, 0x8c, 0x98, 0x31, 0x5d, 0xf8, 0x01, 0x38, 0xbe, 0x27, 0x50, 0xcb, 0xb5, + 0x26, 0x43, 0xde, 0x84, 0xca, 0x7d, 0x3f, 0xd8, 0x6e, 0xfb, 0x0e, 0x7f, 0x65, 0x04, 0xf2, 0x70, + 0x2a, 0xd1, 0xb6, 0x7e, 0x11, 0x66, 0x75, 0x37, 0xa6, 0x8f, 0x26, 0x33, 0x52, 0x85, 0xa9, 0x8e, + 0xeb, 0x21, 0x75, 0x9a, 0x3a, 0xb2, 0x76, 0x54, 0x64, 0xf8, 0x57, 0xba, 0xfd, 0x6a, 0x12, 0x8c, + 0x69, 0x7c, 0x6e, 0x97, 0x0b, 0x12, 0xa6, 0x0e, 0x99, 0xc6, 0x7b, 0x6d, 0xf8, 0xc1, 0x98, 0x34, + 0x9f, 0x88, 0x38, 0xa3, 0x64, 0x39, 0xa6, 0x78, 0x93, 0xcf, 0x41, 0x29, 0x54, 0xef, 0xc9, 0x16, + 0x73, 0x3c, 0xf5, 0xe8, 0x37, 0x65, 0x75, 0x57, 0xea, 0x47, 0x65, 0x35, 0x43, 0xb2, 0x02, 0xe7, + 0x95, 0xed, 0x26, 0xf1, 0x34, 0xe6, 0x58, 0x9c, 0x8a, 0x0e, 0x33, 0xe0, 0x98, 0x59, 0x8b, 0xe9, + 0xb6, 0x3c, 0x89, 0xb0, 0xb8, 0xc4, 0x37, 0xee, 0xbd, 0xf9, 0xfc, 0x6b, 0xa2, 0x84, 0x1e, 0x14, + 0x38, 0x5e, 0x1a, 0x22, 0x70, 0xbc, 0x0e, 0x17, 0xd2, 0x20, 0x9e, 0x63, 0x90, 0xa7, 0x35, 0x34, + 0xb6, 0xd0, 0xb5, 0x2c, 0x24, 0xcc, 0xae, 0x4b, 0xee, 0x42, 0x39, 0xa0, 0xfc, 0x94, 0x57, 0x55, + 0xfe, 0x8f, 0xc7, 0xf6, 0xf4, 0x46, 0x45, 0x00, 0x63, 0x5a, 0xac, 0xdf, 0x9d, 0x64, 0xce, 0xfd, + 0xd7, 0x72, 0x7c, 0x70, 0x5e, 0xf6, 0xfd, 0x80, 0xdc, 0x9f, 0xf6, 0xbf, 0x9f, 0x82, 0x33, 0x09, + 0x03, 0x14, 0x79, 0x0a, 0x8a, 0x3c, 0xe9, 0x22, 0x5f, 0xad, 0x4a, 0xf1, 0x8a, 0x2a, 0x1a, 0x47, + 0xc0, 0xc8, 0xaf, 0x58, 0x30, 0xd5, 0x4d, 0x5c, 0x6f, 0xa9, 0x85, 0x7c, 0x48, 0x9b, 0x76, 0xf2, + 0xce, 0xcc, 0x78, 0xad, 0x26, 0xc9, 0x0c, 0xd3, 0xdc, 0xd9, 0x7a, 0x20, 0xc3, 0x25, 0xda, 0x34, + 0xe0, 0xd8, 0x52, 0xd1, 0xd3, 0x24, 0x16, 0x93, 0x60, 0x4c, 0xe3, 0xb3, 0x1e, 0xe6, 0x5f, 0x37, + 0xcc, 0xa3, 0xc2, 0x55, 0x45, 0x00, 0x63, 0x5a, 0xe4, 0x65, 0x98, 0x94, 0xa9, 0xd6, 0xd7, 0xfc, + 0xe6, 0x0d, 0x27, 0xdc, 0x92, 0x47, 0x3e, 0x7d, 0x44, 0x5d, 0x4c, 0x40, 0x31, 0x85, 0xcd, 0xbf, + 0x2d, 0xce, 0x67, 0xcf, 0x09, 0x8c, 0x25, 0x1f, 0xf3, 0x59, 0x4c, 0x82, 0x31, 0x8d, 0x4f, 0x9e, + 0x35, 0xb6, 0x21, 0xe1, 0x58, 0xa3, 0x57, 0x83, 0x8c, 0xad, 0xa8, 0x0a, 0x53, 0x3d, 0x7e, 0x42, + 0x6e, 0x2a, 0xa0, 0x9c, 0x8f, 0x9a, 0xe1, 0x9d, 0x24, 0x18, 0xd3, 0xf8, 0xe4, 0x25, 0x38, 0x13, + 0xb0, 0xc5, 0x56, 0x13, 0x10, 0xde, 0x36, 0xda, 0x99, 0x02, 0x4d, 0x20, 0x26, 0x71, 0xc9, 0x2b, + 0x70, 0x36, 0x4e, 0xc7, 0xab, 0x08, 0x08, 0xf7, 0x1b, 0x9d, 0x1b, 0xb2, 0x9a, 0x46, 0xc0, 0xfe, + 0x3a, 0xe4, 0xaf, 0xc3, 0xb4, 0xd1, 0x12, 0xcb, 0x5e, 0x93, 0x3e, 0x90, 0x29, 0x53, 0xf9, 0xe3, + 0x74, 0x8b, 0x29, 0x18, 0xf6, 0x61, 0x93, 0x8f, 0xc1, 0x64, 0xc3, 0x6f, 0xb7, 0xf9, 0x1a, 0x27, + 0x1e, 0x92, 0x11, 0xb9, 0x51, 0x45, 0x16, 0xd9, 0x04, 0x04, 0x53, 0x98, 0xe4, 0x26, 0x10, 0x7f, + 0x83, 0xa9, 0x57, 0xb4, 0xf9, 0x0a, 0xf5, 0xa8, 0xd4, 0x38, 0xce, 0x24, 0x83, 0xb5, 0x6e, 0xf7, + 0x61, 0x60, 0x46, 0x2d, 0x9e, 0x5a, 0xd2, 0x08, 0x6e, 0x9f, 0xcc, 0x23, 0x99, 0x7d, 0xda, 0x9e, + 0x73, 0x68, 0x64, 0x7b, 0x00, 0x63, 0xc2, 0x23, 0x22, 0x9f, 0x24, 0xa9, 0xe6, 0x9b, 0x12, 0xf1, + 0x1e, 0x21, 0x4a, 0x51, 0x72, 0x22, 0xbf, 0x00, 0xe5, 0x0d, 0xf5, 0xc0, 0x10, 0xcf, 0x8c, 0x3a, + 0xf4, 0xbe, 0x98, 0x7a, 0x2b, 0x2b, 0xb6, 0x57, 0x68, 0x00, 0xc6, 0x2c, 0xc9, 0xd3, 0x50, 0xb9, + 0xb1, 0x56, 0xd5, 0xa3, 0xf0, 0x2c, 0xef, 0xfd, 0x51, 0x56, 0x05, 0x4d, 0x00, 0x9b, 0x61, 0x5a, + 0x7d, 0x23, 0x49, 0xa7, 0x89, 0x0c, 0x6d, 0x8c, 0x61, 0x73, 0x17, 0x19, 0xac, 0xcf, 0x9c, 0x4b, + 0x61, 0xcb, 0x72, 0xd4, 0x18, 0xe4, 0x0d, 0xa8, 0xc8, 0xfd, 0x82, 0xaf, 0x4d, 0xe7, 0x4f, 0x96, + 0x38, 0x01, 0x63, 0x12, 0x68, 0xd2, 0xe3, 0xd7, 0xf7, 0xfc, 0xdd, 0x15, 0x7a, 0xbd, 0xd7, 0x6e, + 0xcf, 0x5c, 0xe0, 0xeb, 0x66, 0x7c, 0x7d, 0x1f, 0x83, 0xd0, 0xc4, 0x23, 0xcf, 0x29, 0x57, 0xc7, + 0x47, 0x13, 0xfe, 0x0c, 0xda, 0xd5, 0x51, 0x2b, 0xdd, 0x03, 0x62, 0xab, 0x1e, 0x3b, 0xc4, 0xc7, + 0x70, 0x03, 0x66, 0x95, 0xc6, 0xd7, 0x3f, 0x49, 0x66, 0x66, 0x12, 0xb6, 0xa3, 0xd9, 0xbb, 0x03, + 0x31, 0xf1, 0x00, 0x2a, 0x64, 0x03, 0x0a, 0x4e, 0x7b, 0x63, 0xe6, 0xf1, 0x3c, 0x54, 0xd7, 0xea, + 0x4a, 0x4d, 0x8e, 0x28, 0xee, 0x0f, 0x5d, 0x5d, 0xa9, 0x21, 0x23, 0x4e, 0x5c, 0x18, 0x75, 0xda, + 0x1b, 0xe1, 0xcc, 0x2c, 0x9f, 0xb3, 0xb9, 0x31, 0x89, 0x8d, 0x07, 0x2b, 0xb5, 0x10, 0x39, 0x0b, + 0xfb, 0x0b, 0x23, 0xfa, 0x96, 0x48, 0xe7, 0xa9, 0x7f, 0xcb, 0x9c, 0x40, 0xe2, 0xb8, 0x73, 0x3b, + 0xb7, 0x09, 0x24, 0xd5, 0x8b, 0x33, 0x03, 0xa7, 0x4f, 0x57, 0x2f, 0x19, 0xb9, 0x24, 0xb8, 0x4b, + 0xe6, 0xe0, 0x17, 0xa7, 0xe7, 0xe4, 0x82, 0x61, 0x7f, 0xb1, 0xa2, 0xad, 0xa0, 0x29, 0x37, 0xc1, + 0x00, 0x8a, 0x6e, 0x18, 0xb9, 0x7e, 0x8e, 0xf9, 0x04, 0x52, 0xc9, 0xeb, 0x79, 0xb8, 0x12, 0x07, + 0xa0, 0x60, 0xc5, 0x78, 0x7a, 0x2d, 0xd7, 0x7b, 0x20, 0x3f, 0xff, 0xb5, 0xdc, 0x9d, 0xdc, 0x04, + 0x4f, 0x0e, 0x40, 0xc1, 0x8a, 0xdc, 0x13, 0x83, 0xba, 0x90, 0x47, 0x5f, 0x57, 0x57, 0x6a, 0x29, + 0x7e, 0xc9, 0xc1, 0x7d, 0x0f, 0x0a, 0x61, 0xc7, 0x95, 0xea, 0xd2, 0x90, 0xbc, 0xea, 0xab, 0xcb, + 0x59, 0xbc, 0xea, 0xab, 0xcb, 0xc8, 0x98, 0xf0, 0xab, 0x7e, 0xa7, 0xb3, 0xe1, 0x84, 0xa1, 0xd3, + 0xd4, 0xd6, 0x99, 0x21, 0xaf, 0xfa, 0xab, 0x9a, 0x5e, 0x8a, 0x35, 0xbf, 0xea, 0x8f, 0xa1, 0x68, + 0x70, 0x26, 0x6f, 0xc2, 0xb8, 0x23, 0x1e, 0x40, 0x95, 0xc1, 0x1b, 0xf9, 0xbc, 0xea, 0x9b, 0x92, + 0x80, 0x9b, 0x69, 0x24, 0x08, 0x15, 0x43, 0xc6, 0x3b, 0x0a, 0x1c, 0xba, 0xe9, 0x6e, 0x4b, 0xe3, + 0x50, 0x7d, 0xe8, 0x27, 0x7a, 0x18, 0xb1, 0x2c, 0xde, 0x12, 0x84, 0x8a, 0x21, 0xf9, 0x25, 0x0b, + 0xce, 0x74, 0x1c, 0xcf, 0xd1, 0x21, 0xb9, 0xf9, 0x04, 0x6e, 0x9b, 0x41, 0xbe, 0xb1, 0x86, 0xb8, + 0x6a, 0x32, 0xc2, 0x24, 0x5f, 0xb2, 0x03, 0x63, 0x0e, 0x7f, 0x9a, 0x59, 0x1e, 0xc5, 0x30, 0x8f, + 0x67, 0x9e, 0x53, 0x6d, 0xc0, 0x17, 0x17, 0xf9, 0x00, 0xb4, 0xe4, 0x46, 0x7e, 0xcb, 0x82, 0x71, + 0x11, 0x57, 0xc0, 0x14, 0x52, 0xf6, 0xed, 0x9f, 0x39, 0x85, 0x47, 0x30, 0x64, 0xcc, 0x83, 0x74, + 0xce, 0xfa, 0xa0, 0x76, 0x9a, 0x16, 0xa5, 0x07, 0x46, 0x3d, 0x28, 0xe9, 0x98, 0xea, 0xdb, 0x71, + 0x1e, 0x24, 0x1e, 0x60, 0x32, 0x55, 0xdf, 0xd5, 0x14, 0x0c, 0xfb, 0xb0, 0x67, 0x3f, 0x06, 0x13, + 0xa6, 0x1c, 0xc7, 0x8a, 0x9c, 0xf8, 0x51, 0x01, 0x80, 0x77, 0x95, 0x48, 0xe3, 0xd3, 0xe1, 0x39, + 0xbf, 0xb7, 0xfc, 0x66, 0x4e, 0x0f, 0xc1, 0x1a, 0xd9, 0x78, 0x40, 0x26, 0xf8, 0xde, 0xf2, 0x9b, + 0x28, 0x99, 0x90, 0x16, 0x8c, 0x76, 0x9d, 0x68, 0x2b, 0xff, 0xd4, 0x3f, 0x25, 0x11, 0xcf, 0x1e, + 0x6d, 0x21, 0x67, 0x40, 0xde, 0xb6, 0x62, 0xbf, 0xa7, 0x42, 0x1e, 0x69, 0x8b, 0xe3, 0x36, 0x9b, + 0x97, 0x9e, 0x4e, 0xa9, 0xec, 0xbd, 0x69, 0xff, 0xa7, 0xd9, 0x77, 0x2c, 0x98, 0x30, 0x51, 0x33, + 0xba, 0xe9, 0xe7, 0xcd, 0x6e, 0xca, 0xb3, 0x3d, 0xcc, 0x1e, 0xff, 0x1f, 0x16, 0x00, 0xf6, 0xbc, + 0x7a, 0xaf, 0xd3, 0x61, 0x6a, 0xbb, 0x0e, 0x10, 0xb1, 0x8e, 0x1c, 0x20, 0x32, 0x72, 0xcc, 0x00, + 0x91, 0xc2, 0xb1, 0x02, 0x44, 0x46, 0x8f, 0x1f, 0x20, 0x52, 0x1c, 0x1c, 0x20, 0x62, 0x7f, 0xdd, + 0x82, 0xb3, 0x7d, 0xfb, 0x15, 0xd3, 0xa4, 0x03, 0xdf, 0x8f, 0x06, 0xf8, 0xcf, 0x62, 0x0c, 0x42, + 0x13, 0x8f, 0x2c, 0xc1, 0xb4, 0x7c, 0xe1, 0xa6, 0xde, 0x6d, 0xbb, 0x99, 0x69, 0x99, 0xd6, 0x53, + 0x70, 0xec, 0xab, 0x61, 0xff, 0x6b, 0x0b, 0x2a, 0x46, 0x32, 0x07, 0xee, 0x73, 0xc6, 0x6f, 0xbc, + 0xd2, 0x3e, 0x67, 0xfc, 0xaa, 0x4b, 0xc0, 0xc4, 0x35, 0x74, 0xcb, 0x78, 0xff, 0x20, 0xbe, 0x86, + 0x66, 0xa5, 0x28, 0xa1, 0x22, 0xb3, 0xbd, 0x74, 0x3e, 0x2b, 0x98, 0x99, 0xed, 0x69, 0x57, 0xb8, + 0x9a, 0xc5, 0x2e, 0x6e, 0xa3, 0x87, 0xbb, 0xb8, 0x15, 0xb3, 0x5d, 0xdc, 0xec, 0xdb, 0x30, 0x21, + 0x7c, 0xc3, 0x5f, 0xa5, 0xbb, 0x47, 0x7e, 0x49, 0x99, 0x8d, 0xf6, 0x94, 0xcf, 0x1c, 0xab, 0xce, + 0xca, 0xed, 0x7f, 0x62, 0x41, 0xea, 0x79, 0x2d, 0xe3, 0x06, 0xc6, 0x1a, 0x78, 0x03, 0x63, 0x5a, + 0xed, 0x47, 0x0e, 0xb4, 0xda, 0xdf, 0x04, 0xd2, 0x61, 0x53, 0x21, 0xb9, 0xd0, 0x16, 0x92, 0xaf, + 0x90, 0xac, 0xf6, 0x61, 0x60, 0x46, 0x2d, 0xfb, 0x1f, 0x0b, 0x61, 0xcd, 0x07, 0xb7, 0x0e, 0x6f, + 0x80, 0x1e, 0x14, 0x39, 0x29, 0x69, 0x7f, 0x1b, 0xd2, 0x76, 0xdd, 0x9f, 0x82, 0x2d, 0xee, 0x48, + 0x39, 0xe5, 0x39, 0x37, 0xfb, 0xf7, 0x85, 0xac, 0xe6, 0x8b, 0x5c, 0x87, 0xcb, 0xda, 0x49, 0xca, + 0x7a, 0x23, 0xaf, 0xb5, 0x32, 0x5b, 0x46, 0x32, 0x0f, 0xd0, 0xa5, 0x41, 0x83, 0x7a, 0x91, 0x0a, + 0x69, 0x2b, 0xca, 0xe0, 0x6a, 0x5d, 0x8a, 0x06, 0x86, 0xfd, 0x35, 0x36, 0x81, 0xe2, 0x37, 0xc6, + 0xc9, 0x95, 0xb4, 0x23, 0x70, 0x7a, 0x72, 0x68, 0x3f, 0x60, 0x23, 0xd0, 0x69, 0xe4, 0x90, 0x40, + 0xa7, 0x67, 0x60, 0x3c, 0xf0, 0xdb, 0xb4, 0x1a, 0x78, 0x69, 0x1f, 0x1d, 0x64, 0xc5, 0x78, 0x0b, + 0x15, 0xdc, 0xfe, 0x0d, 0x0b, 0xa6, 0xd3, 0x91, 0x98, 0xb9, 0x7b, 0x27, 0x9b, 0xe9, 0x22, 0x0a, + 0xc7, 0x4f, 0x17, 0x61, 0xff, 0x69, 0x11, 0xa6, 0xd3, 0x6f, 0x1f, 0x32, 0xce, 0x2e, 0x37, 0xb6, + 0xa5, 0x56, 0x7f, 0x61, 0x65, 0x13, 0x30, 0x3d, 0x5e, 0x46, 0x06, 0x8e, 0x97, 0xeb, 0x50, 0xf6, + 0xbb, 0xea, 0xc0, 0x2f, 0x84, 0xbb, 0xa2, 0x8c, 0x35, 0xb7, 0x15, 0xe0, 0xdd, 0xbd, 0xb9, 0x73, + 0xb1, 0x00, 0xba, 0x18, 0xe3, 0xaa, 0xe4, 0x67, 0x94, 0xa5, 0x62, 0x34, 0x91, 0x80, 0x49, 0x5b, + 0x2a, 0xa6, 0xe2, 0xfa, 0x83, 0x8c, 0x15, 0xc5, 0xe3, 0x24, 0x82, 0x19, 0xcb, 0x31, 0x11, 0xcc, + 0x5d, 0x28, 0x4b, 0xdb, 0xea, 0x89, 0x12, 0xa0, 0x70, 0xc2, 0x77, 0x14, 0x01, 0x8c, 0x69, 0xa5, + 0x32, 0xcc, 0x94, 0x72, 0xcd, 0x30, 0xf3, 0x12, 0x8c, 0x6f, 0x38, 0x8d, 0x6d, 0x7f, 0x73, 0x93, + 0xeb, 0xe7, 0xe5, 0xda, 0x07, 0x54, 0xc3, 0xd5, 0x44, 0x71, 0xc6, 0x90, 0x52, 0x35, 0x98, 0x56, + 0x40, 0x95, 0x3b, 0xb2, 0x32, 0xfb, 0x6a, 0xad, 0x40, 0x3b, 0x2a, 0x87, 0x68, 0x60, 0x91, 0x67, + 0xa1, 0xd4, 0x74, 0x43, 0xf1, 0x3a, 0x77, 0x25, 0xe9, 0xad, 0xbe, 0x24, 0xcb, 0x51, 0x63, 0x90, + 0x97, 0xb5, 0xb7, 0xda, 0x44, 0x1c, 0x48, 0xa2, 0x3d, 0xd5, 0x0e, 0x08, 0x24, 0x91, 0xce, 0xb8, + 0x6f, 0xb3, 0x89, 0x19, 0xb9, 0x8d, 0x6d, 0xd7, 0x13, 0x59, 0x45, 0xd8, 0x6a, 0xf1, 0x0c, 0x8c, + 0x53, 0xf9, 0x3e, 0xb8, 0xb8, 0x3a, 0xd1, 0x83, 0x45, 0x3d, 0x0b, 0xae, 0xe0, 0xa4, 0x0a, 0x53, + 0xea, 0xc2, 0x58, 0xdd, 0x77, 0x89, 0x6c, 0x48, 0xda, 0xbe, 0xbe, 0x94, 0x04, 0x63, 0x1a, 0xdf, + 0xfe, 0x3c, 0x54, 0x0c, 0x45, 0x8c, 0xeb, 0x2c, 0x0f, 0x9c, 0x46, 0x9f, 0x7f, 0xf9, 0x35, 0x56, + 0x88, 0x02, 0xc6, 0xaf, 0xe5, 0x44, 0x70, 0x64, 0x6a, 0xaf, 0x97, 0x21, 0x91, 0x12, 0xca, 0x88, + 0x05, 0xb4, 0x45, 0x1f, 0xa8, 0x27, 0x59, 0x14, 0x31, 0x64, 0x85, 0x28, 0x60, 0xf6, 0xb3, 0x50, + 0x52, 0x39, 0xeb, 0x78, 0xe2, 0x27, 0x75, 0x65, 0x64, 0x26, 0x7e, 0xf2, 0x83, 0x08, 0x39, 0xc4, + 0x7e, 0x1d, 0x4a, 0x2a, 0xb5, 0xde, 0xe1, 0xd8, 0x6c, 0xfb, 0x0d, 0x3d, 0xf7, 0x86, 0x1f, 0x46, + 0x2a, 0x1f, 0xa0, 0xb8, 0xd5, 0xbe, 0xb5, 0xcc, 0xcb, 0x50, 0x43, 0xed, 0x3f, 0xb3, 0xa0, 0xb2, + 0xbe, 0xbe, 0xa2, 0x8d, 0x5d, 0x08, 0x8f, 0x86, 0xa2, 0x85, 0xaa, 0x9b, 0x11, 0x35, 0xdd, 0x67, + 0xc4, 0x4a, 0x34, 0xbb, 0xbf, 0x37, 0xf7, 0x68, 0x3d, 0x13, 0x03, 0x07, 0xd4, 0x24, 0xcb, 0x70, + 0xce, 0x84, 0xc8, 0x3c, 0x2d, 0x52, 0x2f, 0xe0, 0x0f, 0xca, 0xd7, 0xfb, 0xc1, 0x98, 0x55, 0x27, + 0x4d, 0x4a, 0xaa, 0xb8, 0xe6, 0xdb, 0xf4, 0xf5, 0x7e, 0x30, 0x66, 0xd5, 0xb1, 0x9f, 0x83, 0xa9, + 0x94, 0x5f, 0xc7, 0x11, 0xf2, 0x63, 0xfd, 0x5e, 0x01, 0x26, 0xcc, 0xeb, 0xfd, 0x23, 0xec, 0xd9, + 0x47, 0x57, 0x85, 0x32, 0xae, 0xe4, 0x0b, 0xc7, 0xbc, 0x92, 0x37, 0x7d, 0x20, 0x46, 0x4f, 0xd7, + 0x07, 0xa2, 0x98, 0x8f, 0x0f, 0x84, 0xe1, 0xab, 0x33, 0xf6, 0xf0, 0x7c, 0x75, 0x7e, 0xb7, 0x08, + 0x93, 0xc9, 0x84, 0xcb, 0x47, 0xe8, 0xc9, 0x67, 0xfb, 0x7a, 0xf2, 0x98, 0x77, 0x80, 0x85, 0x61, + 0xef, 0x00, 0x47, 0x87, 0xbd, 0x03, 0x2c, 0x9e, 0xe0, 0x0e, 0xb0, 0xff, 0x06, 0x6f, 0xec, 0xc8, + 0x37, 0x78, 0x1f, 0xd7, 0x1b, 0xc5, 0x78, 0xc2, 0xed, 0x2d, 0xde, 0x2c, 0x48, 0xb2, 0x1b, 0x16, + 0xfd, 0x66, 0xa6, 0x3b, 0x76, 0xe9, 0x10, 0xf5, 0x21, 0xc8, 0xf4, 0x42, 0x3e, 0xbe, 0x9b, 0xc1, + 0xa3, 0xc7, 0xf0, 0x40, 0x7e, 0x01, 0x2a, 0x72, 0x3c, 0xf1, 0x03, 0x27, 0x24, 0x0f, 0xab, 0xf5, + 0x18, 0x84, 0x26, 0x1e, 0x1b, 0x18, 0xdd, 0x78, 0x82, 0xf0, 0xdb, 0xe8, 0x4a, 0xf2, 0x36, 0x7a, + 0x2d, 0x09, 0xc6, 0x34, 0xbe, 0xfd, 0x39, 0xb8, 0x90, 0x69, 0x76, 0xe4, 0x57, 0x3e, 0xfc, 0x2c, + 0x44, 0x9b, 0x12, 0xc1, 0x10, 0x23, 0xf5, 0x0e, 0xd3, 0xec, 0xdd, 0x81, 0x98, 0x78, 0x00, 0x15, + 0xfb, 0x77, 0x0a, 0x30, 0x99, 0x7c, 0x97, 0x9c, 0xdc, 0xd7, 0x97, 0x14, 0xb9, 0xdc, 0x8f, 0x08, + 0xb2, 0x46, 0x12, 0xdf, 0x81, 0x97, 0x9b, 0xf7, 0xf9, 0xf8, 0xda, 0xd0, 0x19, 0x85, 0x4f, 0x8f, + 0xb1, 0xbc, 0x55, 0x94, 0xec, 0xf8, 0xeb, 0xde, 0x71, 0xbc, 0xbf, 0xb4, 0x5d, 0xe5, 0xce, 0x3d, + 0x0e, 0xcd, 0xd6, 0xac, 0xd0, 0x60, 0xcb, 0xf6, 0x96, 0x1d, 0x1a, 0xb8, 0x9b, 0x2e, 0x6d, 0xca, + 0x07, 0x1e, 0xf8, 0xca, 0xfd, 0xba, 0x2c, 0x43, 0x0d, 0xb5, 0xdf, 0x1e, 0x81, 0x32, 0x4f, 0x4f, + 0x78, 0x3d, 0xf0, 0x3b, 0xfc, 0xc5, 0xda, 0xd0, 0xb0, 0x13, 0xc8, 0x6e, 0xbb, 0x39, 0xec, 0x23, + 0xd4, 0x31, 0x45, 0x19, 0xe2, 0x61, 0x94, 0x60, 0x82, 0x23, 0xe9, 0x42, 0x69, 0x53, 0xa6, 0x53, + 0x97, 0x7d, 0x37, 0x64, 0x4a, 0x60, 0x95, 0x9c, 0x5d, 0x34, 0x81, 0xfa, 0x87, 0x9a, 0x8b, 0xed, + 0xc0, 0x54, 0x2a, 0xbf, 0x54, 0xee, 0x49, 0xd8, 0xff, 0xd7, 0x28, 0x94, 0x75, 0xe4, 0x25, 0xf9, + 0x68, 0xc2, 0x68, 0x1b, 0xeb, 0xf0, 0xd2, 0xda, 0xca, 0xce, 0x4d, 0x1a, 0x39, 0x65, 0x80, 0xbd, + 0x08, 0x85, 0x5e, 0xd0, 0x4e, 0x5b, 0x65, 0xee, 0xe0, 0x0a, 0xb2, 0x72, 0x33, 0x5a, 0xb4, 0xf0, + 0x70, 0xa3, 0x45, 0x2f, 0xc3, 0xe8, 0x86, 0xdf, 0xdc, 0x4d, 0x3f, 0xbf, 0x58, 0xf3, 0x9b, 0xbb, + 0xc8, 0x21, 0xe4, 0x65, 0x98, 0x94, 0x21, 0xb0, 0x4a, 0x89, 0x29, 0x72, 0x3d, 0x55, 0x3b, 0xeb, + 0xac, 0x27, 0xa0, 0x98, 0xc2, 0x66, 0xbb, 0x2c, 0x3b, 0x36, 0xf0, 0xd4, 0xfa, 0x63, 0xc9, 0x9b, + 0xfd, 0x9b, 0xf5, 0xdb, 0xb7, 0xb8, 0xf1, 0x58, 0x63, 0x24, 0xa2, 0x6c, 0xc7, 0x0f, 0x8d, 0xb2, + 0x5d, 0x12, 0xb4, 0x99, 0xb4, 0x7c, 0x47, 0x99, 0xa8, 0x5d, 0x51, 0x74, 0x59, 0xd9, 0x81, 0x67, + 0x17, 0x5d, 0x33, 0x2b, 0x1e, 0xb9, 0xfc, 0xde, 0xc5, 0x23, 0xdb, 0x77, 0x60, 0x2a, 0xd5, 0x7f, + 0xca, 0xa8, 0x67, 0x65, 0x1b, 0xf5, 0x8e, 0xf6, 0x80, 0xe3, 0x3f, 0xb7, 0xe0, 0x6c, 0xdf, 0x8a, + 0x74, 0xd4, 0xc0, 0xf0, 0xf4, 0xde, 0x38, 0x72, 0xf2, 0xbd, 0xb1, 0x70, 0xbc, 0xbd, 0xb1, 0xb6, + 0xf1, 0x9d, 0x1f, 0x5e, 0x7a, 0xe4, 0xfb, 0x3f, 0xbc, 0xf4, 0xc8, 0x1f, 0xfc, 0xf0, 0xd2, 0x23, + 0x6f, 0xef, 0x5f, 0xb2, 0xbe, 0xb3, 0x7f, 0xc9, 0xfa, 0xfe, 0xfe, 0x25, 0xeb, 0x0f, 0xf6, 0x2f, + 0x59, 0xff, 0x75, 0xff, 0x92, 0xf5, 0xf5, 0x3f, 0xbe, 0xf4, 0xc8, 0x27, 0x3f, 0x1e, 0xf7, 0xd4, + 0x82, 0xea, 0x29, 0xfe, 0xe3, 0x43, 0xaa, 0x5f, 0x16, 0xba, 0xdb, 0xad, 0x05, 0xd6, 0x53, 0x0b, + 0xba, 0x44, 0xf5, 0xd4, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x69, 0xab, 0x4b, 0x8a, 0xad, + 0x00, 0x00, } func (m *ALBStatus) Marshal() (dAtA []byte, err error) { @@ -5408,6 +5481,20 @@ func (m *CanaryStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.StepPluginStatuses) > 0 { + for iNdEx := len(m.StepPluginStatuses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.StepPluginStatuses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } i -= len(m.StablePingPong) copy(dAtA[i:], m.StablePingPong) i = encodeVarintGenerated(dAtA, i, uint64(len(m.StablePingPong))) @@ -5477,6 +5564,18 @@ func (m *CanaryStep) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Plugin != nil { + { + size, err := m.Plugin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } if m.SetMirrorRoute != nil { { size, err := m.SetMirrorRoute.MarshalToSizedBuffer(dAtA[:i]) @@ -7966,6 +8065,41 @@ func (m *PingPongSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *PluginStep) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PluginStep) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PluginStep) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Config != nil { + i -= len(m.Config) + copy(dAtA[i:], m.Config) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Config))) + i-- + dAtA[i] = 0x12 + } + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *PodTemplateMetadata) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -9827,7 +9961,7 @@ func (m *SkyWalkingMetric) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *StickinessConfig) Marshal() (dAtA []byte, err error) { +func (m *StepPluginStatus) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -9837,31 +9971,102 @@ func (m *StickinessConfig) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *StickinessConfig) MarshalTo(dAtA []byte) (int, error) { +func (m *StepPluginStatus) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *StickinessConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *StepPluginStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - i = encodeVarintGenerated(dAtA, i, uint64(m.DurationSeconds)) - i-- - dAtA[i] = 0x10 + if m.Status != nil { + i -= len(m.Status) + copy(dAtA[i:], m.Status) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i-- + dAtA[i] = 0x62 + } i-- - if m.Enabled { + if m.Disabled { dAtA[i] = 1 } else { dAtA[i] = 0 } i-- + dAtA[i] = 0x58 + i = encodeVarintGenerated(dAtA, i, uint64(m.Executions)) + i-- + dAtA[i] = 0x50 + i -= len(m.Backoff) + copy(dAtA[i:], m.Backoff) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Backoff))) + i-- + dAtA[i] = 0x4a + if m.FinishedAt != nil { + { + size, err := m.FinishedAt.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + if m.UpdatedAt != nil { + { + size, err := m.UpdatedAt.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + if m.StartedAt != nil { + { + size, err := m.StartedAt.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + i -= len(m.Message) + copy(dAtA[i:], m.Message) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i-- + dAtA[i] = 0x2a + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0x22 + i -= len(m.Operation) + copy(dAtA[i:], m.Operation) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Operation))) + i-- + dAtA[i] = 0x1a + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0x12 + i = encodeVarintGenerated(dAtA, i, uint64(m.Index)) + i-- dAtA[i] = 0x8 return len(dAtA) - i, nil } -func (m *StringMatch) Marshal() (dAtA []byte, err error) { +func (m *StickinessConfig) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -9871,28 +10076,62 @@ func (m *StringMatch) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *StringMatch) MarshalTo(dAtA []byte) (int, error) { +func (m *StickinessConfig) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *StringMatch) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *StickinessConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - i -= len(m.Regex) - copy(dAtA[i:], m.Regex) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Regex))) + i = encodeVarintGenerated(dAtA, i, uint64(m.DurationSeconds)) i-- - dAtA[i] = 0x1a - i -= len(m.Prefix) - copy(dAtA[i:], m.Prefix) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Prefix))) + dAtA[i] = 0x10 i-- - dAtA[i] = 0x12 - i -= len(m.Exact) - copy(dAtA[i:], m.Exact) + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + +func (m *StringMatch) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StringMatch) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *StringMatch) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i -= len(m.Regex) + copy(dAtA[i:], m.Regex) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Regex))) + i-- + dAtA[i] = 0x1a + i -= len(m.Prefix) + copy(dAtA[i:], m.Prefix) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Prefix))) + i-- + dAtA[i] = 0x12 + i -= len(m.Exact) + copy(dAtA[i:], m.Exact) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Exact))) i-- dAtA[i] = 0xa @@ -11082,6 +11321,12 @@ func (m *CanaryStatus) Size() (n int) { } l = len(m.StablePingPong) n += 1 + l + sovGenerated(uint64(l)) + if len(m.StepPluginStatuses) > 0 { + for _, e := range m.StepPluginStatuses { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } return n } @@ -11118,6 +11363,10 @@ func (m *CanaryStep) Size() (n int) { l = m.SetMirrorRoute.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.Plugin != nil { + l = m.Plugin.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -12016,6 +12265,21 @@ func (m *PingPongSpec) Size() (n int) { return n } +func (m *PluginStep) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if m.Config != nil { + l = len(m.Config) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *PodTemplateMetadata) Size() (n int) { if m == nil { return 0 @@ -12689,6 +12953,44 @@ func (m *SkyWalkingMetric) Size() (n int) { return n } +func (m *StepPluginStatus) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Index)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Operation) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + if m.StartedAt != nil { + l = m.StartedAt.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.UpdatedAt != nil { + l = m.UpdatedAt.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.FinishedAt != nil { + l = m.FinishedAt.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.Backoff) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Executions)) + n += 2 + if m.Status != nil { + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *StickinessConfig) Size() (n int) { if m == nil { return 0 @@ -13367,12 +13669,18 @@ func (this *CanaryStatus) String() string { if this == nil { return "nil" } + repeatedStringForStepPluginStatuses := "[]StepPluginStatus{" + for _, f := range this.StepPluginStatuses { + repeatedStringForStepPluginStatuses += strings.Replace(strings.Replace(f.String(), "StepPluginStatus", "StepPluginStatus", 1), `&`, ``, 1) + "," + } + repeatedStringForStepPluginStatuses += "}" s := strings.Join([]string{`&CanaryStatus{`, `CurrentStepAnalysisRunStatus:` + strings.Replace(this.CurrentStepAnalysisRunStatus.String(), "RolloutAnalysisRunStatus", "RolloutAnalysisRunStatus", 1) + `,`, `CurrentBackgroundAnalysisRunStatus:` + strings.Replace(this.CurrentBackgroundAnalysisRunStatus.String(), "RolloutAnalysisRunStatus", "RolloutAnalysisRunStatus", 1) + `,`, `CurrentExperiment:` + fmt.Sprintf("%v", this.CurrentExperiment) + `,`, `Weights:` + strings.Replace(this.Weights.String(), "TrafficWeights", "TrafficWeights", 1) + `,`, `StablePingPong:` + fmt.Sprintf("%v", this.StablePingPong) + `,`, + `StepPluginStatuses:` + repeatedStringForStepPluginStatuses + `,`, `}`, }, "") return s @@ -13389,6 +13697,7 @@ func (this *CanaryStep) String() string { `SetCanaryScale:` + strings.Replace(this.SetCanaryScale.String(), "SetCanaryScale", "SetCanaryScale", 1) + `,`, `SetHeaderRoute:` + strings.Replace(this.SetHeaderRoute.String(), "SetHeaderRoute", "SetHeaderRoute", 1) + `,`, `SetMirrorRoute:` + strings.Replace(this.SetMirrorRoute.String(), "SetMirrorRoute", "SetMirrorRoute", 1) + `,`, + `Plugin:` + strings.Replace(this.Plugin.String(), "PluginStep", "PluginStep", 1) + `,`, `}`, }, "") return s @@ -14077,6 +14386,17 @@ func (this *PingPongSpec) String() string { }, "") return s } +func (this *PluginStep) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PluginStep{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Config:` + valueToStringGenerated(this.Config) + `,`, + `}`, + }, "") + return s +} func (this *PodTemplateMetadata) String() string { if this == nil { return "nil" @@ -14603,6 +14923,27 @@ func (this *SkyWalkingMetric) String() string { }, "") return s } +func (this *StepPluginStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StepPluginStatus{`, + `Index:` + fmt.Sprintf("%v", this.Index) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Operation:` + fmt.Sprintf("%v", this.Operation) + `,`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `StartedAt:` + strings.Replace(fmt.Sprintf("%v", this.StartedAt), "Time", "v1.Time", 1) + `,`, + `UpdatedAt:` + strings.Replace(fmt.Sprintf("%v", this.UpdatedAt), "Time", "v1.Time", 1) + `,`, + `FinishedAt:` + strings.Replace(fmt.Sprintf("%v", this.FinishedAt), "Time", "v1.Time", 1) + `,`, + `Backoff:` + fmt.Sprintf("%v", this.Backoff) + `,`, + `Executions:` + fmt.Sprintf("%v", this.Executions) + `,`, + `Disabled:` + fmt.Sprintf("%v", this.Disabled) + `,`, + `Status:` + valueToStringGenerated(this.Status) + `,`, + `}`, + }, "") + return s +} func (this *StickinessConfig) String() string { if this == nil { return "nil" @@ -19351,6 +19692,40 @@ func (m *CanaryStatus) Unmarshal(dAtA []byte) error { } m.StablePingPong = PingPongType(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StepPluginStatuses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StepPluginStatuses = append(m.StepPluginStatuses, StepPluginStatus{}) + if err := m.StepPluginStatuses[len(m.StepPluginStatuses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -19637,6 +20012,42 @@ func (m *CanaryStep) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Plugin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Plugin == nil { + m.Plugin = &PluginStep{} + } + if err := m.Plugin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -27723,7 +28134,7 @@ func (m *PingPongSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *PodTemplateMetadata) Unmarshal(dAtA []byte) error { +func (m *PluginStep) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -27746,17 +28157,17 @@ func (m *PodTemplateMetadata) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PodTemplateMetadata: wiretype end group for non-group") + return fmt.Errorf("proto: PluginStep: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PodTemplateMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PluginStep: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -27766,82 +28177,198 @@ func (m *PodTemplateMetadata) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Labels == nil { - m.Labels = make(map[string]string) + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType) } - var mapkey string - var mapvalue string - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthGenerated - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return ErrInvalidLengthGenerated - } - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var stringLenmapvalue uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Config = append(m.Config[:0], dAtA[iNdEx:postIndex]...) + if m.Config == nil { + m.Config = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodTemplateMetadata) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodTemplateMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodTemplateMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Labels == nil { + m.Labels = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } b := dAtA[iNdEx] iNdEx++ stringLenmapvalue |= uint64(b&0x7F) << shift @@ -33655,6 +34182,416 @@ func (m *SkyWalkingMetric) Unmarshal(dAtA []byte) error { } return nil } +func (m *StepPluginStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StepPluginStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StepPluginStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType) + } + m.Index = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Index |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operation", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operation = StepPluginOperation(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Phase = StepPluginPhase(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartedAt", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.StartedAt == nil { + m.StartedAt = &v1.Time{} + } + if err := m.StartedAt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdatedAt", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.UpdatedAt == nil { + m.UpdatedAt = &v1.Time{} + } + if err := m.UpdatedAt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FinishedAt", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FinishedAt == nil { + m.FinishedAt = &v1.Time{} + } + if err := m.FinishedAt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Backoff", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Backoff = DurationString(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Executions", wireType) + } + m.Executions = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Executions |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Disabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Disabled = bool(v != 0) + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = append(m.Status[:0], dAtA[iNdEx:postIndex]...) + if m.Status == nil { + m.Status = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *StickinessConfig) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/apis/rollouts/v1alpha1/generated.proto b/pkg/apis/rollouts/v1alpha1/generated.proto index 4a384b789f..624c985c21 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.proto +++ b/pkg/apis/rollouts/v1alpha1/generated.proto @@ -448,6 +448,9 @@ message CanaryStatus { // StablePingPong For the ping-pong feature holds the current stable service, ping or pong optional string stablePingPong = 5; + + // StepPluginStatuses holds the status of the step plugins executed + repeated StepPluginStatus stepPluginStatuses = 6; } // CanaryStep defines a step of a canary deployment. @@ -477,6 +480,9 @@ message CanaryStep { // SetMirrorRoutes Mirrors traffic that matches rules to a particular destination // +optional optional SetMirrorRoute setMirrorRoute = 8; + + // Plugin defines a plugin to execute for a step + optional PluginStep plugin = 9; } // CanaryStrategy defines parameters for a Replica Based Canary @@ -1180,6 +1186,17 @@ message PingPongSpec { optional string pongService = 2; } +message PluginStep { + // Name of the hashicorp go-plugin step to query + optional string name = 1; + + // +kubebuilder:validation:Schemaless + // +kubebuilder:pruning:PreserveUnknownFields + // +kubebuilder:validation:Type=object + // Config is the configuration object for the specified plugin + optional bytes config = 2; +} + // PodTemplateMetadata extra labels to add to the template message PodTemplateMetadata { // Labels Additional labels to add to the experiment @@ -1755,6 +1772,47 @@ message SkyWalkingMetric { optional string interval = 3; } +message StepPluginStatus { + // Index is the matching step index of the executed plugin + optional int32 index = 1; + + // Name is the matching step name of the executed plugin + optional string name = 2; + + // Operation is the name of the operation that produced this status + optional string operation = 3; + + // Phase is the resulting phase of the operation + optional string phase = 4; + + // Message provides details on why the plugin is in its current phase + optional string message = 5; + + // StartedAt indicates when the plugin was first called for the operation + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 6; + + // UpdatedAt indicates when the plugin was last called for the operation + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time updatedAt = 7; + + // FinishedAt indicates when the operation was completed + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 8; + + // Backoff is a duration to wait before trying to execute the operation again if it was not completed + optional string backoff = 9; + + // Executions is the number of time the operation was executed + optional int32 executions = 10; + + // Disabled indicates if the plugin is globally disabled + optional bool disabled = 11; + + // +kubebuilder:validation:Schemaless + // +kubebuilder:pruning:PreserveUnknownFields + // +kubebuilder:validation:Type=object + // Status holds the internal status of the plugin for this operation + optional bytes status = 12; +} + message StickinessConfig { optional bool enabled = 1; diff --git a/pkg/apis/rollouts/v1alpha1/openapi_generated.go b/pkg/apis/rollouts/v1alpha1/openapi_generated.go index 7945b82df4..5ba707c6ac 100644 --- a/pkg/apis/rollouts/v1alpha1/openapi_generated.go +++ b/pkg/apis/rollouts/v1alpha1/openapi_generated.go @@ -97,6 +97,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.ObjectRef": schema_pkg_apis_rollouts_v1alpha1_ObjectRef(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PauseCondition": schema_pkg_apis_rollouts_v1alpha1_PauseCondition(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PingPongSpec": schema_pkg_apis_rollouts_v1alpha1_PingPongSpec(ref), + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PluginStep": schema_pkg_apis_rollouts_v1alpha1_PluginStep(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PodTemplateMetadata": schema_pkg_apis_rollouts_v1alpha1_PodTemplateMetadata(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PreferredDuringSchedulingIgnoredDuringExecution": schema_pkg_apis_rollouts_v1alpha1_PreferredDuringSchedulingIgnoredDuringExecution(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PrometheusMetric": schema_pkg_apis_rollouts_v1alpha1_PrometheusMetric(ref), @@ -127,6 +128,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SetMirrorRoute": schema_pkg_apis_rollouts_v1alpha1_SetMirrorRoute(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.Sigv4Config": schema_pkg_apis_rollouts_v1alpha1_Sigv4Config(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SkyWalkingMetric": schema_pkg_apis_rollouts_v1alpha1_SkyWalkingMetric(ref), + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.StepPluginStatus": schema_pkg_apis_rollouts_v1alpha1_StepPluginStatus(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.StickinessConfig": schema_pkg_apis_rollouts_v1alpha1_StickinessConfig(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.StringMatch": schema_pkg_apis_rollouts_v1alpha1_StringMatch(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.TCPRoute": schema_pkg_apis_rollouts_v1alpha1_TCPRoute(ref), @@ -1418,11 +1420,25 @@ func schema_pkg_apis_rollouts_v1alpha1_CanaryStatus(ref common.ReferenceCallback Format: "", }, }, + "stepPluginStatuses": { + SchemaProps: spec.SchemaProps{ + Description: "StepPluginStatuses holds the status of the step plugins executed", + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.StepPluginStatus"), + }, + }, + }, + }, + }, }, }, }, Dependencies: []string{ - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.RolloutAnalysisRunStatus", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.TrafficWeights"}, + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.RolloutAnalysisRunStatus", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.StepPluginStatus", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.TrafficWeights"}, } } @@ -1476,11 +1492,17 @@ func schema_pkg_apis_rollouts_v1alpha1_CanaryStep(ref common.ReferenceCallback) Ref: ref("github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SetMirrorRoute"), }, }, + "plugin": { + SchemaProps: spec.SchemaProps{ + Description: "Plugin defines a plugin to execute for a step", + Ref: ref("github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PluginStep"), + }, + }, }, }, }, Dependencies: []string{ - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.RolloutAnalysis", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.RolloutExperimentStep", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.RolloutPause", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SetCanaryScale", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SetHeaderRoute", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SetMirrorRoute"}, + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.PluginStep", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.RolloutAnalysis", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.RolloutExperimentStep", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.RolloutPause", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SetCanaryScale", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SetHeaderRoute", "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SetMirrorRoute"}, } } @@ -3525,6 +3547,34 @@ func schema_pkg_apis_rollouts_v1alpha1_PingPongSpec(ref common.ReferenceCallback } } +func schema_pkg_apis_rollouts_v1alpha1_PluginStep(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "name": { + SchemaProps: spec.SchemaProps{ + Description: "Name of the hashicorp go-plugin step to query", + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + "config": { + SchemaProps: spec.SchemaProps{ + Description: "Config is the configuration object for the specified plugin", + Type: []string{"string"}, + Format: "byte", + }, + }, + }, + Required: []string{"name"}, + }, + }, + } +} + func schema_pkg_apis_rollouts_v1alpha1_PodTemplateMetadata(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -5182,6 +5232,105 @@ func schema_pkg_apis_rollouts_v1alpha1_SkyWalkingMetric(ref common.ReferenceCall } } +func schema_pkg_apis_rollouts_v1alpha1_StepPluginStatus(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "index": { + SchemaProps: spec.SchemaProps{ + Description: "Index is the matching step index of the executed plugin", + Default: 0, + Type: []string{"integer"}, + Format: "int32", + }, + }, + "name": { + SchemaProps: spec.SchemaProps{ + Description: "Name is the matching step name of the executed plugin", + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + "operation": { + SchemaProps: spec.SchemaProps{ + Description: "Operation is the name of the operation that produced this status", + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + "phase": { + SchemaProps: spec.SchemaProps{ + Description: "Phase is the resulting phase of the operation", + Type: []string{"string"}, + Format: "", + }, + }, + "message": { + SchemaProps: spec.SchemaProps{ + Description: "Message provides details on why the plugin is in its current phase", + Type: []string{"string"}, + Format: "", + }, + }, + "startedAt": { + SchemaProps: spec.SchemaProps{ + Description: "StartedAt indicates when the plugin was first called for the operation", + Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Time"), + }, + }, + "updatedAt": { + SchemaProps: spec.SchemaProps{ + Description: "UpdatedAt indicates when the plugin was last called for the operation", + Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Time"), + }, + }, + "finishedAt": { + SchemaProps: spec.SchemaProps{ + Description: "FinishedAt indicates when the operation was completed", + Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Time"), + }, + }, + "backoff": { + SchemaProps: spec.SchemaProps{ + Description: "Backoff is a duration to wait before trying to execute the operation again if it was not completed", + Type: []string{"string"}, + Format: "", + }, + }, + "executions": { + SchemaProps: spec.SchemaProps{ + Description: "Executions is the number of time the operation was executed", + Type: []string{"integer"}, + Format: "int32", + }, + }, + "disabled": { + SchemaProps: spec.SchemaProps{ + Description: "Disabled indicates if the plugin is globally disabled", + Type: []string{"boolean"}, + Format: "", + }, + }, + "status": { + SchemaProps: spec.SchemaProps{ + Description: "Status holds the internal status of the plugin for this operation", + Type: []string{"string"}, + Format: "byte", + }, + }, + }, + Required: []string{"index", "name", "operation"}, + }, + }, + Dependencies: []string{ + "k8s.io/apimachinery/pkg/apis/meta/v1.Time"}, + } +} + func schema_pkg_apis_rollouts_v1alpha1_StickinessConfig(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ diff --git a/pkg/apis/rollouts/v1alpha1/types.go b/pkg/apis/rollouts/v1alpha1/types.go index 47bc6a0f4b..8886e292be 100755 --- a/pkg/apis/rollouts/v1alpha1/types.go +++ b/pkg/apis/rollouts/v1alpha1/types.go @@ -2,6 +2,7 @@ package v1alpha1 import ( "encoding/json" + fmt "fmt" "strconv" "time" @@ -638,6 +639,19 @@ type CanaryStep struct { // SetMirrorRoutes Mirrors traffic that matches rules to a particular destination // +optional SetMirrorRoute *SetMirrorRoute `json:"setMirrorRoute,omitempty" protobuf:"bytes,8,opt,name=setMirrorRoute"` + // Plugin defines a plugin to execute for a step + Plugin *PluginStep `json:"plugin,omitempty" protobuf:"bytes,9,opt,name=plugin"` +} + +type PluginStep struct { + // Name of the hashicorp go-plugin step to query + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + + // +kubebuilder:validation:Schemaless + // +kubebuilder:pruning:PreserveUnknownFields + // +kubebuilder:validation:Type=object + // Config is the configuration object for the specified plugin + Config json.RawMessage `json:"config,omitempty" protobuf:"bytes,2,opt,name=config"` } type SetMirrorRoute struct { @@ -986,6 +1000,8 @@ type CanaryStatus struct { Weights *TrafficWeights `json:"weights,omitempty" protobuf:"bytes,4,opt,name=weights"` // StablePingPong For the ping-pong feature holds the current stable service, ping or pong StablePingPong PingPongType `json:"stablePingPong,omitempty" protobuf:"bytes,5,opt,name=stablePingPong"` + // StepPluginStatuses holds the status of the step plugins executed + StepPluginStatuses []StepPluginStatus `json:"stepPluginStatuses,omitempty" protobuf:"bytes,6,rep,name=stepPluginStatuses"` } type PingPongType string @@ -1023,6 +1039,78 @@ type RolloutAnalysisRunStatus struct { Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` } +type StepPluginStatus struct { + // Index is the matching step index of the executed plugin + Index int32 `json:"index" protobuf:"bytes,1,name=index"` + // Name is the matching step name of the executed plugin + Name string `json:"name" protobuf:"bytes,2,name=name"` + // Operation is the name of the operation that produced this status + Operation StepPluginOperation `json:"operation" protobuf:"bytes,3,name=operation,casttype=StepPluginOperation"` + // Phase is the resulting phase of the operation + Phase StepPluginPhase `json:"phase,omitempty" protobuf:"bytes,4,opt,name=phase,casttype=StepPluginPhase"` + // Message provides details on why the plugin is in its current phase + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` + // StartedAt indicates when the plugin was first called for the operation + StartedAt *metav1.Time `json:"startedAt,omitempty" protobuf:"bytes,6,name=startedAt"` + // UpdatedAt indicates when the plugin was last called for the operation + UpdatedAt *metav1.Time `json:"updatedAt,omitempty" protobuf:"bytes,7,opt,name=updatedAt"` + // FinishedAt indicates when the operation was completed + FinishedAt *metav1.Time `json:"finishedAt,omitempty" protobuf:"bytes,8,opt,name=finishedAt"` + // Backoff is a duration to wait before trying to execute the operation again if it was not completed + Backoff DurationString `json:"backoff,omitempty" protobuf:"bytes,9,opt,name=backoff,casttype=DurationString"` + // Executions is the number of time the operation was executed + Executions int32 `json:"executions,omitempty" protobuf:"varint,10,opt,name=executions"` + // Disabled indicates if the plugin is globally disabled + Disabled bool `json:"disabled,omitempty" protobuf:"bytes,11,opt,name=disabled"` + + // +kubebuilder:validation:Schemaless + // +kubebuilder:pruning:PreserveUnknownFields + // +kubebuilder:validation:Type=object + // Status holds the internal status of the plugin for this operation + Status json.RawMessage `json:"status,omitempty" protobuf:"bytes,12,opt,name=status"` +} + +// StepPluginPhase is the overall phase of a StepPlugin +type StepPluginPhase string + +// Possible StepPluginPhase values +const ( + // StepPluginPhaseRunning is the phase of a step plugin when it has not completed its execution + StepPluginPhaseRunning StepPluginPhase = "Running" + // StepPluginPhaseSuccessful is the phase of a step plugin when the operation completed successfully + StepPluginPhaseSuccessful StepPluginPhase = "Successful" + // StepPluginPhaseFailed is the phase of a step plugin when the operation completed unsuccessfully + StepPluginPhaseFailed StepPluginPhase = "Failed" + // StepPluginPhaseError is the phase of a step plugin when an unexpected error prevented the completion of the operation + StepPluginPhaseError StepPluginPhase = "Error" +) + +// Validate that the object is a valid phase +func (p StepPluginPhase) Validate() error { + switch p { + case StepPluginPhaseRunning: + case StepPluginPhaseSuccessful: + case StepPluginPhaseFailed: + case StepPluginPhaseError: + default: + return fmt.Errorf("phase '%s' is not valid", p) + } + return nil +} + +// StepPluginOperation is the operation executed by a step plugin +type StepPluginOperation string + +// Possible StepPluginOperation values +const ( + // StepPluginOperationRun is the value for the Run operation + StepPluginOperationRun StepPluginOperation = "Run" + // StepPluginOperationRun is the value for the Terminate operation + StepPluginOperationTerminate StepPluginOperation = "Terminate" + // StepPluginOperationRun is the value for the Abort operation + StepPluginOperationAbort StepPluginOperation = "Abort" +) + type ALBStatus struct { LoadBalancer AwsResourceRef `json:"loadBalancer,omitempty" protobuf:"bytes,1,opt,name=loadBalancer"` CanaryTargetGroup AwsResourceRef `json:"canaryTargetGroup,omitempty" protobuf:"bytes,2,opt,name=canaryTargetGroup"` diff --git a/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go index 2816852447..f2497499fd 100644 --- a/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go @@ -794,6 +794,13 @@ func (in *CanaryStatus) DeepCopyInto(out *CanaryStatus) { *out = new(TrafficWeights) (*in).DeepCopyInto(*out) } + if in.StepPluginStatuses != nil { + in, out := &in.StepPluginStatuses, &out.StepPluginStatuses + *out = make([]StepPluginStatus, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } return } @@ -845,6 +852,11 @@ func (in *CanaryStep) DeepCopyInto(out *CanaryStep) { *out = new(SetMirrorRoute) (*in).DeepCopyInto(*out) } + if in.Plugin != nil { + in, out := &in.Plugin, &out.Plugin + *out = new(PluginStep) + (*in).DeepCopyInto(*out) + } return } @@ -1938,6 +1950,27 @@ func (in *PingPongSpec) DeepCopy() *PingPongSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PluginStep) DeepCopyInto(out *PluginStep) { + *out = *in + if in.Config != nil { + in, out := &in.Config, &out.Config + *out = make(json.RawMessage, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginStep. +func (in *PluginStep) DeepCopy() *PluginStep { + if in == nil { + return nil + } + out := new(PluginStep) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PodTemplateMetadata) DeepCopyInto(out *PodTemplateMetadata) { *out = *in @@ -2767,6 +2800,39 @@ func (in *SkyWalkingMetric) DeepCopy() *SkyWalkingMetric { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StepPluginStatus) DeepCopyInto(out *StepPluginStatus) { + *out = *in + if in.StartedAt != nil { + in, out := &in.StartedAt, &out.StartedAt + *out = (*in).DeepCopy() + } + if in.UpdatedAt != nil { + in, out := &in.UpdatedAt, &out.UpdatedAt + *out = (*in).DeepCopy() + } + if in.FinishedAt != nil { + in, out := &in.FinishedAt, &out.FinishedAt + *out = (*in).DeepCopy() + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = make(json.RawMessage, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StepPluginStatus. +func (in *StepPluginStatus) DeepCopy() *StepPluginStatus { + if in == nil { + return nil + } + out := new(StepPluginStatus) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *StickinessConfig) DeepCopyInto(out *StickinessConfig) { *out = *in diff --git a/pkg/apis/rollouts/validation/validation.go b/pkg/apis/rollouts/validation/validation.go index 8eb7cdac19..6b4ddb45e2 100644 --- a/pkg/apis/rollouts/validation/validation.go +++ b/pkg/apis/rollouts/validation/validation.go @@ -48,8 +48,8 @@ const ( InvalidDurationMessage = "Duration needs to be greater than 0" // InvalidMaxSurgeMaxUnavailable indicates both maxSurge and MaxUnavailable can not be set to zero InvalidMaxSurgeMaxUnavailable = "MaxSurge and MaxUnavailable both can not be zero" - // InvalidStepMessage indicates that a step must have either setWeight or pause set - InvalidStepMessage = "Step must have one of the following set: experiment, setWeight, setCanaryScale or pause" + // InvalidStepMessage indicates that a step must have either experiment, setWeight, setCanaryScale, plugin or pause + InvalidStepMessage = "Step must have one of the following set: experiment, setWeight, setCanaryScale, plugin or pause" // InvalidStrategyMessage indicates that multiple strategies can not be listed InvalidStrategyMessage = "Multiple Strategies can not be listed" // DuplicatedServicesBlueGreenMessage the message to indicate that the rollout uses the same service for the active and preview services @@ -308,9 +308,9 @@ func ValidateRolloutStrategyCanary(rollout *v1alpha1.Rollout, fldPath *field.Pat stepFldPath := fldPath.Child("steps").Index(i) allErrs = append(allErrs, hasMultipleStepsType(step, stepFldPath)...) if step.Experiment == nil && step.Pause == nil && step.SetWeight == nil && step.Analysis == nil && step.SetCanaryScale == nil && - step.SetHeaderRoute == nil && step.SetMirrorRoute == nil { - errVal := fmt.Sprintf("step.Experiment: %t step.Pause: %t step.SetWeight: %t step.Analysis: %t step.SetCanaryScale: %t step.SetHeaderRoute: %t step.SetMirrorRoutes: %t", - step.Experiment == nil, step.Pause == nil, step.SetWeight == nil, step.Analysis == nil, step.SetCanaryScale == nil, step.SetHeaderRoute == nil, step.SetMirrorRoute == nil) + step.SetHeaderRoute == nil && step.SetMirrorRoute == nil && step.Plugin == nil { + errVal := fmt.Sprintf("step.Experiment: %t step.Pause: %t step.SetWeight: %t step.Analysis: %t step.SetCanaryScale: %t step.SetHeaderRoute: %t step.SetMirrorRoute: %t step.Plugin: %t", + step.Experiment == nil, step.Pause == nil, step.SetWeight == nil, step.Analysis == nil, step.SetCanaryScale == nil, step.SetHeaderRoute == nil, step.SetMirrorRoute == nil, step.Plugin == nil) allErrs = append(allErrs, field.Invalid(stepFldPath, errVal, InvalidStepMessage)) } diff --git a/rollout/canary.go b/rollout/canary.go index a3033fea02..422ed3644d 100644 --- a/rollout/canary.go +++ b/rollout/canary.go @@ -87,6 +87,11 @@ func (c *rolloutContext) rolloutCanary() error { return c.syncRolloutStatusCanary() } + err = c.stepPluginContext.reconcile(c) + if err != nil { + return err + } + return c.syncRolloutStatusCanary() } @@ -315,7 +320,7 @@ func (c *rolloutContext) completedCurrentCanaryStep() bool { if c.rollout.Spec.Paused { return false } - currentStep, _ := replicasetutil.GetCurrentCanaryStep(c.rollout) + currentStep, currentStepIndex := replicasetutil.GetCurrentCanaryStep(c.rollout) if currentStep == nil { return false } @@ -344,6 +349,8 @@ func (c *rolloutContext) completedCurrentCanaryStep() bool { return true case currentStep.SetMirrorRoute != nil: return true + case currentStep.Plugin != nil: + return c.stepPluginContext.isStepPluginCompleted(*currentStepIndex, currentStep.Plugin) } return false } @@ -354,6 +361,8 @@ func (c *rolloutContext) syncRolloutStatusCanary() error { newStatus.HPAReplicas = replicasetutil.GetActualReplicaCountForReplicaSets(c.allRSs) newStatus.Selector = metav1.FormatLabelSelector(c.rollout.Spec.Selector) newStatus.Canary.StablePingPong = c.rollout.Status.Canary.StablePingPong + newStatus.Canary.StepPluginStatuses = c.rollout.Status.Canary.StepPluginStatuses + c.stepPluginContext.updateStatus(&newStatus) currentStep, currentStepIndex := replicasetutil.GetCurrentCanaryStep(c.rollout) newStatus.StableRS = c.rollout.Status.StableRS diff --git a/rollout/context.go b/rollout/context.go index f8fa5b5f03..c595a5718b 100644 --- a/rollout/context.go +++ b/rollout/context.go @@ -39,8 +39,9 @@ type rolloutContext struct { currentEx *v1alpha1.Experiment otherExs []*v1alpha1.Experiment - newStatus v1alpha1.RolloutStatus - pauseContext *pauseContext + newStatus v1alpha1.RolloutStatus + pauseContext *pauseContext + stepPluginContext *stepPluginContext // targetsVerified indicates if the pods targets have been verified with underlying LoadBalancer. // This is used in pod-aware flat networks where LoadBalancers target Pods and not Nodes. diff --git a/rollout/controller.go b/rollout/controller.go index 23f7f340dd..8c5c905ef1 100644 --- a/rollout/controller.go +++ b/rollout/controller.go @@ -49,6 +49,7 @@ import ( clientset "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned" informers "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions/rollouts/v1alpha1" listers "github.com/argoproj/argo-rollouts/pkg/client/listers/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/steps/plugin" "github.com/argoproj/argo-rollouts/rollout/trafficrouting" "github.com/argoproj/argo-rollouts/rollout/trafficrouting/ambassador" "github.com/argoproj/argo-rollouts/rollout/trafficrouting/appmesh" @@ -527,6 +528,10 @@ func (c *Controller) newRolloutContext(rollout *v1alpha1.Rollout) (*rolloutConte rollout: rollout, log: logCtx, }, + stepPluginContext: &stepPluginContext{ + resolver: plugin.NewResolver(), + log: logCtx, + }, reconcilerBase: c.reconcilerBase, } if rolloututil.IsFullyPromoted(rollout) && roCtx.pauseContext.IsAborted() { diff --git a/rollout/stepplugin.go b/rollout/stepplugin.go new file mode 100644 index 0000000000..eb777f6c70 --- /dev/null +++ b/rollout/stepplugin.go @@ -0,0 +1,280 @@ +package rollout + +import ( + "fmt" + "time" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/steps/plugin" + "github.com/argoproj/argo-rollouts/utils/conditions" + "github.com/argoproj/argo-rollouts/utils/record" + replicasetutil "github.com/argoproj/argo-rollouts/utils/replicaset" + rolloututil "github.com/argoproj/argo-rollouts/utils/rollout" + log "github.com/sirupsen/logrus" +) + +var ( + defaultControllerErrorBackoff = time.Second * 30 + defaultBackoffDelay = time.Second * 5 +) + +type stepPluginContext struct { + resolver plugin.Resolver + log *log.Entry + + stepPluginStatuses []v1alpha1.StepPluginStatus + hasError bool +} + +func (spc *stepPluginContext) reconcile(c *rolloutContext) error { + rollout := c.rollout.DeepCopy() + spc.stepPluginStatuses = rollout.Status.Canary.StepPluginStatuses + + //On abort, we need to abort all successful previous steps + if c.pauseContext.IsAborted() { + for i := len(spc.stepPluginStatuses) - 1; i >= 0; i-- { + pluginStatus := spc.stepPluginStatuses[i] + if pluginStatus.Operation != v1alpha1.StepPluginOperationRun { + // Only call abort for Run operation. + continue + } + pluginStep := rollout.Spec.Strategy.Canary.Steps[pluginStatus.Index] + if pluginStep.Plugin == nil { + continue + } + + stepPlugin, err := spc.resolver.Resolve(pluginStatus.Index, *pluginStep.Plugin, c.log) + if err != nil { + return spc.handleError(c, fmt.Errorf("could not create step plugin at index %d : %w", pluginStatus.Index, err)) + } + status, err := stepPlugin.Abort(rollout) + if err != nil { + return spc.handleError(c, fmt.Errorf("failed to abort plugin: %w", err)) + } + phaseTransition := spc.updateStepPluginStatus(status) + if phaseTransition { + spc.recordPhase(c, status) + } + } + return nil + } + + // On full promotion, we want to Terminate only the last step still in Running, if any + if rollout.Status.PromoteFull || rolloututil.IsFullyPromoted(rollout) { + stepIndex := spc.getStepToTerminate(rollout) + if stepIndex == nil { + return nil + } + + pluginStep := rollout.Spec.Strategy.Canary.Steps[*stepIndex] + if pluginStep.Plugin == nil { + return nil + } + + stepPlugin, err := spc.resolver.Resolve(*stepIndex, *pluginStep.Plugin, c.log) + if err != nil { + return spc.handleError(c, fmt.Errorf("could not create step plugin at index %d : %w", *stepIndex, err)) + } + + status, err := stepPlugin.Terminate(rollout) + if err != nil { + return spc.handleError(c, fmt.Errorf("failed to terminate plugin: %w", err)) + } + + phaseTransition := spc.updateStepPluginStatus(status) + if phaseTransition { + spc.recordPhase(c, status) + } + return nil + } + + // If we retry an aborted rollout, we need to have a clean status + spc.cleanStatusForRetry(rollout) + + // Normal execution flow of a step plugin + currentStep, currentStepIndex := replicasetutil.GetCurrentCanaryStep(rollout) + if currentStep == nil || currentStep.Plugin == nil { + return nil + } + + if rollout.Status.Phase != v1alpha1.RolloutPhaseProgressing { + spc.log.Debug("Not reconciling step plugin because it is not progressing") + return nil + } + + stepPlugin, err := spc.resolver.Resolve(*currentStepIndex, *currentStep.Plugin, c.log) + if err != nil { + return spc.handleError(c, fmt.Errorf("could not create step plugin at index %d : %w", *currentStepIndex, err)) + } + status, err := stepPlugin.Run(rollout) + if err != nil { + return spc.handleError(c, fmt.Errorf("failed to run plugin: %w", err)) + } + + phaseTransition := spc.updateStepPluginStatus(status) + if phaseTransition { + spc.recordPhase(c, status) + } + + if status == nil || status.Disabled { + return nil + } + + if status.Phase == v1alpha1.StepPluginPhaseRunning || status.Phase == v1alpha1.StepPluginPhaseError { + backoff, err := status.Backoff.Duration() + if err != nil { + return spc.handleError(c, fmt.Errorf("failed to parse backoff duration: %w", err)) + } + + // Get the remaining time until the backoff + a little buffer + remaining := time.Until(status.UpdatedAt.Add(backoff)) + defaultBackoffDelay + c.log.Debugf("queueing up rollout in %s because step plugin phase is %s", remaining, status.Phase) + c.enqueueRolloutAfter(rollout, remaining) + return nil + } + + if status.Phase == v1alpha1.StepPluginPhaseFailed { + c.pauseContext.AddAbort(fmt.Sprintf("Step Plugin %d (%s) failed: %s", status.Index+1, status.Name, status.Message)) + } + + return nil +} + +// handleError handles any error that should not cause the rollout reconciliation to fail +func (spc *stepPluginContext) handleError(c *rolloutContext, e error) error { + spc.hasError = true + + msg := fmt.Sprintf(conditions.RolloutReconciliationErrorMessage, e.Error()) + c.recorder.Warnf(c.rollout, record.EventOptions{EventReason: conditions.RolloutReconciliationErrorReason}, msg) + + c.log.Debugf("queueing up rollout in %s because of transient error", defaultControllerErrorBackoff) + c.enqueueRolloutAfter(c.rollout, defaultControllerErrorBackoff) + + return nil +} + +func (spc *stepPluginContext) recordPhase(c *rolloutContext, status *v1alpha1.StepPluginStatus) { + if status.Disabled || status.Operation == v1alpha1.StepPluginOperationRun && status.Phase == v1alpha1.StepPluginPhaseSuccessful { + // If the run status is successful, do not record event because the controller will record the RolloutStepCompleted + return + } + + msg := fmt.Sprintf(conditions.StepPluginTransitionRunMessage, status.Name, status.Index+1, status.Phase) + if status.Operation == v1alpha1.StepPluginOperationAbort { + msg = fmt.Sprintf(conditions.StepPluginTransitionAbortMessage, status.Name, status.Index+1, status.Phase) + } else if status.Operation == v1alpha1.StepPluginOperationTerminate { + msg = fmt.Sprintf(conditions.StepPluginTransitionTerminateMessage, status.Name, status.Index+1, status.Phase) + } + + if status.Phase == v1alpha1.StepPluginPhaseError || status.Phase == v1alpha1.StepPluginPhaseFailed { + c.recorder.Warnf(c.rollout, record.EventOptions{EventReason: conditions.StepPluginTransitionReason}, msg) + } else { + c.recorder.Eventf(c.rollout, record.EventOptions{EventReason: conditions.StepPluginTransitionReason}, msg) + } +} + +func (spc *stepPluginContext) updateStatus(status *v1alpha1.RolloutStatus) { + if spc.stepPluginStatuses != nil { + status.Canary.StepPluginStatuses = spc.stepPluginStatuses + } +} + +func (spc *stepPluginContext) isStepPluginCompleted(stepIndex int32, _ *v1alpha1.PluginStep) bool { + if spc.hasError { + // If there was a transient error during the reconcile, we should retry + return false + } + + runStatus := spc.findCurrentStepStatus(stepIndex, v1alpha1.StepPluginOperationRun) + if runStatus != nil && runStatus.Disabled { + return true + } + + isRunning := runStatus != nil && runStatus.Phase == v1alpha1.StepPluginPhaseRunning + if isRunning { + terminateStatus := spc.findCurrentStepStatus(stepIndex, v1alpha1.StepPluginOperationTerminate) + abortStatus := spc.findCurrentStepStatus(stepIndex, v1alpha1.StepPluginOperationAbort) + isRunning = terminateStatus == nil && abortStatus == nil + } + return runStatus != nil && + ((!isRunning && runStatus.Phase == v1alpha1.StepPluginPhaseRunning) || + runStatus.Phase == v1alpha1.StepPluginPhaseFailed || + runStatus.Phase == v1alpha1.StepPluginPhaseSuccessful) +} + +func (spc *stepPluginContext) findCurrentStepStatus(stepIndex int32, operation v1alpha1.StepPluginOperation) *v1alpha1.StepPluginStatus { + for _, s := range spc.stepPluginStatuses { + if s.Index == stepIndex && s.Operation == operation { + return &s + } + } + return nil +} + +func (spc *stepPluginContext) updateStepPluginStatus(status *v1alpha1.StepPluginStatus) bool { + phaseChanged := false + if status == nil { + return phaseChanged + } + + // Update new status and preserve order + statusUpdated := false + for i, s := range spc.stepPluginStatuses { + if !statusUpdated && s.Index == status.Index && s.Operation == status.Operation { + spc.stepPluginStatuses[i] = *status + statusUpdated = true + phaseChanged = s.Phase != status.Phase + break + } + } + if !statusUpdated { + spc.stepPluginStatuses = append(spc.stepPluginStatuses, *status) + phaseChanged = true + } + + return phaseChanged +} + +func (spc *stepPluginContext) getStepToTerminate(rollout *v1alpha1.Rollout) *int32 { + for i := len(rollout.Status.Canary.StepPluginStatuses) - 1; i >= 0; i-- { + pluginStep := rollout.Status.Canary.StepPluginStatuses[i] + + if pluginStep.Operation == v1alpha1.StepPluginOperationTerminate && pluginStep.Phase == v1alpha1.StepPluginPhaseSuccessful { + // last running step is already terminated + return nil + } + + if pluginStep.Operation == v1alpha1.StepPluginOperationRun && pluginStep.Phase == v1alpha1.StepPluginPhaseRunning { + // found the last running step + return &pluginStep.Index + } + } + return nil +} + +// cleanStatusForRetry is expected to be called on a non-aborted rollout. +// It validates that stepPluginStatuses does not contain outdated results, and remove them +// if it does. +func (spc *stepPluginContext) cleanStatusForRetry(rollout *v1alpha1.Rollout) { + if len(spc.stepPluginStatuses) == 0 || rollout.Status.Abort { + return + } + + currentStep, currentStepIndex := replicasetutil.GetCurrentCanaryStep(rollout) + if currentStep == nil || int(*currentStepIndex) > 0 { + // Nothing to clean if rollout steps are completed or in progress + return + } + + // if we are at step 0, it could be either that we haven't started, or we are progressing. + // if step 0 is a plugin, check if it is completed. In that case, we know that we should be at step > 0 + // abd we are retrying + shouldCleanCurrentStatus := true + if currentStep.Plugin != nil { + shouldCleanCurrentStatus = spc.isStepPluginCompleted(*currentStepIndex, currentStep.Plugin) + } + + if shouldCleanCurrentStatus { + spc.stepPluginStatuses = []v1alpha1.StepPluginStatus{} + } +} diff --git a/rollout/stepplugin_test.go b/rollout/stepplugin_test.go new file mode 100644 index 0000000000..b3959b05e1 --- /dev/null +++ b/rollout/stepplugin_test.go @@ -0,0 +1,896 @@ +package rollout + +import ( + "encoding/json" + "fmt" + "testing" + "time" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/steps/plugin/mocks" + logutil "github.com/argoproj/argo-rollouts/utils/log" + "github.com/argoproj/argo-rollouts/utils/record" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/utils/ptr" +) + +func newStepPluginRollout() *v1alpha1.Rollout { + steps := []v1alpha1.CanaryStep{ + { + Plugin: &v1alpha1.PluginStep{ + Name: "test-plugin", + }, + }, + } + return newCanaryRollout("foo", 3, nil, steps, ptr.To(int32(0)), intstr.FromInt(1), intstr.FromInt(0)) +} + +func newStepPluginStatus(operation v1alpha1.StepPluginOperation, phase v1alpha1.StepPluginPhase) *v1alpha1.StepPluginStatus { + now := metav1.Now() + status := &v1alpha1.StepPluginStatus{ + Index: 0, + Name: "test-plugin", + Message: "this is a default message", + Status: json.RawMessage("value"), + Operation: operation, + Phase: phase, + StartedAt: &now, + UpdatedAt: &now, + Executions: 1, + Backoff: "0s", + } + return status +} + +func Test_stepPluginContext_reconcile_ReconciliationError(t *testing.T) { + stepPluginResolver := mocks.NewResolver(t) + r := newStepPluginRollout() + logCtx := logutil.WithRollout(r) + roCtx := &rolloutContext{ + rollout: r, + log: logutil.WithRollout(r), + reconcilerBase: reconcilerBase{ + enqueueRollout: func(obj any) { t.Error("enqueueRollout should not be called") }, + enqueueRolloutAfter: func(obj any, duration time.Duration) { t.Error("enqueueRolloutAfter should not be called") }, + recorder: record.NewFakeEventRecorder(), + }, + pauseContext: &pauseContext{ + rollout: r, + log: logCtx, + }, + stepPluginContext: &stepPluginContext{ + resolver: stepPluginResolver, + log: logCtx, + }, + } + + stepPluginResolver.On("Resolve", mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("test error")) + + var requeuedAfter time.Duration + roCtx.enqueueRolloutAfter = func(obj any, duration time.Duration) { + requeuedAfter = duration + } + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + assert.Equal(t, roCtx.rollout.Status.Canary.StepPluginStatuses, roCtx.stepPluginContext.stepPluginStatuses) + assert.Equal(t, defaultControllerErrorBackoff, requeuedAfter) + assert.True(t, roCtx.stepPluginContext.hasError) + +} + +func Test_stepPluginContext_reconcile_SuccessfulReconciliation(t *testing.T) { + setup := func(t *testing.T) (*rolloutContext, *v1alpha1.StepPluginStatus) { + stepPluginResolver := mocks.NewResolver(t) + stepPluginMock := mocks.NewStepPlugin(t) + stepPluginResolver.On("Resolve", int32(0), mock.Anything, mock.Anything).Return(stepPluginMock, nil) + + r := newStepPluginRollout() + logCtx := logutil.WithRollout(r) + roCtx := &rolloutContext{ + rollout: r, + log: logutil.WithRollout(r), + reconcilerBase: reconcilerBase{ + enqueueRollout: func(obj any) { t.Error("enqueueRollout should not be called") }, + enqueueRolloutAfter: func(obj any, duration time.Duration) { t.Error("enqueueRolloutAfter should not be called") }, + recorder: record.NewFakeEventRecorder(), + }, + pauseContext: &pauseContext{ + rollout: r, + log: logCtx, + }, + stepPluginContext: &stepPluginContext{ + resolver: stepPluginResolver, + log: logCtx, + }, + } + + runStatus := newStepPluginStatus(v1alpha1.StepPluginOperationRun, v1alpha1.StepPluginPhaseSuccessful) + stepPluginMock.On("Run", r).Return(runStatus, nil) + return roCtx, runStatus + } + + t.Run("Status is added when not present", func(t *testing.T) { + roCtx, runStatus := setup(t) + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 1) + assert.EqualExportedValues(t, roCtx.stepPluginContext.stepPluginStatuses[0], *runStatus) + }) + t.Run("Status is updated when existing", func(t *testing.T) { + roCtx, runStatus := setup(t) + + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: runStatus.Index, + Name: runStatus.Name, + Message: "this is the existing status", + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseRunning, + }, + } + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 1) + assert.EqualExportedValues(t, roCtx.stepPluginContext.stepPluginStatuses[0], *runStatus) + }) + t.Run("Status order is preserved when updating", func(t *testing.T) { + roCtx, runStatus := setup(t) + + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: 123, + Name: runStatus.Name, + Operation: v1alpha1.StepPluginOperationRun, + }, + { + Index: runStatus.Index, + Name: runStatus.Name, + Operation: v1alpha1.StepPluginOperationRun, + }, + { + Index: 456, + Name: "other", + Operation: v1alpha1.StepPluginOperationRun, + }, + } + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 3) + assert.Equal(t, int32(123), roCtx.stepPluginContext.stepPluginStatuses[0].Index) + assert.Equal(t, runStatus.Index, roCtx.stepPluginContext.stepPluginStatuses[1].Index) + assert.Equal(t, int32(456), roCtx.stepPluginContext.stepPluginStatuses[2].Index) + }) +} + +func Test_stepPluginContext_reconcile_RunningReconciliation(t *testing.T) { + setup := func(t *testing.T, phase v1alpha1.StepPluginPhase, backoff *time.Duration) (*rolloutContext, *v1alpha1.StepPluginStatus) { + stepPluginResolver := mocks.NewResolver(t) + stepPluginMock := mocks.NewStepPlugin(t) + stepPluginResolver.On("Resolve", int32(0), mock.Anything, mock.Anything).Return(stepPluginMock, nil) + + r := newStepPluginRollout() + logCtx := logutil.WithRollout(r) + roCtx := &rolloutContext{ + rollout: r, + log: logutil.WithRollout(r), + reconcilerBase: reconcilerBase{ + enqueueRollout: func(obj any) { t.Error("enqueueRollout should not be called") }, + enqueueRolloutAfter: func(obj any, duration time.Duration) {}, + recorder: record.NewFakeEventRecorder(), + }, + pauseContext: &pauseContext{ + rollout: r, + log: logCtx, + }, + stepPluginContext: &stepPluginContext{ + resolver: stepPluginResolver, + log: logCtx, + }, + } + + runStatus := newStepPluginStatus(v1alpha1.StepPluginOperationRun, phase) + if backoff != nil { + runStatus.Backoff = v1alpha1.DurationString(backoff.String()) + } + stepPluginMock.On("Run", r).Return(runStatus, nil) + return roCtx, runStatus + } + + t.Run("Status is added when not present", func(t *testing.T) { + roCtx, runStatus := setup(t, v1alpha1.StepPluginPhaseRunning, nil) + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 1) + assert.EqualExportedValues(t, roCtx.stepPluginContext.stepPluginStatuses[0], *runStatus) + }) + t.Run("Status is updated when existing", func(t *testing.T) { + roCtx, runStatus := setup(t, v1alpha1.StepPluginPhaseRunning, nil) + + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: runStatus.Index, + Name: runStatus.Name, + Message: "this is the existing status", + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseRunning, + }, + } + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 1) + assert.EqualExportedValues(t, roCtx.stepPluginContext.stepPluginStatuses[0], *runStatus) + }) + t.Run("Rollout is added to the queue", func(t *testing.T) { + expectedRequeueAfter := 123 * time.Second + roCtx, _ := setup(t, v1alpha1.StepPluginPhaseRunning, &expectedRequeueAfter) + + var requeuedAfter time.Duration + roCtx.enqueueRolloutAfter = func(obj any, duration time.Duration) { + requeuedAfter = duration + } + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + assert.GreaterOrEqual(t, requeuedAfter, expectedRequeueAfter) + assert.LessOrEqual(t, requeuedAfter, expectedRequeueAfter+defaultBackoffDelay) + }) +} + +func Test_stepPluginContext_reconcile_FailedReconciliation(t *testing.T) { + setup := func(t *testing.T, phase v1alpha1.StepPluginPhase) (*rolloutContext, *v1alpha1.StepPluginStatus) { + stepPluginResolver := mocks.NewResolver(t) + stepPluginMock := mocks.NewStepPlugin(t) + stepPluginResolver.On("Resolve", int32(0), mock.Anything, mock.Anything).Return(stepPluginMock, nil) + + r := newStepPluginRollout() + logCtx := logutil.WithRollout(r) + roCtx := &rolloutContext{ + rollout: r, + log: logCtx, + reconcilerBase: reconcilerBase{ + enqueueRollout: func(obj any) { t.Error("enqueueRollout should not be called") }, + enqueueRolloutAfter: func(obj any, duration time.Duration) { t.Error("enqueueRolloutAfter should not be called") }, + recorder: record.NewFakeEventRecorder(), + }, + pauseContext: &pauseContext{ + rollout: r, + log: logCtx, + }, + stepPluginContext: &stepPluginContext{ + resolver: stepPluginResolver, + log: logCtx, + }, + } + + runStatus := newStepPluginStatus(v1alpha1.StepPluginOperationRun, phase) + stepPluginMock.On("Run", r).Return(runStatus, nil) + return roCtx, runStatus + } + + t.Run("Status is added when not present", func(t *testing.T) { + roCtx, runStatus := setup(t, v1alpha1.StepPluginPhaseFailed) + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 1) + assert.EqualExportedValues(t, roCtx.stepPluginContext.stepPluginStatuses[0], *runStatus) + }) + t.Run("Status is updated when existing", func(t *testing.T) { + roCtx, runStatus := setup(t, v1alpha1.StepPluginPhaseFailed) + + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: runStatus.Index, + Name: runStatus.Name, + Message: "this is the existing status", + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseRunning, + }, + } + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 1) + assert.EqualExportedValues(t, roCtx.stepPluginContext.stepPluginStatuses[0], *runStatus) + }) + t.Run("Rollout is aborted", func(t *testing.T) { + roCtx, failedStatus := setup(t, v1alpha1.StepPluginPhaseFailed) + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + assert.True(t, roCtx.pauseContext.IsAborted()) + assert.Contains(t, roCtx.pauseContext.abortMessage, failedStatus.Message) + }) +} + +func Test_stepPluginContext_reconcile_FullyPromoted(t *testing.T) { + newRolloutContext := func(t *testing.T) *rolloutContext { + r := newStepPluginRollout() + + logCtx := logutil.WithRollout(r) + roCtx := &rolloutContext{ + rollout: r, + log: logCtx, + reconcilerBase: reconcilerBase{ + enqueueRollout: func(obj any) { t.Error("enqueueRollout should not be called") }, + enqueueRolloutAfter: func(obj any, duration time.Duration) { t.Error("enqueueRolloutAfter should not be called") }, + recorder: record.NewFakeEventRecorder(), + }, + pauseContext: &pauseContext{ + rollout: r, + log: logCtx, + }, + stepPluginContext: &stepPluginContext{ + log: logCtx, + }, + } + return roCtx + } + setup := func(t *testing.T) (*rolloutContext, *mocks.StepPlugin) { + stepPluginResolver := mocks.NewResolver(t) + stepPluginMock := mocks.NewStepPlugin(t) + stepPluginResolver.On("Resolve", int32(0), mock.Anything, mock.Anything).Return(stepPluginMock, nil) + + roCtx := newRolloutContext(t) + roCtx.stepPluginContext.resolver = stepPluginResolver + + return roCtx, stepPluginMock + } + + t.Run("Rollout is Terminated on full promotion", func(t *testing.T) { + roCtx, stepPluginMock := setup(t) + roCtx.rollout.Status.PromoteFull = true + roCtx.rollout.Status.StableRS = "stable-value" + roCtx.rollout.Status.CurrentPodHash = "current-value" + + runStatus := newStepPluginStatus(v1alpha1.StepPluginOperationTerminate, v1alpha1.StepPluginPhaseSuccessful) + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: runStatus.Index, + Name: runStatus.Name, + Phase: v1alpha1.StepPluginPhaseRunning, + Operation: v1alpha1.StepPluginOperationRun, + }, + } + + stepPluginMock.On("Terminate", mock.Anything).Return(runStatus, nil) + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 2) + assert.EqualExportedValues(t, roCtx.stepPluginContext.stepPluginStatuses[1], *runStatus) + }) + + t.Run("Rollout is Terminated on fully promoted", func(t *testing.T) { + roCtx, stepPluginMock := setup(t) + roCtx.rollout.Status.PromoteFull = false + roCtx.rollout.Status.StableRS = "stable-value" + roCtx.rollout.Status.CurrentPodHash = "stable-value" + + runStatus := newStepPluginStatus(v1alpha1.StepPluginOperationTerminate, v1alpha1.StepPluginPhaseSuccessful) + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: runStatus.Index, + Name: runStatus.Name, + Phase: v1alpha1.StepPluginPhaseRunning, + Operation: v1alpha1.StepPluginOperationRun, + }, + } + + stepPluginMock.On("Terminate", mock.Anything).Return(runStatus, nil) + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 2) + assert.EqualExportedValues(t, roCtx.stepPluginContext.stepPluginStatuses[1], *runStatus) + }) + + t.Run("Rollout is Reconciled when already terminated", func(t *testing.T) { + roCtx := newRolloutContext(t) + roCtx.rollout.Status.PromoteFull = false + roCtx.rollout.Status.StableRS = "stable-value" + roCtx.rollout.Status.CurrentPodHash = "stable-value" + roCtx.rollout.Status.CurrentStepIndex = ptr.To(int32(1)) + + runStatus := newStepPluginStatus(v1alpha1.StepPluginOperationTerminate, v1alpha1.StepPluginPhaseSuccessful) + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: runStatus.Index, + Name: runStatus.Name, + Phase: v1alpha1.StepPluginPhaseRunning, + Operation: v1alpha1.StepPluginOperationRun, + }, + { + Index: runStatus.Index, + Name: runStatus.Name, + Phase: v1alpha1.StepPluginPhaseSuccessful, + Operation: v1alpha1.StepPluginOperationTerminate, + }, + } + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 2) + assert.EqualExportedValues(t, roCtx.rollout.Status.Canary.StepPluginStatuses[1], roCtx.stepPluginContext.stepPluginStatuses[1]) + }) + + t.Run("Reconciliation error", func(t *testing.T) { + roCtx, stepPluginMock := setup(t) + roCtx.rollout.Status.PromoteFull = true + + runStatus := newStepPluginStatus(v1alpha1.StepPluginOperationTerminate, v1alpha1.StepPluginPhaseSuccessful) + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: runStatus.Index, + Name: runStatus.Name, + Phase: v1alpha1.StepPluginPhaseRunning, + Operation: v1alpha1.StepPluginOperationRun, + }, + } + + var requeuedAfter time.Duration + roCtx.enqueueRolloutAfter = func(obj any, duration time.Duration) { + requeuedAfter = duration + } + + stepPluginMock.On("Terminate", mock.Anything).Return(nil, fmt.Errorf("error")) + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 1) + assert.Equal(t, roCtx.rollout.Status.Canary.StepPluginStatuses, roCtx.stepPluginContext.stepPluginStatuses) + assert.Equal(t, defaultControllerErrorBackoff, requeuedAfter) + assert.True(t, roCtx.stepPluginContext.hasError) + }) +} + +func Test_stepPluginContext_reconcile_Aborted(t *testing.T) { + setup := func(t *testing.T) (*rolloutContext, *mocks.Resolver) { + stepPluginResolver := mocks.NewResolver(t) + + r := newStepPluginRollout() + r.Status.Abort = true + + logCtx := logutil.WithRollout(r) + roCtx := &rolloutContext{ + rollout: r, + log: logCtx, + reconcilerBase: reconcilerBase{ + enqueueRollout: func(obj any) { t.Error("enqueueRollout should not be called") }, + enqueueRolloutAfter: func(obj any, duration time.Duration) { t.Error("enqueueRolloutAfter should not be called") }, + recorder: record.NewFakeEventRecorder(), + }, + pauseContext: &pauseContext{ + rollout: r, + log: logCtx, + }, + stepPluginContext: &stepPluginContext{ + resolver: stepPluginResolver, + log: logCtx, + }, + } + + return roCtx, stepPluginResolver + } + t.Run("Abort called on each plugin step", func(t *testing.T) { + roCtx, stepPluginResolver := setup(t) + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: 0, + Name: "test-plugin", + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseSuccessful, + }, + { + Index: 2, + Name: "test-plugin", + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseRunning, + }, + } + roCtx.rollout.Spec.Strategy.Canary.Steps = []v1alpha1.CanaryStep{ + { + Plugin: &v1alpha1.PluginStep{ + Name: "test-plugin", + }, + }, + { + Pause: &v1alpha1.RolloutPause{}, // Not a step plugin + }, + { + Plugin: &v1alpha1.PluginStep{ + Name: "test-plugin", + }, + }, + } + roCtx.rollout.Status.CurrentStepIndex = int32Ptr(0) + + expectedAbortStatus := []*v1alpha1.StepPluginStatus{} + for _, stepIndex := range []int32{0, 2} { + abortStatus := &v1alpha1.StepPluginStatus{ + Index: stepIndex, + Name: "test-plugin", + Operation: v1alpha1.StepPluginOperationAbort, + Phase: v1alpha1.StepPluginPhaseSuccessful, + } + stepPluginMock := mocks.NewStepPlugin(t) + stepPluginResolver.On("Resolve", stepIndex, mock.Anything, mock.Anything).Return(stepPluginMock, nil) + stepPluginMock.On("Abort", mock.Anything).Return(abortStatus, nil) + expectedAbortStatus = append(expectedAbortStatus, abortStatus) + } + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 4) + assert.EqualExportedValues(t, roCtx.rollout.Status.Canary.StepPluginStatuses[0], roCtx.stepPluginContext.stepPluginStatuses[0]) + assert.EqualExportedValues(t, roCtx.rollout.Status.Canary.StepPluginStatuses[1], roCtx.stepPluginContext.stepPluginStatuses[1]) + assert.EqualExportedValues(t, *expectedAbortStatus[1], roCtx.stepPluginContext.stepPluginStatuses[2]) + assert.EqualExportedValues(t, *expectedAbortStatus[0], roCtx.stepPluginContext.stepPluginStatuses[3]) + }) + t.Run("Rollout is reconciled when already aborted", func(t *testing.T) { + roCtx, stepPluginResolver := setup(t) + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: 0, + Name: "test-plugin", + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseSuccessful, + }, + { + Index: 2, + Name: "test-plugin", + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseRunning, + }, + { + Index: 2, + Name: "test-plugin", + Operation: v1alpha1.StepPluginOperationAbort, + Phase: v1alpha1.StepPluginPhaseSuccessful, + }, + { + Index: 0, + Name: "test-plugin", + Operation: v1alpha1.StepPluginOperationAbort, + Phase: v1alpha1.StepPluginPhaseSuccessful, + }, + } + roCtx.rollout.Spec.Strategy.Canary.Steps = []v1alpha1.CanaryStep{ + { + Plugin: &v1alpha1.PluginStep{ + Name: "test-plugin", + }, + }, + { + Pause: &v1alpha1.RolloutPause{}, // Not a step plugin + }, + { + Plugin: &v1alpha1.PluginStep{ + Name: "test-plugin", + }, + }, + } + roCtx.rollout.Status.CurrentStepIndex = int32Ptr(0) + + for _, stepIndex := range []int32{0, 2} { + stepPluginMock := mocks.NewStepPlugin(t) + stepPluginResolver.On("Resolve", stepIndex, mock.Anything, mock.Anything).Return(stepPluginMock, nil) + stepPluginMock.On("Abort", mock.Anything).Return(nil, nil) + } + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 4) + assert.Equal(t, roCtx.rollout.Status.Canary.StepPluginStatuses, roCtx.stepPluginContext.stepPluginStatuses) + }) + t.Run("Reconciliation error", func(t *testing.T) { + roCtx, stepPluginResolver := setup(t) + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: 0, + Name: "test-plugin", + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseSuccessful, + }, + } + roCtx.rollout.Status.CurrentStepIndex = int32Ptr(0) + + runStatus := newStepPluginStatus(v1alpha1.StepPluginOperationTerminate, v1alpha1.StepPluginPhaseSuccessful) + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: runStatus.Index, + Name: runStatus.Name, + Phase: v1alpha1.StepPluginPhaseRunning, + Operation: v1alpha1.StepPluginOperationRun, + }, + } + + var requeuedAfter time.Duration + roCtx.enqueueRolloutAfter = func(obj any, duration time.Duration) { + requeuedAfter = duration + } + + stepPluginMock := mocks.NewStepPlugin(t) + stepPluginResolver.On("Resolve", int32(0), mock.Anything, mock.Anything).Return(stepPluginMock, nil) + stepPluginMock.On("Abort", mock.Anything).Return(nil, fmt.Errorf("error")) + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 1) + assert.Equal(t, roCtx.rollout.Status.Canary.StepPluginStatuses, roCtx.stepPluginContext.stepPluginStatuses) + assert.Equal(t, defaultControllerErrorBackoff, requeuedAfter) + assert.True(t, roCtx.stepPluginContext.hasError) + }) +} + +func Test_stepPluginContext_reconcile_Retry_After_Abort(t *testing.T) { + setup := func(t *testing.T) (*rolloutContext, *mocks.Resolver) { + stepPluginResolver := mocks.NewResolver(t) + + r := newStepPluginRollout() + r.Status.Abort = true + + logCtx := logutil.WithRollout(r) + roCtx := &rolloutContext{ + rollout: r, + log: logCtx, + reconcilerBase: reconcilerBase{ + enqueueRollout: func(obj any) { t.Error("enqueueRollout should not be called") }, + enqueueRolloutAfter: func(obj any, duration time.Duration) { t.Error("enqueueRolloutAfter should not be called") }, + recorder: record.NewFakeEventRecorder(), + }, + pauseContext: &pauseContext{ + rollout: r, + log: logCtx, + }, + stepPluginContext: &stepPluginContext{ + resolver: stepPluginResolver, + log: logCtx, + }, + } + + return roCtx, stepPluginResolver + } + + t.Run("Rollout is retried when already aborted", func(t *testing.T) { + roCtx, stepPluginResolver := setup(t) + roCtx.rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: 0, + Name: "test-plugin", + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseSuccessful, + }, + { + Index: 2, + Name: "test-plugin", + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseRunning, + }, + { + Index: 2, + Name: "test-plugin", + Operation: v1alpha1.StepPluginOperationAbort, + Phase: v1alpha1.StepPluginPhaseSuccessful, + }, + { + Index: 0, + Name: "test-plugin", + Operation: v1alpha1.StepPluginOperationAbort, + Phase: v1alpha1.StepPluginPhaseSuccessful, + }, + } + roCtx.rollout.Spec.Strategy.Canary.Steps = []v1alpha1.CanaryStep{ + { + Plugin: &v1alpha1.PluginStep{ + Name: "test-plugin", + }, + }, + { + Pause: &v1alpha1.RolloutPause{}, + }, + { + Plugin: &v1alpha1.PluginStep{ + Name: "test-plugin", + }, + }, + } + roCtx.rollout.Status.CurrentStepIndex = int32Ptr(0) + roCtx.rollout.Status.Abort = false + roCtx.rollout.Status.AbortedAt = nil + + stepPluginMock := mocks.NewStepPlugin(t) + stepPluginResolver.On("Resolve", int32(0), mock.Anything, mock.Anything).Return(stepPluginMock, nil) + runStatus := newStepPluginStatus(v1alpha1.StepPluginOperationRun, v1alpha1.StepPluginPhaseSuccessful) + stepPluginMock.On("Run", roCtx.rollout).Return(runStatus, nil) + + err := roCtx.stepPluginContext.reconcile(roCtx) + + require.NoError(t, err) + require.Len(t, roCtx.stepPluginContext.stepPluginStatuses, 1) + assert.Equal(t, *runStatus, roCtx.stepPluginContext.stepPluginStatuses[0]) + }) +} + +func Test_stepPluginContext_isStepPluginCompleted(t *testing.T) { + newRolloutContext := func(statuses []*v1alpha1.StepPluginStatus, hasError bool) *rolloutContext { + r := newStepPluginRollout() + logCtx := logutil.WithRollout(r) + roCtx := &rolloutContext{ + rollout: r, + log: logCtx, + stepPluginContext: &stepPluginContext{ + log: logCtx, + }, + } + + for _, s := range statuses { + roCtx.stepPluginContext.stepPluginStatuses = append(roCtx.stepPluginContext.stepPluginStatuses, *s) + } + roCtx.stepPluginContext.hasError = hasError + return roCtx + } + + tests := []struct { + name string + statuses []*v1alpha1.StepPluginStatus + index int32 + hasError bool + want bool + }{ + { + name: "Status is not set", + statuses: nil, + index: 0, + want: false, + }, + { + name: "Phase is successful", + statuses: []*v1alpha1.StepPluginStatus{ + {Index: 0, Operation: v1alpha1.StepPluginOperationRun, Phase: v1alpha1.StepPluginPhaseSuccessful}, + }, + index: 0, + want: true, + }, + { + name: "With transient error", + statuses: []*v1alpha1.StepPluginStatus{ + {Index: 0, Operation: v1alpha1.StepPluginOperationRun, Phase: v1alpha1.StepPluginPhaseSuccessful}, + }, + index: 0, + hasError: true, + want: false, + }, + { + name: "Phase is failed", + statuses: []*v1alpha1.StepPluginStatus{ + {Index: 0, Operation: v1alpha1.StepPluginOperationRun, Phase: v1alpha1.StepPluginPhaseFailed}, + }, + index: 0, + want: true, + }, + { + name: "Phase is error", + statuses: []*v1alpha1.StepPluginStatus{ + {Index: 0, Operation: v1alpha1.StepPluginOperationRun, Phase: v1alpha1.StepPluginPhaseError}, + }, + index: 0, + want: false, + }, + { + name: "Phase is running", + statuses: []*v1alpha1.StepPluginStatus{ + {Index: 0, Operation: v1alpha1.StepPluginOperationRun, Phase: v1alpha1.StepPluginPhaseRunning}, + }, + index: 0, + want: false, + }, + { + name: "Phase is running, but terminated", + statuses: []*v1alpha1.StepPluginStatus{ + {Index: 0, Operation: v1alpha1.StepPluginOperationRun, Phase: v1alpha1.StepPluginPhaseRunning}, + {Index: 0, Operation: v1alpha1.StepPluginOperationTerminate}, + }, + index: 0, + want: true, + }, + { + name: "Phase is running, but aborted", + statuses: []*v1alpha1.StepPluginStatus{ + {Index: 0, Operation: v1alpha1.StepPluginOperationRun, Phase: v1alpha1.StepPluginPhaseRunning}, + {Index: 0, Operation: v1alpha1.StepPluginOperationTerminate}, + }, + index: 0, + want: true, + }, + { + name: "status for index is missing", + statuses: []*v1alpha1.StepPluginStatus{ + {Index: 1, Operation: v1alpha1.StepPluginOperationRun, Phase: v1alpha1.StepPluginPhaseSuccessful}, + }, + index: 0, + want: false, + }, + { + name: "status is disabled", + statuses: []*v1alpha1.StepPluginStatus{ + {Index: 0, Operation: v1alpha1.StepPluginOperationRun, Disabled: true}, + }, + index: 0, + want: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := newRolloutContext(tt.statuses, tt.hasError) + if got := c.stepPluginContext.isStepPluginCompleted(tt.index, c.rollout.Spec.Strategy.Canary.Steps[tt.index].Plugin); got != tt.want { + t.Errorf("rolloutContext.isStepPluginCompleted() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_stepPluginContext_updateStatus(t *testing.T) { + + t.Run("status is not", func(t *testing.T) { + stepPluginContext := stepPluginContext{ + stepPluginStatuses: nil, + } + + expected := []v1alpha1.StepPluginStatus{} + status := &v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: expected, + }, + } + + stepPluginContext.updateStatus(status) + + assert.Equal(t, expected, status.Canary.StepPluginStatuses) + }) + t.Run("status is set", func(t *testing.T) { + + expected := []v1alpha1.StepPluginStatus{{}} + + stepPluginContext := stepPluginContext{ + stepPluginStatuses: expected, + } + + status := &v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{}, + }, + } + + stepPluginContext.updateStatus(status) + + assert.Equal(t, expected, status.Canary.StepPluginStatuses) + }) +} diff --git a/rollout/steps/plugin/client/client.go b/rollout/steps/plugin/client/client.go new file mode 100644 index 0000000000..584f9bbd19 --- /dev/null +++ b/rollout/steps/plugin/client/client.go @@ -0,0 +1,105 @@ +package client + +import ( + "fmt" + "os/exec" + "sync" + + "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" + "github.com/argoproj/argo-rollouts/utils/plugin" + "github.com/argoproj/argo-rollouts/utils/plugin/types" + goPlugin "github.com/hashicorp/go-plugin" +) + +type stepPlugin struct { + client map[string]*goPlugin.Client + plugin map[string]rpc.StepPlugin +} + +var pluginClients *stepPlugin +var once sync.Once +var mutex sync.Mutex + +var handshakeConfig = goPlugin.HandshakeConfig{ + ProtocolVersion: 1, + MagicCookieKey: "ARGO_ROLLOUTS_RPC_PLUGIN", + MagicCookieValue: "step", +} + +// pluginMap is the map of plugins we can dispense. +var pluginMap = map[string]goPlugin.Plugin{ + "RpcStepPlugin": &rpc.RpcStepPlugin{}, +} + +// GetPlugin returns a singleton plugin client for the given plugin. Calling this multiple times +// returns the same plugin client instance for the plugin name defined in the rollout object. +func GetPlugin(pluginName string) (rpc.StepPlugin, error) { + once.Do(func() { + pluginClients = &stepPlugin{ + client: make(map[string]*goPlugin.Client), + plugin: make(map[string]rpc.StepPlugin), + } + }) + plugin, err := pluginClients.startPlugin(pluginName) + if err != nil { + return nil, fmt.Errorf("unable to start plugin system: %w", err) + } + return plugin, nil +} + +func (t *stepPlugin) startPlugin(pluginName string) (rpc.StepPlugin, error) { + mutex.Lock() + defer mutex.Unlock() + + if t.client[pluginName] == nil || t.client[pluginName].Exited() { + + pluginPath, args, err := plugin.GetPluginInfo(pluginName, types.PluginTypeStep) + if err != nil { + return nil, fmt.Errorf("unable to find plugin (%s): %w", pluginName, err) + } + + t.client[pluginName] = goPlugin.NewClient(&goPlugin.ClientConfig{ + HandshakeConfig: handshakeConfig, + Plugins: pluginMap, + Cmd: exec.Command(pluginPath, args...), + Managed: true, + }) + + rpcClient, err := t.client[pluginName].Client() + if err != nil { + return nil, fmt.Errorf("unable to get plugin client (%s): %w", pluginName, err) + } + + // Request the plugin + plugin, err := rpcClient.Dispense("RpcStepPlugin") + if err != nil { + return nil, fmt.Errorf("unable to dispense plugin (%s): %w", pluginName, err) + } + + pluginType, ok := plugin.(rpc.StepPlugin) + if !ok { + return nil, fmt.Errorf("unexpected type from plugin") + } + t.plugin[pluginName] = pluginType + + resp := t.plugin[pluginName].InitPlugin() + if resp.HasError() { + return nil, fmt.Errorf("unable to initialize plugin via rpc (%s): %w", pluginName, resp) + } + } + + client, err := t.client[pluginName].Client() + if err != nil { + // If we are not able to create the client, something is utterly wrong + // we should try to re-download the plugin and restart because the file + // can be corrupted + return nil, fmt.Errorf("unable to get plugin client (%s) for ping: %w", pluginName, err) + } + if err := client.Ping(); err != nil { + t.client[pluginName].Kill() + t.client[pluginName] = nil + return nil, fmt.Errorf("could not ping plugin will cleanup process so we can restart it next reconcile (%w)", err) + } + + return t.plugin[pluginName], nil +} diff --git a/rollout/steps/plugin/mocks/Resolver.go b/rollout/steps/plugin/mocks/Resolver.go new file mode 100644 index 0000000000..356b69e0b5 --- /dev/null +++ b/rollout/steps/plugin/mocks/Resolver.go @@ -0,0 +1,61 @@ +// Code generated by mockery v2.42.2. DO NOT EDIT. + +package mocks + +import ( + logrus "github.com/sirupsen/logrus" + mock "github.com/stretchr/testify/mock" + + plugin "github.com/argoproj/argo-rollouts/rollout/steps/plugin" + + v1alpha1 "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" +) + +// Resolver is an autogenerated mock type for the Resolver type +type Resolver struct { + mock.Mock +} + +// Resolve provides a mock function with given fields: index, _a1, log +func (_m *Resolver) Resolve(index int32, _a1 v1alpha1.PluginStep, log *logrus.Entry) (plugin.StepPlugin, error) { + ret := _m.Called(index, _a1, log) + + if len(ret) == 0 { + panic("no return value specified for Resolve") + } + + var r0 plugin.StepPlugin + var r1 error + if rf, ok := ret.Get(0).(func(int32, v1alpha1.PluginStep, *logrus.Entry) (plugin.StepPlugin, error)); ok { + return rf(index, _a1, log) + } + if rf, ok := ret.Get(0).(func(int32, v1alpha1.PluginStep, *logrus.Entry) plugin.StepPlugin); ok { + r0 = rf(index, _a1, log) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(plugin.StepPlugin) + } + } + + if rf, ok := ret.Get(1).(func(int32, v1alpha1.PluginStep, *logrus.Entry) error); ok { + r1 = rf(index, _a1, log) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// NewResolver creates a new instance of Resolver. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewResolver(t interface { + mock.TestingT + Cleanup(func()) +}) *Resolver { + mock := &Resolver{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/rollout/steps/plugin/mocks/StepPlugin.go b/rollout/steps/plugin/mocks/StepPlugin.go new file mode 100644 index 0000000000..2a5b7cb679 --- /dev/null +++ b/rollout/steps/plugin/mocks/StepPlugin.go @@ -0,0 +1,118 @@ +// Code generated by mockery v2.42.2. DO NOT EDIT. + +package mocks + +import ( + mock "github.com/stretchr/testify/mock" + + v1alpha1 "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" +) + +// StepPlugin is an autogenerated mock type for the StepPlugin type +type StepPlugin struct { + mock.Mock +} + +// Abort provides a mock function with given fields: _a0 +func (_m *StepPlugin) Abort(_a0 *v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error) { + ret := _m.Called(_a0) + + if len(ret) == 0 { + panic("no return value specified for Abort") + } + + var r0 *v1alpha1.StepPluginStatus + var r1 error + if rf, ok := ret.Get(0).(func(*v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error)); ok { + return rf(_a0) + } + if rf, ok := ret.Get(0).(func(*v1alpha1.Rollout) *v1alpha1.StepPluginStatus); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*v1alpha1.StepPluginStatus) + } + } + + if rf, ok := ret.Get(1).(func(*v1alpha1.Rollout) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Run provides a mock function with given fields: _a0 +func (_m *StepPlugin) Run(_a0 *v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error) { + ret := _m.Called(_a0) + + if len(ret) == 0 { + panic("no return value specified for Run") + } + + var r0 *v1alpha1.StepPluginStatus + var r1 error + if rf, ok := ret.Get(0).(func(*v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error)); ok { + return rf(_a0) + } + if rf, ok := ret.Get(0).(func(*v1alpha1.Rollout) *v1alpha1.StepPluginStatus); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*v1alpha1.StepPluginStatus) + } + } + + if rf, ok := ret.Get(1).(func(*v1alpha1.Rollout) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Terminate provides a mock function with given fields: _a0 +func (_m *StepPlugin) Terminate(_a0 *v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error) { + ret := _m.Called(_a0) + + if len(ret) == 0 { + panic("no return value specified for Terminate") + } + + var r0 *v1alpha1.StepPluginStatus + var r1 error + if rf, ok := ret.Get(0).(func(*v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error)); ok { + return rf(_a0) + } + if rf, ok := ret.Get(0).(func(*v1alpha1.Rollout) *v1alpha1.StepPluginStatus); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*v1alpha1.StepPluginStatus) + } + } + + if rf, ok := ret.Get(1).(func(*v1alpha1.Rollout) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// NewStepPlugin creates a new instance of StepPlugin. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewStepPlugin(t interface { + mock.TestingT + Cleanup(func()) +}) *StepPlugin { + mock := &StepPlugin{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/rollout/steps/plugin/plugin.go b/rollout/steps/plugin/plugin.go new file mode 100644 index 0000000000..dd9ebe04ad --- /dev/null +++ b/rollout/steps/plugin/plugin.go @@ -0,0 +1,255 @@ +package plugin + +import ( + "encoding/json" + "fmt" + "time" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" + "github.com/argoproj/argo-rollouts/utils/plugin/types" + metatime "github.com/argoproj/argo-rollouts/utils/time" + log "github.com/sirupsen/logrus" +) + +type stepPlugin struct { + rpc rpc.StepPlugin + index int32 + name string + config json.RawMessage + log *log.Entry +} + +type disabledStepPlugin struct { + index int32 + name string +} + +// StepPlugin allows to execute different operation for a step plugin specifc to a rollout +type StepPlugin interface { + // Run executes the run operation for of a step plugin and returns a Run operation status + Run(*v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error) + // Terminate cancels an ongoing running Run operation and returns a Terminate status if it did + Terminate(*v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error) + // Abort reverts a completed Run operation and returns a Terminate status if it did + Abort(*v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error) +} + +var ( + minRequeueDuration = time.Second * 10 + defaultRequeuDuration = time.Second * 30 + defaultErrorBackoff = time.Second * 30 +) + +func (p *stepPlugin) Run(rollout *v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error) { + stepStatus := p.getStepStatus(rollout, v1alpha1.StepPluginOperationRun) + if stepStatus == nil || stepStatus.Disabled { + now := metatime.MetaNow() + stepStatus = &v1alpha1.StepPluginStatus{ + Index: p.index, + Name: p.name, + StartedAt: &now, + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseRunning, + } + } + + if stepStatus.Phase == v1alpha1.StepPluginPhaseSuccessful || stepStatus.Phase == v1alpha1.StepPluginPhaseFailed { + // Already completed + return nil, nil + } + + if stepStatus.Executions > 0 { + // If status existed, check the backoff to know if we are ready to retry. + // If we are not, return the status without modifying it. + backoff, err := stepStatus.Backoff.Duration() + if err != nil { + return nil, fmt.Errorf("could not parse backoff duration: %w", err) + } + if stepStatus.UpdatedAt.Add(backoff).After(metatime.Now()) { + p.log.Debug("skipping plugin Run due to backoff") + return stepStatus, nil + } + } + + p.log.Debug("calling RPC Run") + resp, err := p.rpc.Run(rollout.DeepCopy(), p.getStepContext(stepStatus)) + finishedAt := metatime.MetaNow() + stepStatus.Backoff = "" + stepStatus.UpdatedAt = &finishedAt + stepStatus.Executions++ + if err.HasError() { + p.log.Errorf("error during plugin execution") + stepStatus.Phase = v1alpha1.StepPluginPhaseError + stepStatus.Message = err.Error() + stepStatus.Backoff = v1alpha1.DurationString(defaultErrorBackoff.String()) + return stepStatus, nil + } + + stepStatus.Message = resp.Message + if resp.Phase != "" { + stepStatus.Phase = v1alpha1.StepPluginPhase(resp.Phase) + if err := stepStatus.Phase.Validate(); err != nil { + return nil, fmt.Errorf("could not validate rpc phase: %w", err) + } + } + + if stepStatus.Phase == v1alpha1.StepPluginPhaseSuccessful || stepStatus.Phase == v1alpha1.StepPluginPhaseFailed { + stepStatus.FinishedAt = &finishedAt + } + + if stepStatus.Phase != v1alpha1.StepPluginPhaseError { + // do not update status on error because it can be invalid and we want to retry later on current status + stepStatus.Status = resp.Status + } + + if stepStatus.Phase == v1alpha1.StepPluginPhaseRunning { + backoff := defaultRequeuDuration + if resp.RequeueAfter > minRequeueDuration { + backoff = resp.RequeueAfter + } + stepStatus.Backoff = v1alpha1.DurationString(backoff.String()) + } + + return stepStatus, nil +} + +func (p *stepPlugin) Terminate(rollout *v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error) { + terminateStatus := p.getStepStatus(rollout, v1alpha1.StepPluginOperationTerminate) + if terminateStatus != nil { + // Already terminated + return nil, nil + } + + stepStatus := p.getStepStatus(rollout, v1alpha1.StepPluginOperationRun) + if stepStatus == nil || stepStatus.Disabled || stepStatus.Phase != v1alpha1.StepPluginPhaseRunning { + // Step is not running, no need to call terminate + return nil, nil + } + + now := metatime.MetaNow() + terminateStatus = &v1alpha1.StepPluginStatus{ + Index: stepStatus.Index, + Name: stepStatus.Name, + StartedAt: &now, + Operation: v1alpha1.StepPluginOperationTerminate, + Phase: v1alpha1.StepPluginPhaseSuccessful, + } + + p.log.Debug("calling RPC Terminate") + resp, err := p.rpc.Terminate(rollout.DeepCopy(), p.getStepContext(stepStatus)) + finishedAt := metatime.MetaNow() + stepStatus.UpdatedAt = &finishedAt + if err.HasError() { + terminateStatus.Phase = v1alpha1.StepPluginPhaseError + terminateStatus.Message = err.Error() + terminateStatus.FinishedAt = &finishedAt + return terminateStatus, nil + } + + if resp.Phase != "" { + terminateStatus.Phase = v1alpha1.StepPluginPhase(resp.Phase) + if err := terminateStatus.Phase.Validate(); err != nil { + return nil, fmt.Errorf("could not validate rpc phase: %w", err) + } + } + + if terminateStatus.Phase == v1alpha1.StepPluginPhaseRunning { + p.log.Warnf("terminate cannot run asynchronously. Overriding status phase to %s.", v1alpha1.StepPluginPhaseFailed) + terminateStatus.Phase = v1alpha1.StepPluginPhaseFailed + } + + terminateStatus.Message = resp.Message + terminateStatus.FinishedAt = &finishedAt + return terminateStatus, nil +} + +func (p *stepPlugin) Abort(rollout *v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error) { + abortStatus := p.getStepStatus(rollout, v1alpha1.StepPluginOperationAbort) + if abortStatus != nil { + // Already aborted + return nil, nil + } + + stepStatus := p.getStepStatus(rollout, v1alpha1.StepPluginOperationRun) + if stepStatus == nil || stepStatus.Disabled || (stepStatus.Phase != v1alpha1.StepPluginPhaseRunning && stepStatus.Phase != v1alpha1.StepPluginPhaseSuccessful) { + // Step plugin isn't in a phase where it needs to be aborted + return nil, nil + } + + now := metatime.MetaNow() + abortStatus = &v1alpha1.StepPluginStatus{ + Index: stepStatus.Index, + Name: stepStatus.Name, + StartedAt: &now, + Operation: v1alpha1.StepPluginOperationAbort, + Phase: v1alpha1.StepPluginPhaseSuccessful, + } + + p.log.Debug("calling RPC Abort") + resp, err := p.rpc.Abort(rollout.DeepCopy(), p.getStepContext(stepStatus)) + finishedAt := metatime.MetaNow() + stepStatus.UpdatedAt = &finishedAt + if err.HasError() { + abortStatus.Phase = v1alpha1.StepPluginPhaseError + abortStatus.Message = err.Error() + abortStatus.FinishedAt = &finishedAt + return abortStatus, nil + } + + if resp.Phase != "" { + abortStatus.Phase = v1alpha1.StepPluginPhase(resp.Phase) + if err := abortStatus.Phase.Validate(); err != nil { + return nil, fmt.Errorf("could not validate rpc phase: %w", err) + } + } + + if abortStatus.Phase == v1alpha1.StepPluginPhaseRunning { + p.log.Warnf("abort cannot run asynchronously. Overriding status phase to %s.", v1alpha1.StepPluginPhaseFailed) + abortStatus.Phase = v1alpha1.StepPluginPhaseFailed + } + + abortStatus.Message = resp.Message + abortStatus.FinishedAt = &finishedAt + return abortStatus, nil +} + +func (p *disabledStepPlugin) Run(_ *v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error) { + return &v1alpha1.StepPluginStatus{ + Index: p.index, + Name: p.name, + Operation: v1alpha1.StepPluginOperationRun, + Disabled: true, + }, nil +} + +func (p *disabledStepPlugin) Terminate(_ *v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error) { + return nil, nil +} + +func (p *disabledStepPlugin) Abort(_ *v1alpha1.Rollout) (*v1alpha1.StepPluginStatus, error) { + return nil, nil +} + +// getStepStatus returns the existing status for the current operation +func (p *stepPlugin) getStepStatus(rollout *v1alpha1.Rollout, operation v1alpha1.StepPluginOperation) *v1alpha1.StepPluginStatus { + for _, s := range rollout.Status.Canary.StepPluginStatuses { + if s.Index == p.index && s.Name == p.name && s.Operation == operation { + return s.DeepCopy() + } + } + return nil +} + +// getStepContext returns the current step configuration with the from a previous operation, if any +func (p *stepPlugin) getStepContext(stepStatus *v1alpha1.StepPluginStatus) *types.RpcStepContext { + var status json.RawMessage = nil + if stepStatus != nil { + status = stepStatus.Status + } + return &types.RpcStepContext{ + PluginName: p.name, + Config: p.config, + Status: status, + } +} diff --git a/rollout/steps/plugin/plugin_test.go b/rollout/steps/plugin/plugin_test.go new file mode 100644 index 0000000000..dc041fa015 --- /dev/null +++ b/rollout/steps/plugin/plugin_test.go @@ -0,0 +1,769 @@ +package plugin + +import ( + "encoding/json" + "testing" + "time" + + log "github.com/sirupsen/logrus" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc/mocks" + "github.com/argoproj/argo-rollouts/utils/plugin/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +func Test_stepPlugin_Run(t *testing.T) { + setup := func(t *testing.T) (*stepPlugin, *mocks.StepPlugin) { + plugin := &stepPlugin{ + name: "test-plugin", + index: 0, + config: json.RawMessage("value"), + log: log.WithFields(log.Fields{}), + } + rpcPluginMock := mocks.NewStepPlugin(t) + plugin.rpc = rpcPluginMock + return plugin, rpcPluginMock + } + + t.Run("Argument set without status", func(t *testing.T) { + p, rpcMock := setup(t) + r := &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{ + { + Index: 0, + Name: p.name, + Status: json.RawMessage("step status value"), + Operation: v1alpha1.StepPluginOperationRun, + }, + }, + }, + }, + } + validateArguments := func(args mock.Arguments) { + rollout, ok0 := args.Get(0).(*v1alpha1.Rollout) + context, ok1 := args.Get(1).(*types.RpcStepContext) + require.Truef(t, ok0, "Argument 0 is of the wrong type") + require.Truef(t, ok1, "Argument 1 is of the wrong type") + + assert.NotNil(t, rollout) + assert.NotSame(t, r, rollout) + assert.NotNil(t, context) + assert.Equal(t, p.name, context.PluginName) + assert.Equal(t, p.config, context.Config) + assert.Nil(t, context.Status) + } + + rpcMock.On("Run", mock.Anything, mock.Anything).Run(validateArguments).Return(types.RpcStepResult{}, types.RpcError{}).Once() + + p.index = 1 + _, err := p.Run(r) + + require.NoError(t, err) + rpcMock.AssertExpectations(t) + + }) + t.Run("Argument set with status", func(t *testing.T) { + p, rpcMock := setup(t) + r := &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{ + { + Index: 0, + Name: p.name, + Status: json.RawMessage("step status value"), + Operation: v1alpha1.StepPluginOperationRun, + }, + }, + }, + }, + } + validateArguments := func(args mock.Arguments) { + rollout, ok0 := args.Get(0).(*v1alpha1.Rollout) + context, ok1 := args.Get(1).(*types.RpcStepContext) + require.Truef(t, ok0, "Argument 0 is of the wrong type") + require.Truef(t, ok1, "Argument 1 is of the wrong type") + + assert.NotNil(t, rollout) + assert.NotSame(t, r, rollout) + assert.NotNil(t, context) + assert.Equal(t, p.name, context.PluginName) + assert.Equal(t, p.config, context.Config) + assert.Equal(t, r.Status.Canary.StepPluginStatuses[0].Status, context.Status) + } + + rpcMock.On("Run", mock.Anything, mock.Anything).Run(validateArguments).Return(types.RpcStepResult{}, types.RpcError{}).Once() + + p.index = 0 + _, err := p.Run(r) + + require.NoError(t, err) + rpcMock.AssertExpectations(t) + + }) + t.Run("use existing state", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := &v1alpha1.StepPluginStatus{ + Index: 0, + Name: p.name, + Status: json.RawMessage("step status value"), + StartedAt: &v1.Time{Time: time.Now().Add(30 * time.Minute * -1)}, + Phase: v1alpha1.StepPluginPhaseRunning, + Operation: v1alpha1.StepPluginOperationRun, + } + r := &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{ + *currentStatus, + }, + }, + }, + } + + rpcResult := types.RpcStepResult{ + Phase: types.PhaseSuccessful, + Message: "Good message", + RequeueAfter: time.Hour, + Status: json.RawMessage("status"), + } + rpcMock.On("Run", mock.Anything, mock.Anything).Return(rpcResult, types.RpcError{}).Once() + + status, err := p.Run(r) + + require.NoError(t, err) + rpcMock.AssertExpectations(t) + + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.Equal(t, currentStatus.StartedAt, status.StartedAt) + assert.NotEqual(t, currentStatus.UpdatedAt, status.UpdatedAt) + assert.Equal(t, v1alpha1.StepPluginPhase(rpcResult.Phase), status.Phase) + assert.Equal(t, v1alpha1.StepPluginOperationRun, status.Operation) + assert.Equal(t, rpcResult.Message, status.Message) + assert.Equal(t, rpcResult.Status, status.Status) + assert.NotNil(t, status.FinishedAt) + assert.Empty(t, status.Backoff) + assert.False(t, status.Disabled) + }) + t.Run("Successful status", func(t *testing.T) { + p, rpcMock := setup(t) + r := &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{}, + }, + }, + } + + rpcResult := types.RpcStepResult{ + Phase: types.PhaseSuccessful, + Message: "Good message", + RequeueAfter: time.Hour, + Status: json.RawMessage("status"), + } + rpcMock.On("Run", mock.Anything, mock.Anything).Return(rpcResult, types.RpcError{}).Once() + + status, err := p.Run(r) + + require.NoError(t, err) + rpcMock.AssertExpectations(t) + + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.NotNil(t, status.StartedAt) + assert.NotNil(t, status.FinishedAt) + assert.Greater(t, status.FinishedAt.Time, status.StartedAt.Time) + assert.Equal(t, v1alpha1.StepPluginPhase(rpcResult.Phase), status.Phase) + assert.Equal(t, v1alpha1.StepPluginOperationRun, status.Operation) + assert.Equal(t, rpcResult.Message, status.Message) + assert.Equal(t, rpcResult.Status, status.Status) + assert.EqualValues(t, "", status.Backoff) + assert.False(t, status.Disabled) + }) + t.Run("Running status", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := &v1alpha1.StepPluginStatus{ + Index: 0, + Name: p.name, + Status: json.RawMessage("step status value"), + StartedAt: &v1.Time{Time: time.Now().Add(30 * time.Minute * -1)}, + Operation: v1alpha1.StepPluginOperationRun, + } + r := &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{ + *currentStatus, + }, + }, + }, + } + + rpcResult := types.RpcStepResult{ + Phase: types.PhaseRunning, + Message: "Good message", + RequeueAfter: time.Hour, + Status: json.RawMessage("status"), + } + rpcMock.On("Run", mock.Anything, mock.Anything).Return(rpcResult, types.RpcError{}).Once() + + status, err := p.Run(r) + + require.NoError(t, err) + rpcMock.AssertExpectations(t) + + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.NotNil(t, status.StartedAt) + assert.Nil(t, status.FinishedAt) + assert.Equal(t, v1alpha1.StepPluginPhase(rpcResult.Phase), status.Phase) + assert.Equal(t, v1alpha1.StepPluginOperationRun, status.Operation) + assert.Equal(t, rpcResult.Message, status.Message) + assert.Equal(t, rpcResult.Status, status.Status) + assert.EqualValues(t, rpcResult.RequeueAfter.String(), status.Backoff) + assert.False(t, status.Disabled) + }) + t.Run("Running status without requeue", func(t *testing.T) { + p, rpcMock := setup(t) + r := &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{}, + }, + }, + } + + rpcResult := types.RpcStepResult{ + Phase: types.PhaseRunning, + Message: "Good message", + Status: json.RawMessage("status"), + } + rpcMock.On("Run", mock.Anything, mock.Anything).Return(rpcResult, types.RpcError{}).Once() + + status, err := p.Run(r) + + require.NoError(t, err) + rpcMock.AssertExpectations(t) + + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.NotNil(t, status.StartedAt) + assert.Nil(t, status.FinishedAt) + assert.Equal(t, v1alpha1.StepPluginPhase(rpcResult.Phase), status.Phase) + assert.Equal(t, v1alpha1.StepPluginOperationRun, status.Operation) + assert.Equal(t, rpcResult.Message, status.Message) + assert.Equal(t, rpcResult.Status, status.Status) + assert.EqualValues(t, defaultRequeuDuration.String(), status.Backoff) + assert.False(t, status.Disabled) + }) + t.Run("Running status with requeue too fast", func(t *testing.T) { + p, rpcMock := setup(t) + r := &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{}, + }, + }, + } + + rpcResult := types.RpcStepResult{ + Phase: types.PhaseRunning, + Message: "Good message", + RequeueAfter: 1 * time.Second, + Status: json.RawMessage("status"), + } + rpcMock.On("Run", mock.Anything, mock.Anything).Return(rpcResult, types.RpcError{}).Once() + + status, err := p.Run(r) + + require.NoError(t, err) + rpcMock.AssertExpectations(t) + + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.NotNil(t, status.StartedAt) + assert.Nil(t, status.FinishedAt) + assert.Equal(t, v1alpha1.StepPluginPhase(rpcResult.Phase), status.Phase) + assert.Equal(t, v1alpha1.StepPluginOperationRun, status.Operation) + assert.Equal(t, rpcResult.Message, status.Message) + assert.Equal(t, rpcResult.Status, status.Status) + assert.EqualValues(t, defaultRequeuDuration.String(), status.Backoff) + assert.False(t, status.Disabled) + }) + t.Run("Failed status", func(t *testing.T) { + p, rpcMock := setup(t) + r := &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{}, + }, + }, + } + + rpcResult := types.RpcStepResult{ + Phase: types.PhaseSuccessful, + Message: "Good message", + RequeueAfter: time.Hour, + Status: json.RawMessage("status"), + } + rpcMock.On("Run", mock.Anything, mock.Anything).Return(rpcResult, types.RpcError{}).Once() + + status, err := p.Run(r) + + require.NoError(t, err) + rpcMock.AssertExpectations(t) + + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.NotNil(t, status.StartedAt) + assert.NotNil(t, status.FinishedAt) + assert.Greater(t, status.FinishedAt.Time, status.StartedAt.Time) + assert.Equal(t, v1alpha1.StepPluginPhase(rpcResult.Phase), status.Phase) + assert.Equal(t, v1alpha1.StepPluginOperationRun, status.Operation) + assert.Equal(t, rpcResult.Message, status.Message) + assert.Equal(t, rpcResult.Status, status.Status) + assert.Empty(t, status.Backoff) + assert.False(t, status.Disabled) + }) + t.Run("Error status", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := &v1alpha1.StepPluginStatus{ + Index: 0, + Name: p.name, + Status: json.RawMessage("step status value"), + StartedAt: &v1.Time{Time: time.Now().Add(30 * time.Minute * -1)}, + Operation: v1alpha1.StepPluginOperationRun, + } + r := &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{ + *currentStatus, + }, + }, + }, + } + + invalidResult := types.RpcStepResult{ + Phase: types.PhaseSuccessful, + Message: "This message should not be used", + RequeueAfter: time.Hour, + Status: json.RawMessage("invalid status"), + } + expectedError := types.RpcError{ + ErrorString: "This is an error", + } + rpcMock.On("Run", mock.Anything, mock.Anything).Return(invalidResult, expectedError).Once() + + status, err := p.Run(r) + + require.NoError(t, err) + rpcMock.AssertExpectations(t) + + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.Equal(t, currentStatus.StartedAt, status.StartedAt) + assert.NotEqual(t, currentStatus.UpdatedAt, status.UpdatedAt) + assert.Equal(t, v1alpha1.StepPluginPhaseError, status.Phase) + assert.Equal(t, v1alpha1.StepPluginOperationRun, status.Operation) + assert.Equal(t, expectedError.Error(), status.Message) + assert.Equal(t, currentStatus.Status, status.Status) + assert.EqualValues(t, "30s", status.Backoff) + assert.False(t, status.Disabled) + }) +} + +func Test_stepPlugin_Terminate(t *testing.T) { + setup := func(t *testing.T) (*stepPlugin, *mocks.StepPlugin) { + plugin := &stepPlugin{ + name: "test-plugin", + index: 0, + config: json.RawMessage("value"), + log: log.WithFields(log.Fields{}), + } + rpcPluginMock := mocks.NewStepPlugin(t) + plugin.rpc = rpcPluginMock + return plugin, rpcPluginMock + } + newRunningStatus := func() *v1alpha1.StepPluginStatus { + return &v1alpha1.StepPluginStatus{ + Index: 0, + Name: "test-plugin", + Status: json.RawMessage("step status value"), + StartedAt: &v1.Time{Time: time.Now().Add(30 * time.Minute * -1)}, + Phase: v1alpha1.StepPluginPhaseRunning, + Operation: v1alpha1.StepPluginOperationRun, + } + } + newRollout := func(s *v1alpha1.StepPluginStatus) *v1alpha1.Rollout { + return &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{ + *s, + }, + }, + }, + } + } + + t.Run("Return nil status if not running", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := newRunningStatus() + currentStatus.Phase = v1alpha1.StepPluginPhaseSuccessful + currentStatus.Operation = v1alpha1.StepPluginOperationRun + r := newRollout(currentStatus) + + rpcMock.On("Terminate", mock.Anything, mock.Anything).Maybe().Panic("Terminate should not be called when plugin is not running") + + status, err := p.Terminate(r) + + require.NoError(t, err) + assert.Nil(t, status) + }) + + t.Run("Return nil status if already terminated", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := newRunningStatus() + currentStatus.Phase = v1alpha1.StepPluginPhaseSuccessful + currentStatus.Operation = v1alpha1.StepPluginOperationTerminate + r := newRollout(currentStatus) + + rpcMock.On("Terminate", mock.Anything, mock.Anything).Maybe().Panic("Terminate should not be called when plugin is not running") + + status, err := p.Terminate(r) + + require.NoError(t, err) + assert.Nil(t, status) + }) + t.Run("Running phase overridden to failed if running", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := newRunningStatus() + r := newRollout(currentStatus) + + rpcResult := types.RpcStepResult{ + Phase: types.PhaseRunning, + Message: "Good message", + RequeueAfter: time.Hour, + Status: json.RawMessage("status"), + } + rpcMock.On("Terminate", mock.Anything, mock.Anything).Return(rpcResult, types.RpcError{}) + + status, err := p.Terminate(r) + + require.NoError(t, err) + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.NotNil(t, status.FinishedAt) + assert.Greater(t, status.FinishedAt.Time, status.StartedAt.Time) + assert.Equal(t, v1alpha1.StepPluginOperationTerminate, status.Operation) + assert.Equal(t, v1alpha1.StepPluginPhaseFailed, status.Phase) + assert.Equal(t, rpcResult.Message, status.Message) + assert.Nil(t, status.Status) + assert.False(t, status.Disabled) + }) + t.Run("Completes successfully", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := newRunningStatus() + r := newRollout(currentStatus) + + rpcResult := types.RpcStepResult{ + Phase: types.PhaseSuccessful, + Message: "Good message", + RequeueAfter: time.Hour, + Status: json.RawMessage("status"), + } + rpcMock.On("Terminate", mock.Anything, mock.Anything).Return(rpcResult, types.RpcError{}) + + status, err := p.Terminate(r) + + require.NoError(t, err) + + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.NotNil(t, status.FinishedAt) + assert.Greater(t, status.FinishedAt.Time, status.StartedAt.Time) + assert.Equal(t, v1alpha1.StepPluginPhase(rpcResult.Phase), status.Phase) + assert.Equal(t, v1alpha1.StepPluginOperationTerminate, status.Operation) + assert.Equal(t, rpcResult.Message, status.Message) + assert.Nil(t, status.Status) + assert.False(t, status.Disabled) + }) + + t.Run("Error status", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := newRunningStatus() + r := newRollout(currentStatus) + + invalidResult := types.RpcStepResult{ + Phase: types.PhaseSuccessful, + Message: "This message should not be used", + RequeueAfter: time.Hour, + Status: json.RawMessage("invalid status"), + } + expectedError := types.RpcError{ + ErrorString: "This is an error", + } + rpcMock.On("Terminate", mock.Anything, mock.Anything).Return(invalidResult, expectedError) + + status, err := p.Terminate(r) + + require.NoError(t, err) + + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.NotNil(t, status.FinishedAt) + assert.Greater(t, status.FinishedAt.Time, status.StartedAt.Time) + assert.Equal(t, v1alpha1.StepPluginOperationTerminate, status.Operation) + assert.Equal(t, v1alpha1.StepPluginPhaseError, status.Phase) + assert.Contains(t, status.Message, expectedError.Error()) + assert.Nil(t, status.Status) + assert.False(t, status.Disabled) + }) +} + +func Test_stepPlugin_Abort(t *testing.T) { + setup := func(t *testing.T) (*stepPlugin, *mocks.StepPlugin) { + plugin := &stepPlugin{ + name: "test-plugin", + index: 0, + config: json.RawMessage("value"), + log: log.WithFields(log.Fields{}), + } + rpcPluginMock := mocks.NewStepPlugin(t) + plugin.rpc = rpcPluginMock + return plugin, rpcPluginMock + } + newRunningStatus := func() *v1alpha1.StepPluginStatus { + return &v1alpha1.StepPluginStatus{ + Index: 0, + Name: "test-plugin", + Status: json.RawMessage("step status value"), + StartedAt: &v1.Time{Time: time.Now().Add(30 * time.Minute * -1)}, + Phase: v1alpha1.StepPluginPhaseRunning, + Operation: v1alpha1.StepPluginOperationRun, + } + } + newRollout := func(s *v1alpha1.StepPluginStatus) *v1alpha1.Rollout { + return &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{ + *s, + }, + }, + }, + } + } + + t.Run("Return nil status if run is in error", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := newRunningStatus() + currentStatus.Phase = v1alpha1.StepPluginPhaseError + currentStatus.Operation = v1alpha1.StepPluginOperationRun + r := newRollout(currentStatus) + + rpcMock.On("Abort", mock.Anything, mock.Anything).Maybe().Panic("Abort should not be called when plugin is not running or copmpleted") + + status, err := p.Abort(r) + + require.NoError(t, err) + assert.Nil(t, status) + }) + + t.Run("Return nil status if run has failed", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := newRunningStatus() + currentStatus.Phase = v1alpha1.StepPluginPhaseFailed + currentStatus.Operation = v1alpha1.StepPluginOperationRun + r := newRollout(currentStatus) + + rpcMock.On("Abort", mock.Anything, mock.Anything).Maybe().Panic("Abort should not be called when plugin is not running or completed") + + status, err := p.Abort(r) + + require.NoError(t, err) + assert.Nil(t, status) + }) + + t.Run("Return nil status if already aborted", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := newRunningStatus() + currentStatus.Phase = v1alpha1.StepPluginPhaseSuccessful + currentStatus.Operation = v1alpha1.StepPluginOperationAbort + r := newRollout(currentStatus) + + rpcMock.On("Abort", mock.Anything, mock.Anything).Maybe().Panic("Abort should not be called when plugin is not running") + + status, err := p.Abort(r) + + require.NoError(t, err) + assert.Nil(t, status) + }) + t.Run("Running phase overridden to failed if running", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := newRunningStatus() + r := newRollout(currentStatus) + + rpcResult := types.RpcStepResult{ + Phase: types.PhaseRunning, + Message: "Good message", + RequeueAfter: time.Hour, + Status: json.RawMessage("status"), + } + rpcMock.On("Abort", mock.Anything, mock.Anything).Return(rpcResult, types.RpcError{}) + + status, err := p.Abort(r) + + require.NoError(t, err) + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.NotNil(t, status.FinishedAt) + assert.Greater(t, status.FinishedAt.Time, status.StartedAt.Time) + assert.Equal(t, v1alpha1.StepPluginOperationAbort, status.Operation) + assert.Equal(t, v1alpha1.StepPluginPhaseFailed, status.Phase) + assert.Equal(t, rpcResult.Message, status.Message) + assert.Nil(t, status.Status) + assert.False(t, status.Disabled) + }) + t.Run("Completes successfully", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := newRunningStatus() + r := newRollout(currentStatus) + + rpcResult := types.RpcStepResult{ + Phase: types.PhaseSuccessful, + Message: "Good message", + RequeueAfter: time.Hour, + Status: json.RawMessage("status"), + } + rpcMock.On("Abort", mock.Anything, mock.Anything).Return(rpcResult, types.RpcError{}) + + status, err := p.Abort(r) + + require.NoError(t, err) + + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.NotNil(t, status.FinishedAt) + assert.Greater(t, status.FinishedAt.Time, status.StartedAt.Time) + assert.Equal(t, v1alpha1.StepPluginPhase(rpcResult.Phase), status.Phase) + assert.Equal(t, v1alpha1.StepPluginOperationAbort, status.Operation) + assert.Equal(t, rpcResult.Message, status.Message) + assert.Nil(t, status.Status) + assert.False(t, status.Disabled) + }) + + t.Run("Error status", func(t *testing.T) { + p, rpcMock := setup(t) + currentStatus := newRunningStatus() + r := newRollout(currentStatus) + + invalidResult := types.RpcStepResult{ + Phase: types.PhaseSuccessful, + Message: "This message should not be used", + RequeueAfter: time.Hour, + Status: json.RawMessage("invalid status"), + } + expectedError := types.RpcError{ + ErrorString: "This is an error", + } + rpcMock.On("Abort", mock.Anything, mock.Anything).Return(invalidResult, expectedError) + + status, err := p.Abort(r) + + require.NoError(t, err) + + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.NotNil(t, status.FinishedAt) + assert.Greater(t, status.FinishedAt.Time, status.StartedAt.Time) + assert.Equal(t, v1alpha1.StepPluginOperationAbort, status.Operation) + assert.Equal(t, v1alpha1.StepPluginPhaseError, status.Phase) + assert.Contains(t, status.Message, expectedError.Error()) + assert.Nil(t, status.Status) + assert.False(t, status.Disabled) + }) +} + +func Test_disabledStepPlugin(t *testing.T) { + t.Run("Run always return disabled status", func(t *testing.T) { + p := disabledStepPlugin{ + index: 0, + name: "test", + } + r := &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{}, + }, + }, + } + + status, err := p.Run(r) + + require.NoError(t, err) + + assert.Equal(t, p.name, status.Name) + assert.Equal(t, p.index, status.Index) + assert.Equal(t, v1alpha1.StepPluginOperationRun, status.Operation) + assert.True(t, status.Disabled) + }) + t.Run("Abort has no effect", func(t *testing.T) { + p := disabledStepPlugin{ + index: 0, + name: "test", + } + r := &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{ + { + Index: 0, + Name: "test", + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseSuccessful, + }, + }, + }, + }, + } + + status, err := p.Abort(r) + + require.NoError(t, err) + assert.Nil(t, status) + }) + t.Run("Terminate has no effect", func(t *testing.T) { + p := disabledStepPlugin{ + index: 0, + name: "test", + } + r := &v1alpha1.Rollout{ + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{ + StepPluginStatuses: []v1alpha1.StepPluginStatus{ + { + Index: 0, + Name: "test", + Operation: v1alpha1.StepPluginOperationRun, + Phase: v1alpha1.StepPluginPhaseRunning, + }, + }, + }, + }, + } + + status, err := p.Terminate(r) + + require.NoError(t, err) + assert.Nil(t, status) + }) +} diff --git a/rollout/steps/plugin/resolver.go b/rollout/steps/plugin/resolver.go new file mode 100644 index 0000000000..f2233526ec --- /dev/null +++ b/rollout/steps/plugin/resolver.go @@ -0,0 +1,53 @@ +package plugin + +import ( + "fmt" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/steps/plugin/client" + "github.com/argoproj/argo-rollouts/utils/config" + "github.com/argoproj/argo-rollouts/utils/plugin/types" + "github.com/sirupsen/logrus" + log "github.com/sirupsen/logrus" +) + +type resolver struct { +} + +// Resolver allows to resolve a StepPlugin object +type Resolver interface { + // Resolve is a factory to create the correct StepPlugin based on the current step and global configurations + Resolve(index int32, plugin v1alpha1.PluginStep, log *log.Entry) (StepPlugin, error) +} + +// NewResolver creaates a new Resolver +func NewResolver() Resolver { + return &resolver{} +} + +func (r *resolver) Resolve(index int32, plugin v1alpha1.PluginStep, log *log.Entry) (StepPlugin, error) { + if config, err := config.GetConfig(); err != nil { + return nil, fmt.Errorf("could not get config: %w", err) + } else { + plugin := config.GetPlugin(plugin.Name, types.PluginTypeStep) + if plugin != nil && plugin.Disabled { + return &disabledStepPlugin{ + index: index, + name: plugin.Name, + }, nil + } + } + + pluginClient, err := client.GetPlugin(plugin.Name) + if err != nil { + return nil, fmt.Errorf("failed to get step plugin %s: %w", plugin.Name, err) + } + + return &stepPlugin{ + rpc: pluginClient, + index: index, + name: plugin.Name, + config: plugin.Config, + log: log.WithFields(logrus.Fields{"stepplugin": plugin.Name, "stepindex": index}), + }, nil +} diff --git a/rollout/steps/plugin/rpc/mocks/StepPlugin.go b/rollout/steps/plugin/rpc/mocks/StepPlugin.go new file mode 100644 index 0000000000..c858f4fa58 --- /dev/null +++ b/rollout/steps/plugin/rpc/mocks/StepPlugin.go @@ -0,0 +1,150 @@ +// Code generated by mockery v2.42.2. DO NOT EDIT. + +package mocks + +import ( + mock "github.com/stretchr/testify/mock" + + types "github.com/argoproj/argo-rollouts/utils/plugin/types" + + v1alpha1 "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" +) + +// StepPlugin is an autogenerated mock type for the StepPlugin type +type StepPlugin struct { + mock.Mock +} + +// Abort provides a mock function with given fields: _a0, _a1 +func (_m *StepPlugin) Abort(_a0 *v1alpha1.Rollout, _a1 *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Abort") + } + + var r0 types.RpcStepResult + var r1 types.RpcError + if rf, ok := ret.Get(0).(func(*v1alpha1.Rollout, *types.RpcStepContext) (types.RpcStepResult, types.RpcError)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(*v1alpha1.Rollout, *types.RpcStepContext) types.RpcStepResult); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Get(0).(types.RpcStepResult) + } + + if rf, ok := ret.Get(1).(func(*v1alpha1.Rollout, *types.RpcStepContext) types.RpcError); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Get(1).(types.RpcError) + } + + return r0, r1 +} + +// InitPlugin provides a mock function with given fields: +func (_m *StepPlugin) InitPlugin() types.RpcError { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for InitPlugin") + } + + var r0 types.RpcError + if rf, ok := ret.Get(0).(func() types.RpcError); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(types.RpcError) + } + + return r0 +} + +// Run provides a mock function with given fields: _a0, _a1 +func (_m *StepPlugin) Run(_a0 *v1alpha1.Rollout, _a1 *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Run") + } + + var r0 types.RpcStepResult + var r1 types.RpcError + if rf, ok := ret.Get(0).(func(*v1alpha1.Rollout, *types.RpcStepContext) (types.RpcStepResult, types.RpcError)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(*v1alpha1.Rollout, *types.RpcStepContext) types.RpcStepResult); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Get(0).(types.RpcStepResult) + } + + if rf, ok := ret.Get(1).(func(*v1alpha1.Rollout, *types.RpcStepContext) types.RpcError); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Get(1).(types.RpcError) + } + + return r0, r1 +} + +// Terminate provides a mock function with given fields: _a0, _a1 +func (_m *StepPlugin) Terminate(_a0 *v1alpha1.Rollout, _a1 *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Terminate") + } + + var r0 types.RpcStepResult + var r1 types.RpcError + if rf, ok := ret.Get(0).(func(*v1alpha1.Rollout, *types.RpcStepContext) (types.RpcStepResult, types.RpcError)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(*v1alpha1.Rollout, *types.RpcStepContext) types.RpcStepResult); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Get(0).(types.RpcStepResult) + } + + if rf, ok := ret.Get(1).(func(*v1alpha1.Rollout, *types.RpcStepContext) types.RpcError); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Get(1).(types.RpcError) + } + + return r0, r1 +} + +// Type provides a mock function with given fields: +func (_m *StepPlugin) Type() string { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for Type") + } + + var r0 string + if rf, ok := ret.Get(0).(func() string); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(string) + } + + return r0 +} + +// NewStepPlugin creates a new instance of StepPlugin. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewStepPlugin(t interface { + mock.TestingT + Cleanup(func()) +}) *StepPlugin { + mock := &StepPlugin{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/rollout/steps/plugin/rpc/rpc.go b/rollout/steps/plugin/rpc/rpc.go new file mode 100644 index 0000000000..f460361f39 --- /dev/null +++ b/rollout/steps/plugin/rpc/rpc.go @@ -0,0 +1,197 @@ +package rpc + +import ( + "encoding/gob" + "fmt" + "net/rpc" + + "github.com/argoproj/argo-rollouts/utils/plugin/types" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/hashicorp/go-plugin" +) + +type RunArgs struct { + Rollout *v1alpha1.Rollout + Context *types.RpcStepContext +} + +type TerminateArgs struct { + Rollout *v1alpha1.Rollout + Context *types.RpcStepContext +} + +type AbortArgs struct { + Rollout *v1alpha1.Rollout + Context *types.RpcStepContext +} + +type Response struct { + Result types.RpcStepResult + Error types.RpcError +} + +func init() { + gob.RegisterName("step.RunArgs", new(RunArgs)) + gob.RegisterName("step.TerminateArgs", new(TerminateArgs)) + gob.RegisterName("step.AbortArgs", new(AbortArgs)) +} + +// StepPlugin is the interface that we're exposing as a plugin. It needs to match metricproviders.Providers but we can +// not import that package because it would create a circular dependency. +type StepPlugin interface { + InitPlugin() types.RpcError + types.RpcStep +} + +// StepPluginRPC Here is an implementation that talks over RPC +type StepPluginRPC struct{ client *rpc.Client } + +// InitPlugin is the client aka the controller side function that calls the server side rpc (plugin) +// this gets called once during startup of the plugin and can be used to set up informers, k8s clients, etc. +func (g *StepPluginRPC) InitPlugin() types.RpcError { + var resp types.RpcError + err := g.client.Call("Plugin.InitPlugin", new(any), &resp) + if err != nil { + return types.RpcError{ErrorString: fmt.Sprintf("InitPlugin rpc call error: %s", err)} + } + return resp +} + +// Run executes the step +func (g *StepPluginRPC) Run(rollout *v1alpha1.Rollout, context *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + var resp Response + var args any = RunArgs{ + Rollout: rollout, + Context: context, + } + err := g.client.Call("Plugin.Run", &args, &resp) + if err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Sprintf("Run rpc call error: %s", err)} + } + return resp.Result, resp.Error +} + +// Terminate stops the execution of a running step and exits early +func (g *StepPluginRPC) Terminate(rollout *v1alpha1.Rollout, context *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + var resp Response + var args any = TerminateArgs{ + Rollout: rollout, + Context: context, + } + err := g.client.Call("Plugin.Terminate", &args, &resp) + if err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Sprintf("Terminate rpc call error: %s", err)} + } + return resp.Result, resp.Error +} + +// Abort reverts previous operation executed by the step if necessary +func (g *StepPluginRPC) Abort(rollout *v1alpha1.Rollout, context *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + var resp Response + var args any = AbortArgs{ + Rollout: rollout, + Context: context, + } + err := g.client.Call("Plugin.Abort", &args, &resp) + if err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Sprintf("Abort rpc call error: %s", err)} + } + return resp.Result, resp.Error +} + +// Type returns the type of the traffic routing reconciler +func (g *StepPluginRPC) Type() string { + var resp string + err := g.client.Call("Plugin.Type", new(any), &resp) + if err != nil { + return fmt.Sprintf("Type rpc call error: %s", err) + } + + return resp +} + +// StepRPCServer Here is the RPC server that MetricsPluginRPC talks to, conforming to +// the requirements of net/rpc +type StepRPCServer struct { + // This is the real implementation + Impl StepPlugin +} + +// InitPlugin this is the server aka the controller side function that receives calls from the client side rpc (controller) +// this gets called once during startup of the plugin and can be used to set up informers or k8s clients etc. +func (s *StepRPCServer) InitPlugin(args any, resp *types.RpcError) error { + *resp = s.Impl.InitPlugin() + return nil +} + +// Run executes the step +func (s *StepRPCServer) Run(args any, resp *Response) error { + runArgs, ok := args.(*RunArgs) + if !ok { + return fmt.Errorf("invalid args %s", args) + } + result, err := s.Impl.Run(runArgs.Rollout, runArgs.Context) + *resp = Response{ + Result: result, + Error: err, + } + return nil +} + +// Terminate stops the execution of a running step and exits early +func (s *StepRPCServer) Terminate(args any, resp *Response) error { + runArgs, ok := args.(*TerminateArgs) + if !ok { + return fmt.Errorf("invalid args %s", args) + } + result, err := s.Impl.Terminate(runArgs.Rollout, runArgs.Context) + *resp = Response{ + Result: result, + Error: err, + } + return nil +} + +// Abort reverts previous operation executed by the step if necessary +func (s *StepRPCServer) Abort(args any, resp *Response) error { + runArgs, ok := args.(*AbortArgs) + if !ok { + return fmt.Errorf("invalid args %s", args) + } + result, err := s.Impl.Abort(runArgs.Rollout, runArgs.Context) + *resp = Response{ + Result: result, + Error: err, + } + return nil +} + +// Type returns the type of the traffic routing reconciler +func (s *StepRPCServer) Type(args any, resp *string) error { + *resp = s.Impl.Type() + return nil +} + +// RpcStepPlugin This is the implementation of plugin.Plugin so we can serve/consume +// +// This has two methods: Server must return an RPC server for this plugin +// type. We construct a StepRPCServer for this. +// +// Client must return an implementation of our interface that communicates +// over an RPC client. We return StepPluginRPC for this. +// +// Ignore MuxBroker. That is used to create more multiplexed streams on our +// plugin connection and is a more advanced use case. +type RpcStepPlugin struct { + // Impl Injection + Impl StepPlugin +} + +func (p *RpcStepPlugin) Server(*plugin.MuxBroker) (any, error) { + return &StepRPCServer{Impl: p.Impl}, nil +} + +func (RpcStepPlugin) Client(b *plugin.MuxBroker, c *rpc.Client) (any, error) { + return &StepPluginRPC{client: c}, nil +} diff --git a/rollout/steps/plugin/rpc/rpc_test.go b/rollout/steps/plugin/rpc/rpc_test.go new file mode 100644 index 0000000000..b5bac5e3f6 --- /dev/null +++ b/rollout/steps/plugin/rpc/rpc_test.go @@ -0,0 +1,149 @@ +package rpc + +import ( + "context" + "testing" + "time" + + "github.com/argoproj/argo-rollouts/utils/plugin/types" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + goPlugin "github.com/hashicorp/go-plugin" + "github.com/tj/assert" +) + +var testHandshake = goPlugin.HandshakeConfig{ + ProtocolVersion: 1, + MagicCookieKey: "ARGO_ROLLOUTS_RPC_PLUGIN", + MagicCookieValue: "step", +} + +func pluginClient(t *testing.T) (StepPlugin, goPlugin.ClientProtocol, func(), chan struct{}) { + ctx, cancel := context.WithCancel(context.Background()) + + pluginImpl := &testRpcPlugin{} + + // pluginMap is the map of plugins we can dispense. + var pluginMap = map[string]goPlugin.Plugin{ + "RpcStepPlugin": &RpcStepPlugin{Impl: pluginImpl}, + } + + ch := make(chan *goPlugin.ReattachConfig, 1) + closeCh := make(chan struct{}) + go goPlugin.Serve(&goPlugin.ServeConfig{ + HandshakeConfig: testHandshake, + Plugins: pluginMap, + Test: &goPlugin.ServeTestConfig{ + Context: ctx, + ReattachConfigCh: ch, + CloseCh: closeCh, + }, + }) + + // We should get a config + var config *goPlugin.ReattachConfig + select { + case config = <-ch: + case <-time.After(2000 * time.Millisecond): + t.Fatal("should've received reattach") + } + if config == nil { + t.Fatal("config should not be nil") + } + + // Connect! + c := goPlugin.NewClient(&goPlugin.ClientConfig{ + Cmd: nil, + HandshakeConfig: testHandshake, + Plugins: pluginMap, + Reattach: config, + }) + client, err := c.Client() + if err != nil { + t.Fatalf("err: %s", err) + } + + // Request the plugin + raw, err := client.Dispense("RpcStepPlugin") + if err != nil { + t.Fail() + } + + plugin, ok := raw.(StepPlugin) + if !ok { + t.Fail() + } + + return plugin, client, cancel, closeCh +} + +func TestPlugin(t *testing.T) { + plugin, _, cancel, closeCh := pluginClient(t) + defer cancel() + + err := plugin.InitPlugin() + if err.Error() != "" { + t.Fail() + } + + ro := v1alpha1.Rollout{} + + _, err = plugin.Run(&ro, &types.RpcStepContext{}) + assert.Equal(t, "", err.Error()) + + _, err = plugin.Terminate(&ro, &types.RpcStepContext{}) + assert.Equal(t, "", err.Error()) + + _, err = plugin.Abort(&ro, &types.RpcStepContext{}) + assert.Equal(t, "", err.Error()) + + typeString := plugin.Type() + assert.Equal(t, "StepPlugin Test", typeString) + + // Canceling should cause an exit + cancel() + <-closeCh +} + +func TestPluginClosedConnection(t *testing.T) { + plugin, client, cancel, closeCh := pluginClient(t) + defer cancel() + + client.Close() + time.Sleep(100 * time.Millisecond) + + const expectedError = "connection is shut down" + + err := plugin.InitPlugin() + assert.Contains(t, err.Error(), expectedError) + + _, err = plugin.Run(&v1alpha1.Rollout{}, &types.RpcStepContext{}) + assert.Contains(t, err.Error(), expectedError) + + _, err = plugin.Terminate(&v1alpha1.Rollout{}, &types.RpcStepContext{}) + assert.Contains(t, err.Error(), expectedError) + + _, err = plugin.Abort(&v1alpha1.Rollout{}, &types.RpcStepContext{}) + assert.Contains(t, err.Error(), expectedError) + + cancel() + <-closeCh +} + +func TestInvalidArgs(t *testing.T) { + server := StepRPCServer{} + badtype := struct { + Args string + }{} + + var resp Response + err := server.Run(badtype, &resp) + assert.Error(t, err) + + err = server.Terminate(badtype, &resp) + assert.Error(t, err) + + err = server.Abort(badtype, &resp) + assert.Error(t, err) + +} diff --git a/rollout/steps/plugin/rpc/rpc_test_implementation.go b/rollout/steps/plugin/rpc/rpc_test_implementation.go new file mode 100644 index 0000000000..db577edf94 --- /dev/null +++ b/rollout/steps/plugin/rpc/rpc_test_implementation.go @@ -0,0 +1,29 @@ +package rpc + +import ( + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/utils/plugin/types" +) + +type testRpcPlugin struct{} + +func (p *testRpcPlugin) InitPlugin() types.RpcError { + return types.RpcError{} +} + +func (p *testRpcPlugin) Run(_ *v1alpha1.Rollout, _ *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + return types.RpcStepResult{}, types.RpcError{} +} + +func (p *testRpcPlugin) Terminate(_ *v1alpha1.Rollout, _ *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + return types.RpcStepResult{}, types.RpcError{} +} + +func (p *testRpcPlugin) Abort(_ *v1alpha1.Rollout, _ *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + return types.RpcStepResult{}, types.RpcError{} +} + +// Type returns the type of the step plugin +func (p *testRpcPlugin) Type() string { + return "StepPlugin Test" +} diff --git a/rollout/sync.go b/rollout/sync.go index 6d656e2d5a..a2d4a0d1e7 100644 --- a/rollout/sync.go +++ b/rollout/sync.go @@ -659,7 +659,7 @@ func (c *rolloutContext) calculateRolloutConditions(newStatus v1alpha1.RolloutSt // everything but lastTransitionTime. SetRolloutCondition already does that but // it also is not updating conditions when the reason of the new condition is the // same as the old. The Progressing condition is a special case because we want to - // update with the same reason and change just lastUpdateTime iff we notice any + // update with the same reason and change just lastUpdateTime if we notice any // progress. That's why we handle it here. if currentCond != nil { if currentCond.Status == corev1.ConditionTrue { @@ -895,6 +895,7 @@ func (c *rolloutContext) resetRolloutStatus(newStatus *v1alpha1.RolloutStatus) { newStatus.BlueGreen.ScaleUpPreviewCheckPoint = false newStatus.Canary.CurrentStepAnalysisRunStatus = nil newStatus.Canary.CurrentBackgroundAnalysisRunStatus = nil + newStatus.Canary.StepPluginStatuses = nil newStatus.CurrentStepIndex = replicasetutil.ResetCurrentStepIndex(c.rollout) } diff --git a/rollout/trafficrouting/plugin/client/client.go b/rollout/trafficrouting/plugin/client/client.go index a9a8b0b713..05ec1bc169 100644 --- a/rollout/trafficrouting/plugin/client/client.go +++ b/rollout/trafficrouting/plugin/client/client.go @@ -7,6 +7,7 @@ import ( "github.com/argoproj/argo-rollouts/rollout/trafficrouting/plugin/rpc" "github.com/argoproj/argo-rollouts/utils/plugin" + "github.com/argoproj/argo-rollouts/utils/plugin/types" goPlugin "github.com/hashicorp/go-plugin" ) @@ -52,7 +53,7 @@ func (t *trafficPlugin) startPlugin(pluginName string) (rpc.TrafficRouterPlugin, if t.pluginClient[pluginName] == nil || t.pluginClient[pluginName].Exited() { - pluginPath, args, err := plugin.GetPluginInfo(pluginName) + pluginPath, args, err := plugin.GetPluginInfo(pluginName, types.PluginTypeTrafficRouter) if err != nil { return nil, fmt.Errorf("unable to find plugin (%s): %w", pluginName, err) } diff --git a/test/cmd/step-plugin-e2e/internal/plugin/plugin.go b/test/cmd/step-plugin-e2e/internal/plugin/plugin.go new file mode 100644 index 0000000000..f46d9bfa78 --- /dev/null +++ b/test/cmd/step-plugin-e2e/internal/plugin/plugin.go @@ -0,0 +1,172 @@ +package plugin + +import ( + "encoding/json" + "fmt" + "time" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" + "github.com/argoproj/argo-rollouts/utils/plugin/types" + "github.com/google/uuid" + log "github.com/sirupsen/logrus" +) + +type Config struct { + Return string + Requeue string + + Abort Abort + Terminate Terminate +} + +type Abort struct { + Return string +} + +type Terminate struct { + Return string +} + +type State struct { + Data string + Count int +} + +type rpcPlugin struct { + LogCtx *log.Entry +} + +func New(logCtx *log.Entry) rpc.StepPlugin { + return &rpcPlugin{ + LogCtx: logCtx, + } +} + +func (p *rpcPlugin) InitPlugin() types.RpcError { + p.LogCtx.Infof("InitPlugin") + return types.RpcError{} +} + +func (p *rpcPlugin) Run(rollout *v1alpha1.Rollout, context *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + p.LogCtx.Infof("Run plugin for rollout %s/%s", rollout.Namespace, rollout.Name) + + // Get configs + var config Config + var state State + if context != nil { + if context.Config != nil { + if err := json.Unmarshal(context.Config, &config); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not unmarshal config: %w", err).Error()} + } + p.LogCtx.Infof("Using config: %+v", config) + } + if context.Status != nil { + if err := json.Unmarshal(context.Status, &state); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not unmarshal status: %w", err).Error()} + } + p.LogCtx.Infof("Using status: %+v", state) + } + } + + if state.Data == "" { + state.Data = uuid.New().String() + } + state.Count = state.Count + 1 + + var requeue time.Duration + if config.Requeue != "" { + v, err := time.ParseDuration(config.Requeue) + if err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not parse requeue duration: %w", err).Error()} + } + requeue = v + } + + phase := types.PhaseSuccessful + if config.Return != "" { + phase = types.StepPhase(config.Return) + if err := phase.Validate(); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not parse phase: %w", err).Error()} + } + } + + return Result(state, phase, requeue) +} + +func (p *rpcPlugin) Terminate(rollout *v1alpha1.Rollout, context *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + p.LogCtx.Infof("Terminate plugin for rollout %s/%s", rollout.Namespace, rollout.Name) + + // Get configs + var config Config + var state State + if context != nil { + if context.Config != nil { + if err := json.Unmarshal(context.Config, &config); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not unmarshal config: %w", err).Error()} + } + } + if context.Status != nil { + if err := json.Unmarshal(context.Status, &state); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not unmarshal status: %w", err).Error()} + } + } + } + + phase := types.PhaseSuccessful + if config.Terminate.Return != "" { + phase = types.StepPhase(config.Terminate.Return) + if err := phase.Validate(); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not parse phase: %w", err).Error()} + } + } + + return Result(state, phase, 0) +} + +func (p *rpcPlugin) Abort(rollout *v1alpha1.Rollout, context *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + p.LogCtx.Infof("Abort plugin for rollout %s/%s", rollout.Namespace, rollout.Name) + + // Get configs + var config Config + var state State + if context != nil { + if context.Config != nil { + if err := json.Unmarshal(context.Config, &config); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not unmarshal config: %w", err).Error()} + } + } + if context.Status != nil { + if err := json.Unmarshal(context.Status, &state); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not unmarshal status: %w", err).Error()} + } + } + } + + phase := types.PhaseSuccessful + if config.Abort.Return != "" { + phase = types.StepPhase(config.Abort.Return) + if err := phase.Validate(); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not parse phase: %w", err).Error()} + } + } + + return Result(state, phase, 0) +} + +func (p *rpcPlugin) Type() string { + return "e2e-plugin" +} + +func Result(state State, phase types.StepPhase, requeue time.Duration) (types.RpcStepResult, types.RpcError) { + stateRaw, err := json.Marshal(state) + if err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Sprintf("Could not marshal state: %v", err)} + } + + return types.RpcStepResult{ + Phase: phase, + RequeueAfter: requeue, + Status: stateRaw, + }, types.RpcError{} +} diff --git a/test/cmd/step-plugin-e2e/main.go b/test/cmd/step-plugin-e2e/main.go new file mode 100644 index 0000000000..995b0fe690 --- /dev/null +++ b/test/cmd/step-plugin-e2e/main.go @@ -0,0 +1,60 @@ +package main + +import ( + "strings" + + rolloutsPlugin "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" + "github.com/argoproj/argo-rollouts/test/cmd/step-plugin-e2e/internal/plugin" + goPlugin "github.com/hashicorp/go-plugin" + log "github.com/sirupsen/logrus" +) + +var handshakeConfig = goPlugin.HandshakeConfig{ + ProtocolVersion: 1, + MagicCookieKey: "ARGO_ROLLOUTS_RPC_PLUGIN", + MagicCookieValue: "step", +} + +func main() { + logCtx := log.WithFields(log.Fields{"plugin": "e2e"}) + + setLogLevel("debug") + log.SetFormatter(createFormatter("text")) + + // pluginMap is the map of plugins we can dispense. + var pluginMap = map[string]goPlugin.Plugin{ + "RpcStepPlugin": &rolloutsPlugin.RpcStepPlugin{Impl: plugin.New(logCtx)}, + } + + goPlugin.Serve(&goPlugin.ServeConfig{ + HandshakeConfig: handshakeConfig, + Plugins: pluginMap, + }) +} + +func createFormatter(logFormat string) log.Formatter { + var formatType log.Formatter + switch strings.ToLower(logFormat) { + case "json": + formatType = &log.JSONFormatter{} + case "text": + formatType = &log.TextFormatter{ + FullTimestamp: true, + } + default: + log.Infof("Unknown format: %s. Using text logformat", logFormat) + formatType = &log.TextFormatter{ + FullTimestamp: true, + } + } + + return formatType +} + +func setLogLevel(logLevel string) { + level, err := log.ParseLevel(logLevel) + if err != nil { + log.Fatal(err) + } + log.SetLevel(level) +} diff --git a/test/cmd/step-plugin-sample/internal/plugin/plugin.go b/test/cmd/step-plugin-sample/internal/plugin/plugin.go new file mode 100644 index 0000000000..de2341dfd1 --- /dev/null +++ b/test/cmd/step-plugin-sample/internal/plugin/plugin.go @@ -0,0 +1,263 @@ +package plugin + +import ( + "encoding/json" + "fmt" + "math/rand" + "strconv" + "sync" + "time" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" + "github.com/argoproj/argo-rollouts/utils/plugin/types" + "github.com/google/uuid" + log "github.com/sirupsen/logrus" +) + +type Config struct { + Async bool + Aggregate bool +} + +type State struct { + Id string + SharedId string + + Value string +} + +type Result struct { + Value int + Id string +} + +type rpcPlugin struct { + LogCtx *log.Entry + Seed int64 + + lock *sync.RWMutex + generator *rand.Rand + randomMap map[string]*Result +} + +func New(logCtx *log.Entry, seed int64) rpc.StepPlugin { + return &rpcPlugin{ + LogCtx: logCtx, + Seed: seed, + lock: &sync.RWMutex{}, + } +} + +func (p *rpcPlugin) InitPlugin() types.RpcError { + p.lock.Lock() + defer p.lock.Unlock() + + p.LogCtx.Infof("InitPlugin with seed %d", p.Seed) + p.generator = rand.New(rand.NewSource(p.Seed)) + p.randomMap = map[string]*Result{} + return types.RpcError{} +} + +func (p *rpcPlugin) Run(rollout *v1alpha1.Rollout, context *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + // if !p.validate(rollout) { + + // } + + // Get configs + var config Config + var state State + if context != nil { + if context.Config != nil { + if err := json.Unmarshal(context.Config, &config); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not unmarshal config: %w", err).Error()} + } + } + if context.Status != nil { + if err := json.Unmarshal(context.Status, &state); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not unmarshal status: %w", err).Error()} + } + } + } + + // Already completed + if state.Value != "" { + return CompletedResult(state) + } + + // If Aggregate, look for previous steps. We want to re-use the value in memory for that step id + if config.Aggregate && state.SharedId == "" { + lastStep := getLastStep(rollout, context.PluginName) + if lastStep != nil { + var lastState State + if err := json.Unmarshal(lastStep.Status, &lastState); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: "could not unmarshal last step status"} + } + if lastState.SharedId != "" { + // consecutive aggregate steps all use the same id + state.SharedId = lastState.SharedId + } else { + // Most likely the last step was not an aggregate, so we restart a sequence with this id + state.SharedId = lastState.Id + } + } + } + + // Already started, look if it is completed + if state.Id != "" { + p.lock.RLock() + v, ok := p.randomMap[state.getId()] + p.lock.RUnlock() + if ok { + if v.Id == state.Id { + // Make sure the current step is the one that updated the value + state.Value = strconv.Itoa(v.Value) + return CompletedResult(state) + } + } + return RunningResult(state) + } + + state.Id = uuid.New().String() + if config.Async { + go func(state State) { + time.Sleep(60 * time.Second) + p.generate(state) + }(state) + return RunningResult(state) + } else { + state.Value = strconv.Itoa(p.generate(state).Value) + } + + return CompletedResult(state) + +} + +func (p *rpcPlugin) Terminate(rollout *v1alpha1.Rollout, context *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + // Get configs + var config Config + var state State + if context != nil { + if context.Config != nil { + if err := json.Unmarshal(context.Config, &config); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not unmarshal config: %w", err).Error()} + } + } + if context.Status != nil { + if err := json.Unmarshal(context.Status, &state); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not unmarshal status: %w", err).Error()} + } + } + } + + log.Infof("Ignoring future value for '%s'", state.Id) + state.Value = "0" + return CompletedResult(state) + +} + +func (p *rpcPlugin) Abort(_ *v1alpha1.Rollout, context *types.RpcStepContext) (types.RpcStepResult, types.RpcError) { + + // Get configs + var config Config + var state State + if context != nil { + if context.Config != nil { + if err := json.Unmarshal(context.Config, &config); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not unmarshal config: %w", err).Error()} + } + } + if context.Status != nil { + if err := json.Unmarshal(context.Status, &state); err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Errorf("could not unmarshal status: %w", err).Error()} + } + } + } + + p.lock.Lock() + defer p.lock.Unlock() + + log.Infof("deleting entry for id '%s'", state.getId()) + delete(p.randomMap, state.getId()) + + return CompletedResult(state) +} + +func (p *rpcPlugin) Type() string { + return "plugin-example" +} + +// func (p *RpcPlugin) validate(rollout *v1alpha1.Rollout) bool { +// if rollout == nil || rollout.Status == nil || rollout.Status.Canary == nil {} +// } + +func (p *rpcPlugin) generate(state State) *Result { + p.lock.Lock() + defer p.lock.Unlock() + + base := 0 + if state.SharedId != "" { + v, ok := p.randomMap[state.SharedId] + if ok { + log.Infof("Using base '%d' for aggregate %s", v.Value, state.SharedId) + base = v.Value + } + } + + result := &Result{ + Value: p.generator.Intn(100) + base, + Id: state.Id, + } + p.randomMap[state.getId()] = result + log.Infof("Set '%d' for id %s", result.Value, state.getId()) + + return result +} + +func (s State) getId() string { + if s.SharedId != "" { + return s.SharedId + } + return s.Id +} + +func getLastStep(rollout *v1alpha1.Rollout, name string) *v1alpha1.StepPluginStatus { + var last *v1alpha1.StepPluginStatus + currentStepIndex := *rollout.Status.CurrentStepIndex + for _, status := range rollout.Status.Canary.StepPluginStatuses { + if status.Name != name || status.Index == currentStepIndex { + continue + } + + if last == nil || status.Index > last.Index { + last = &status + } + } + return last +} + +func CompletedResult(state State) (types.RpcStepResult, types.RpcError) { + stateRaw, err := json.Marshal(state) + if err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Sprintf("Could not marshal state: %v", err)} + } + + return types.RpcStepResult{ + Phase: types.PhaseSuccessful, + Message: "Operation completed", + Status: stateRaw, + }, types.RpcError{} +} + +func RunningResult(state State) (types.RpcStepResult, types.RpcError) { + stateRaw, err := json.Marshal(state) + if err != nil { + return types.RpcStepResult{}, types.RpcError{ErrorString: fmt.Sprintf("Could not marshal state: %v", err)} + } + + return types.RpcStepResult{ + Phase: types.PhaseRunning, + RequeueAfter: 15 * time.Second, + Status: stateRaw, + }, types.RpcError{} +} diff --git a/test/cmd/step-plugin-sample/internal/plugin/plugin_test.go b/test/cmd/step-plugin-sample/internal/plugin/plugin_test.go new file mode 100644 index 0000000000..97897217c0 --- /dev/null +++ b/test/cmd/step-plugin-sample/internal/plugin/plugin_test.go @@ -0,0 +1,368 @@ +package plugin + +import ( + "encoding/json" + "sync" + "testing" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/utils/plugin/types" + log "github.com/sirupsen/logrus" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "k8s.io/utils/ptr" +) + +func new(logCtx *log.Entry, seed int64) *rpcPlugin { + return &rpcPlugin{ + LogCtx: logCtx, + Seed: seed, + lock: &sync.RWMutex{}, + } +} + +func newRollout() *v1alpha1.Rollout { + return &v1alpha1.Rollout{ + Spec: v1alpha1.RolloutSpec{ + Strategy: v1alpha1.RolloutStrategy{ + Canary: &v1alpha1.CanaryStrategy{}, + }, + }, + Status: v1alpha1.RolloutStatus{ + Canary: v1alpha1.CanaryStatus{}, + }, + } +} + +func getStateFromResult(t *testing.T, result types.RpcStepResult) *State { + require.NotNil(t, result) + + var state *State + if err := json.Unmarshal(result.Status, &state); err != nil { + require.NotNil(t, err) + } + return state +} + +func toRaw(obj any) json.RawMessage { + raw, err := json.Marshal(obj) + if err != nil { + panic(err) + } + return raw +} + +func Test_rpcPlugin_Run(t *testing.T) { + t.Run("Return value with nil context", func(t *testing.T) { + p := New(log.WithFields(log.Fields{}), 0) + err := p.InitPlugin() + if err.HasError() { + t.Fatalf("Got error during init: %s", err.Error()) + } + + rollout := newRollout() + + got, err := p.Run(rollout, nil) + + require.False(t, err.HasError(), "Error: %s", err.Error()) + assert.Equal(t, types.PhaseSuccessful, got.Phase) + state := getStateFromResult(t, got) + assert.Equal(t, "74", state.Value) + + }) + t.Run("Return value with empty context", func(t *testing.T) { + p := New(log.WithFields(log.Fields{}), 0) + err := p.InitPlugin() + if err.HasError() { + t.Fatalf("Got error during init: %s", err.Error()) + } + + rollout := newRollout() + context := &types.RpcStepContext{ + PluginName: "test", + Config: nil, + Status: nil, + } + + got, err := p.Run(rollout, context) + + require.False(t, err.HasError(), "Error: %s", err.Error()) + assert.Equal(t, types.PhaseSuccessful, got.Phase) + state := getStateFromResult(t, got) + assert.Equal(t, "74", state.Value) + + }) + + t.Run("Return value with existing state", func(t *testing.T) { + p := New(log.WithFields(log.Fields{}), 0) + err := p.InitPlugin() + if err.HasError() { + t.Fatalf("Got error during init: %s", err.Error()) + } + + rollout := newRollout() + context := &types.RpcStepContext{ + PluginName: "test", + Config: nil, + Status: toRaw(&State{ + Id: "fake-id", + Value: "123", + }), + } + + got, err := p.Run(rollout, context) + + require.False(t, err.HasError(), "Error: %s", err.Error()) + assert.Equal(t, types.PhaseSuccessful, got.Phase) + state := getStateFromResult(t, got) + assert.Equal(t, "123", state.Value) + }) + + t.Run("Running status with async config", func(t *testing.T) { + p := New(log.WithFields(log.Fields{}), 0) + err := p.InitPlugin() + if err.HasError() { + t.Fatalf("Got error during init: %s", err.Error()) + } + + rollout := newRollout() + context := &types.RpcStepContext{ + PluginName: "test", + Config: toRaw(&Config{ + Async: true, + }), + Status: nil, + } + + got, err := p.Run(rollout, context) + + require.False(t, err.HasError(), "Error: %s", err.Error()) + assert.Equal(t, types.PhaseRunning, got.Phase) + state := getStateFromResult(t, got) + assert.Equal(t, "", state.Value) + }) + + t.Run("Return running with async config and existing state not completed", func(t *testing.T) { + p := new(log.WithFields(log.Fields{}), 0) + err := p.InitPlugin() + if err.HasError() { + t.Fatalf("Got error during init: %s", err.Error()) + } + + rollout := newRollout() + context := &types.RpcStepContext{ + PluginName: "test", + Config: toRaw(&Config{ + Async: true, + }), + Status: toRaw(&State{ + Id: "fake-id", + }), + } + + got, err := p.Run(rollout, context) + + require.False(t, err.HasError(), "Error: %s", err.Error()) + assert.Equal(t, types.PhaseRunning, got.Phase) + state := getStateFromResult(t, got) + assert.Equal(t, "", state.Value) + }) + + t.Run("Return value with async config and existing state", func(t *testing.T) { + p := new(log.WithFields(log.Fields{}), 0) + err := p.InitPlugin() + if err.HasError() { + t.Fatalf("Got error during init: %s", err.Error()) + } + p.randomMap["fake-id"] = &Result{ + Value: 44, + Id: "fake-id", + } + + rollout := newRollout() + context := &types.RpcStepContext{ + PluginName: "test", + Config: toRaw(&Config{ + Async: true, + }), + Status: toRaw(&State{ + Id: "fake-id", + }), + } + + got, err := p.Run(rollout, context) + + require.False(t, err.HasError(), "Error: %s", err.Error()) + assert.Equal(t, types.PhaseSuccessful, got.Phase) + state := getStateFromResult(t, got) + assert.Equal(t, "44", state.Value) + }) + + t.Run("Return value with aggregate and no previous step", func(t *testing.T) { + p := new(log.WithFields(log.Fields{}), 0) + err := p.InitPlugin() + if err.HasError() { + t.Fatalf("Got error during init: %s", err.Error()) + } + p.randomMap["foo"] = &Result{ + Value: 6, + Id: "foo", + } + + rollout := newRollout() + rollout.Spec.Strategy.Canary.Steps = []v1alpha1.CanaryStep{ + { + Plugin: &v1alpha1.PluginStep{ + Name: "test", + }, + }, + { + Plugin: &v1alpha1.PluginStep{ + Name: "test", + }, + }, + } + rollout.Status.CurrentStepIndex = ptr.To(int32(0)) + rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: 0, + Name: "test", + Status: toRaw(&State{ + Id: "foo", + Value: "99", + }), + }, + } + context := &types.RpcStepContext{ + PluginName: "test", + Config: toRaw(&Config{ + Aggregate: true, + }), + Status: nil, + } + + got, err := p.Run(rollout, context) + + require.False(t, err.HasError(), "Error: %s", err.Error()) + assert.Equal(t, types.PhaseSuccessful, got.Phase) + state := getStateFromResult(t, got) + assert.Equal(t, "74", state.Value) + }) + + t.Run("Return value with aggregate", func(t *testing.T) { + p := new(log.WithFields(log.Fields{}), 0) + err := p.InitPlugin() + if err.HasError() { + t.Fatalf("Got error during init: %s", err.Error()) + } + p.randomMap["foo"] = &Result{ + Value: 6, + Id: "foo", + } + + rollout := newRollout() + rollout.Spec.Strategy.Canary.Steps = []v1alpha1.CanaryStep{ + { + Plugin: &v1alpha1.PluginStep{ + Name: "test", + }, + }, + { + Plugin: &v1alpha1.PluginStep{ + Name: "test", + }, + }, + } + rollout.Status.CurrentStepIndex = ptr.To(int32(1)) + rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: 0, + Name: "test", + Status: toRaw(&State{ + Id: "foo", + Value: "6", + }), + }, + } + context := &types.RpcStepContext{ + PluginName: "test", + Config: toRaw(&Config{ + Aggregate: true, + }), + Status: nil, + } + + got, err := p.Run(rollout, context) + + require.False(t, err.HasError(), "Error: %s", err.Error()) + assert.Equal(t, types.PhaseSuccessful, got.Phase) + state := getStateFromResult(t, got) + assert.Equal(t, "80", state.Value) + }) + + t.Run("Return value with aggregate of an aggregate", func(t *testing.T) { + p := new(log.WithFields(log.Fields{}), 0) + err := p.InitPlugin() + if err.HasError() { + t.Fatalf("Got error during init: %s", err.Error()) + } + p.randomMap["foo"] = &Result{ + Value: 80, + Id: "bar", + } + + rollout := newRollout() + rollout.Spec.Strategy.Canary.Steps = []v1alpha1.CanaryStep{ + { + Plugin: &v1alpha1.PluginStep{ + Name: "test", + }, + }, + { + Plugin: &v1alpha1.PluginStep{ + Name: "test", + }, + }, + { + Plugin: &v1alpha1.PluginStep{ + Name: "test", + }, + }, + } + rollout.Status.CurrentStepIndex = ptr.To(int32(2)) + rollout.Status.Canary.StepPluginStatuses = []v1alpha1.StepPluginStatus{ + { + Index: 0, + Name: "test", + Status: toRaw(&State{ + Id: "foo", + Value: "6", + }), + }, + { + Index: 1, + Name: "test", + Status: toRaw(&State{ + Id: "bar", + SharedId: "foo", + Value: "80", + }), + }, + } + context := &types.RpcStepContext{ + PluginName: "test", + Config: toRaw(&Config{ + Aggregate: true, + }), + Status: nil, + } + + got, err := p.Run(rollout, context) + + require.False(t, err.HasError(), "Error: %s", err.Error()) + assert.Equal(t, types.PhaseSuccessful, got.Phase) + state := getStateFromResult(t, got) + assert.Equal(t, "154", state.Value) + }) + +} diff --git a/test/cmd/step-plugin-sample/main.go b/test/cmd/step-plugin-sample/main.go new file mode 100644 index 0000000000..f70d4d25eb --- /dev/null +++ b/test/cmd/step-plugin-sample/main.go @@ -0,0 +1,86 @@ +package main + +import ( + "os" + "strconv" + "strings" + "time" + + rolloutsPlugin "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" + "github.com/argoproj/argo-rollouts/test/cmd/step-plugin-sample/internal/plugin" + goPlugin "github.com/hashicorp/go-plugin" + log "github.com/sirupsen/logrus" +) + +// handshakeConfigs are used to just do a basic handshake between +// a plugin and host. If the handshake fails, a user friendly error is shown. +// This prevents users from executing bad plugins or executing a plugin +// directory. It is a UX feature, not a security feature. +var handshakeConfig = goPlugin.HandshakeConfig{ + ProtocolVersion: 1, + MagicCookieKey: "ARGO_ROLLOUTS_RPC_PLUGIN", + MagicCookieValue: "step", +} + +func main() { + logCtx := log.WithFields(log.Fields{"plugin": "step"}) + + setLogLevel("debug") + log.SetFormatter(createFormatter("text")) + + seed := time.Now().UnixNano() + + args := os.Args[1:] + if len(args) > 0 { + if args[0] == "--seed" { + if len(args) >= 2 { + n, err := strconv.ParseInt(args[1], 10, 64) + if err != nil { + log.Fatal(err) + } + seed = n + } else { + log.Fatal("No value for --seed argument") + } + } + } + + // pluginMap is the map of plugins we can dispense. + var pluginMap = map[string]goPlugin.Plugin{ + "RpcStepPlugin": &rolloutsPlugin.RpcStepPlugin{Impl: plugin.New(logCtx, seed)}, + } + + logCtx.Debug("message from plugin", "foo", "bar") + + goPlugin.Serve(&goPlugin.ServeConfig{ + HandshakeConfig: handshakeConfig, + Plugins: pluginMap, + }) +} + +func createFormatter(logFormat string) log.Formatter { + var formatType log.Formatter + switch strings.ToLower(logFormat) { + case "json": + formatType = &log.JSONFormatter{} + case "text": + formatType = &log.TextFormatter{ + FullTimestamp: true, + } + default: + log.Infof("Unknown format: %s. Using text logformat", logFormat) + formatType = &log.TextFormatter{ + FullTimestamp: true, + } + } + + return formatType +} + +func setLogLevel(logLevel string) { + level, err := log.ParseLevel(logLevel) + if err != nil { + log.Fatal(err) + } + log.SetLevel(level) +} diff --git a/test/cmd/step-plugin-sample/main_test.go b/test/cmd/step-plugin-sample/main_test.go new file mode 100644 index 0000000000..17bc5730b7 --- /dev/null +++ b/test/cmd/step-plugin-sample/main_test.go @@ -0,0 +1,107 @@ +package main + +import ( + "context" + "testing" + "time" + + "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" + rolloutsPlugin "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" + "github.com/argoproj/argo-rollouts/test/cmd/step-plugin-sample/internal/plugin" + "github.com/argoproj/argo-rollouts/utils/plugin/types" + goPlugin "github.com/hashicorp/go-plugin" + log "github.com/sirupsen/logrus" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/tj/assert" +) + +var testHandshake = goPlugin.HandshakeConfig{ + ProtocolVersion: 1, + MagicCookieKey: "ARGO_ROLLOUTS_RPC_PLUGIN", + MagicCookieValue: "step", +} + +func pluginClient(t *testing.T) (rpc.StepPlugin, goPlugin.ClientProtocol, func(), chan struct{}) { + ctx, cancel := context.WithCancel(context.Background()) + + pluginImpl := plugin.New(log.WithFields(log.Fields{}), 0) + + // pluginMap is the map of plugins we can dispense. + var pluginMap = map[string]goPlugin.Plugin{ + "RpcStepPlugin": &rolloutsPlugin.RpcStepPlugin{Impl: pluginImpl}, + } + + ch := make(chan *goPlugin.ReattachConfig, 1) + closeCh := make(chan struct{}) + go goPlugin.Serve(&goPlugin.ServeConfig{ + HandshakeConfig: testHandshake, + Plugins: pluginMap, + Test: &goPlugin.ServeTestConfig{ + Context: ctx, + ReattachConfigCh: ch, + CloseCh: closeCh, + }, + }) + + // We should get a config + var config *goPlugin.ReattachConfig + select { + case config = <-ch: + case <-time.After(2000 * time.Millisecond): + t.Fatal("should've received reattach") + } + if config == nil { + t.Fatal("config should not be nil") + } + + // Connect! + c := goPlugin.NewClient(&goPlugin.ClientConfig{ + Cmd: nil, + HandshakeConfig: testHandshake, + Plugins: pluginMap, + Reattach: config, + }) + client, err := c.Client() + if err != nil { + t.Fatalf("err: %s", err) + } + + // Request the plugin + raw, err := client.Dispense("RpcStepPlugin") + if err != nil { + t.Fail() + } + + plugin, ok := raw.(rpc.StepPlugin) + if !ok { + t.Fail() + } + + return plugin, client, cancel, closeCh +} + +func TestPlugin(t *testing.T) { + plugin, _, cancel, closeCh := pluginClient(t) + defer cancel() + + err := plugin.InitPlugin() + if err.Error() != "" { + t.Fail() + } + + ro := v1alpha1.Rollout{} + rpcCtx := &types.RpcStepContext{ + PluginName: "test-1", + Config: nil, + Status: nil, + } + + result, err := plugin.Run(&ro, rpcCtx) + assert.Equal(t, "", err.Error()) + assert.NotNil(t, result) + + // Canceling should cause an exit + cancel() + <-closeCh +} diff --git a/test/e2e/canary_test.go b/test/e2e/canary_test.go index 8656aa5c4d..7bf3af22c8 100644 --- a/test/e2e/canary_test.go +++ b/test/e2e/canary_test.go @@ -47,7 +47,7 @@ func (s *CanarySuite) TestCanarySetCanaryScale() { - pause: {duration: 5s} ` s.Given(). - RolloutTemplate("@functional/nginx-template.yaml", "set-canary-scale"). + RolloutTemplate("@functional/nginx-template.yaml", map[string]string{"REPLACEME": "set-canary-scale"}). SetSteps(canarySteps). When(). ApplyManifests(). diff --git a/test/e2e/step-plugin/argo-rollouts-config.yaml b/test/e2e/step-plugin/argo-rollouts-config.yaml new file mode 100644 index 0000000000..281d851d7a --- /dev/null +++ b/test/e2e/step-plugin/argo-rollouts-config.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/component: rollouts-controller + app.kubernetes.io/name: argo-rollouts + app.kubernetes.io/part-of: argo-rollouts + name: argo-rollouts-config + namespace: argo-rollouts +data: + stepPlugins: |- + - name: "step/e2e-test" # name of the plugin, it must match the name required by the plugin so it can find it's configuration + location: "file://plugin-bin/e2e-step-plugin" # supports http(s):// urls and file:// + disabled: false + - name: "step/e2e-test-disabled" # name of the plugin, it must match the name required by the plugin so it can find it's configuration + location: "file://plugin-bin/e2e-step-plugin" # supports http(s):// urls and file:// + disabled: true diff --git a/test/e2e/step-plugin/disabled-rollout.yaml b/test/e2e/step-plugin/disabled-rollout.yaml new file mode 100644 index 0000000000..3ebc15c679 --- /dev/null +++ b/test/e2e/step-plugin/disabled-rollout.yaml @@ -0,0 +1,31 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Rollout +metadata: + name: disabled-step-plugin +spec: + selector: + matchLabels: + app: disabled-step-plugin + strategy: + canary: + steps: + - plugin: + name: $$disabled_plugin$$ + config: + return: Successful + - plugin: + name: step/e2e-test + config: + return: Successful + template: + metadata: + labels: + app: disabled-step-plugin + spec: + containers: + - name: basic + image: nginx:1.19-alpine + resources: + requests: + memory: 16Mi + cpu: 1m diff --git a/test/e2e/step-plugin/invalid-rollout.yaml b/test/e2e/step-plugin/invalid-rollout.yaml new file mode 100644 index 0000000000..df75248db1 --- /dev/null +++ b/test/e2e/step-plugin/invalid-rollout.yaml @@ -0,0 +1,26 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Rollout +metadata: + name: invalid-step-plugin +spec: + progressDeadlineSeconds: 15 + selector: + matchLabels: + app: invalid-step-plugin + strategy: + canary: + steps: + - plugin: + name: step/e2e-test-invalid-name + template: + metadata: + labels: + app: invalid-step-plugin + spec: + containers: + - name: basic + image: nginx:1.19-alpine + resources: + requests: + memory: 16Mi + cpu: 1m diff --git a/test/e2e/step-plugin/template-rollout.yaml b/test/e2e/step-plugin/template-rollout.yaml new file mode 100644 index 0000000000..1d4d064662 --- /dev/null +++ b/test/e2e/step-plugin/template-rollout.yaml @@ -0,0 +1,32 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Rollout +metadata: + name: step-plugin-e2e-$$name$$ +spec: + selector: + matchLabels: + app: step-plugin-e2e-$$name$$ + strategy: + canary: + steps: + - plugin: + name: step/e2e-test + config: + return: Successful + - plugin: + name: step/e2e-test + config: + return: $$phase$$ + requeue: 17s + template: + metadata: + labels: + app: step-plugin-e2e-$$name$$ + spec: + containers: + - name: basic + image: nginx:1.19-alpine + resources: + requests: + memory: 16Mi + cpu: 1m diff --git a/test/e2e/step_plugin_test.go b/test/e2e/step_plugin_test.go new file mode 100644 index 0000000000..5a938f3f51 --- /dev/null +++ b/test/e2e/step_plugin_test.go @@ -0,0 +1,338 @@ +//go:build e2e +// +build e2e + +package e2e + +import ( + "context" + "testing" + "time" + + "github.com/stretchr/testify/suite" + "github.com/tj/assert" + "gopkg.in/yaml.v2" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/test/fixtures" + "github.com/argoproj/argo-rollouts/utils/plugin/types" + corev1 "k8s.io/api/core/v1" +) + +const E2EStepPluginName = "step/e2e-test" +const E2EStepPluginNameDisabled = "step/e2e-test-disabled" + +type StepPluginSuite struct { + fixtures.E2ESuite +} + +func TestStepPluginSuite(t *testing.T) { + suite.Run(t, new(StepPluginSuite)) +} + +func (s *StepPluginSuite) SetupSuite() { + s.E2ESuite.SetupSuite() + if !IsStepPluginConfigured(&s.Common, s.GetControllerConfig()) { + s.T().SkipNow() + } +} + +// getControllerConfiguredPlugin look at the controller default config map to find the list of plugins +// This is a best effort because it does not mean the controller have these plugins configured in-memory +func IsStepPluginConfigured(c *fixtures.Common, config *corev1.ConfigMap) bool { + if config == nil { + return false + } + + var stepPlugins []types.PluginItem + if err := yaml.Unmarshal([]byte(config.Data["stepPlugins"]), &stepPlugins); err != nil { + c.CheckError(err) + } + + hasPlugin := false + hasPluginDisabled := false + for _, p := range stepPlugins { + if p.Name == E2EStepPluginName { + hasPlugin = true + } + if p.Name == E2EStepPluginNameDisabled { + hasPluginDisabled = true + } + } + return hasPlugin && hasPluginDisabled +} + +// test step plugin ignored when disabled +// test rollout error when step plugin not configured + +func (s *StepPluginSuite) TestRolloutCompletesWhenStepSuccessful() { + s.Given(). + RolloutTemplate("@step-plugin/template-rollout.yaml", map[string]string{"$$name$$": "successful", "$$phase$$": string(types.PhaseSuccessful)}). + When(). + ApplyManifests().WaitForRolloutStatus("Healthy"). + UpdateSpec().WaitForRolloutStatus("Healthy"). + Then(). + ExpectStableRevision("2"). + Assert(func(t *fixtures.Then) { + rollout := t.GetRollout() + assert.EqualValues(s.T(), 2, len(rollout.Status.Canary.StepPluginStatuses)) + + stepStatus := rollout.Status.Canary.StepPluginStatuses[1] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 1, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseSuccessful, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationRun, stepStatus.Operation) + }) +} + +func (s *StepPluginSuite) TestRolloutAbortWhenStepFails() { + s.Given(). + RolloutTemplate("@step-plugin/template-rollout.yaml", map[string]string{"$$name$$": "failed", "$$phase$$": string(types.PhaseFailed)}). + When(). + ApplyManifests().WaitForRolloutStatus("Healthy"). + UpdateSpec().WaitForRolloutStatus("Degraded"). + Then(). + ExpectStableRevision("1"). + Assert(func(t *fixtures.Then) { + rollout := t.GetRollout() + assert.True(s.T(), rollout.Status.Abort) + assert.EqualValues(s.T(), 3, len(rollout.Status.Canary.StepPluginStatuses)) + + stepStatus := rollout.Status.Canary.StepPluginStatuses[1] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 1, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseFailed, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationRun, stepStatus.Operation) + + stepStatus = rollout.Status.Canary.StepPluginStatuses[2] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 0, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseSuccessful, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationAbort, stepStatus.Operation) + }) +} + +func (s *StepPluginSuite) TestRolloutAbortStepsWhenAborted() { + s.Given(). + RolloutTemplate("@step-plugin/template-rollout.yaml", map[string]string{"$$name$$": "aborted", "$$phase$$": string(types.PhaseRunning)}). + When(). + ApplyManifests().WaitForRolloutStatus("Healthy"). + UpdateSpec().WaitForRolloutStatus("Progressing"). + WaitForRolloutCanaryStepIndex(1). + WaitForRolloutStepPluginRunning(). + AbortRollout().WaitForRolloutStatus("Degraded"). + Then(). + Assert(func(t *fixtures.Then) { + rollout := t.GetRollout() + assert.True(s.T(), rollout.Status.Abort) + assert.EqualValues(s.T(), 4, len(rollout.Status.Canary.StepPluginStatuses)) + + stepStatus := rollout.Status.Canary.StepPluginStatuses[1] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 1, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseRunning, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationRun, stepStatus.Operation) + + stepStatus = rollout.Status.Canary.StepPluginStatuses[2] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 1, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseSuccessful, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationAbort, stepStatus.Operation) + + stepStatus = rollout.Status.Canary.StepPluginStatuses[3] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 0, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseSuccessful, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationAbort, stepStatus.Operation) + }) +} + +func (s *StepPluginSuite) TestRolloutRetryAbortedRollout() { + s.Given(). + RolloutTemplate("@step-plugin/template-rollout.yaml", map[string]string{"$$name$$": "aborted", "$$phase$$": string(types.PhaseRunning)}). + When(). + ApplyManifests().WaitForRolloutStatus("Healthy"). + UpdateSpec().WaitForRolloutStatus("Progressing"). + WaitForRolloutCanaryStepIndex(1). + WaitForRolloutStepPluginRunning(). + AbortRollout().WaitForRolloutStatus("Degraded"). + RetryRollout().WaitForRolloutStepPluginRunning(). + Then(). + Assert(func(t *fixtures.Then) { + rollout := t.GetRollout() + assert.False(s.T(), rollout.Status.Abort) + assert.EqualValues(s.T(), 2, len(rollout.Status.Canary.StepPluginStatuses)) + + stepStatus := rollout.Status.Canary.StepPluginStatuses[1] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 1, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseRunning, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationRun, stepStatus.Operation) + }) +} + +func (s *StepPluginSuite) TestRolloutCompletesWhenPromotedAndStepRunning() { + s.Given(). + RolloutTemplate("@step-plugin/template-rollout.yaml", map[string]string{"$$name$$": "full-promotion", "$$phase$$": string(types.PhaseRunning)}). + When(). + ApplyManifests().WaitForRolloutStatus("Healthy"). + UpdateSpec().WaitForRolloutStatus("Progressing"). + WaitForRolloutCanaryStepIndex(1). + WaitForRolloutStepPluginRunning(). + PromoteRolloutFull().WaitForRolloutStatus("Healthy"). + Then(). + Assert(func(t *fixtures.Then) { + rollout := t.GetRollout() + assert.EqualValues(s.T(), 3, len(rollout.Status.Canary.StepPluginStatuses)) + + stepStatus := rollout.Status.Canary.StepPluginStatuses[1] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 1, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseRunning, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationRun, stepStatus.Operation) + + stepStatus = rollout.Status.Canary.StepPluginStatuses[2] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 1, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseSuccessful, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationTerminate, stepStatus.Operation) + }) +} + +func (s *StepPluginSuite) TestRolloutRetriesUntilDeadlineWhenRunning() { + s.Given(). + RolloutTemplate("@step-plugin/template-rollout.yaml", map[string]string{"$$name$$": "running", "$$phase$$": string(types.PhaseRunning)}). + When().ApplyManifests().WaitForRolloutStatus("Healthy"). + UpdateSpec(` +spec: + progressDeadlineSeconds: 45`). + UpdateSpec().WaitForRolloutStatus("Progressing"). + WaitForRolloutCanaryStepIndex(1). + WaitForRolloutStepPluginRunning(). + Wait(50 * time.Second). + WaitForRolloutStatus("Degraded"). + Then(). + Assert(func(t *fixtures.Then) { + rollout := t.GetRollout() + assert.EqualValues(s.T(), 1, *rollout.Status.CurrentStepIndex) + assert.EqualValues(s.T(), 2, len(rollout.Status.Canary.StepPluginStatuses)) + + stepStatus := rollout.Status.Canary.StepPluginStatuses[1] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 1, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseRunning, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationRun, stepStatus.Operation) + assert.NotEmpty(s.T(), stepStatus.Status) + + // Performance test validating that the plugin is not constantly executed + assert.EqualValues(s.T(), "17s", stepStatus.Backoff) + assert.EqualValues(s.T(), 3, stepStatus.Executions) + + }) +} + +func (s *StepPluginSuite) TestRolloutRetriesUntilDeadlineWhenError() { + s.Given(). + RolloutTemplate("@step-plugin/template-rollout.yaml", map[string]string{"$$name$$": "error", "$$phase$$": "invalidPhaseCausingPluginError"}). + When().ApplyManifests().WaitForRolloutStatus("Healthy"). + UpdateSpec(` +spec: + progressDeadlineSeconds: 45`). + UpdateSpec().WaitForRolloutStatus("Progressing"). + Wait(50 * time.Second). + WaitForRolloutStatus("Degraded"). + Then(). + Assert(func(t *fixtures.Then) { + rollout := t.GetRollout() + assert.EqualValues(s.T(), 1, *rollout.Status.CurrentStepIndex) + assert.EqualValues(s.T(), 2, len(rollout.Status.Canary.StepPluginStatuses)) + + stepStatus := rollout.Status.Canary.StepPluginStatuses[1] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 1, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseError, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationRun, stepStatus.Operation) + assert.Contains(s.T(), stepStatus.Message, "phase 'invalidPhaseCausingPluginError' is not valid") + assert.Empty(s.T(), stepStatus.Status) + + // Performance test validating that the plugin is not constantly executed + assert.EqualValues(s.T(), "30s", stepStatus.Backoff) + assert.EqualValues(s.T(), 2, stepStatus.Executions) + + }) +} + +func (s *StepPluginSuite) TestRolloutStatusIsNotUsedOnNewRollout() { + s.Given(). + RolloutTemplate("@step-plugin/template-rollout.yaml", map[string]string{"$$name$$": "run-again", "$$phase$$": string(types.PhaseSuccessful)}). + When(). + ApplyManifests().WaitForRolloutStatus("Healthy"). + UpdateSpec().WaitForRolloutStatus("Healthy").Then().ExpectStableRevision("2").When(). + UpdateSpec(` +spec: + strategy: + canary: + steps: + - plugin: + name: step/e2e-test + config: + return: Successful`). + UpdateSpec().WaitForRolloutStatus("Healthy"). + Then(). + ExpectStableRevision("3"). + Assert(func(t *fixtures.Then) { + rollout := t.GetRollout() + assert.EqualValues(s.T(), 1, len(rollout.Status.Canary.StepPluginStatuses)) + + stepStatus := rollout.Status.Canary.StepPluginStatuses[0] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 0, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseSuccessful, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationRun, stepStatus.Operation) + }) +} + +func (s *StepPluginSuite) TestRolloutErrorWhenStepPluginNotConfigured() { + ctx, cancel := context.WithCancel(context.TODO()) + defer cancel() + s.Given(). + StartEventWatch(ctx). + RolloutObjects("@step-plugin/invalid-rollout.yaml"). + When(). + ApplyManifests().WaitForRolloutStatus("Healthy"). + UpdateSpec().WaitForRolloutStatus("Degraded"). + Then(). + ExpectStableRevision("1"). + ExpectRolloutEventsContains([]string{"ReconciliationError"}). + Assert(func(t *fixtures.Then) { + rollout := t.GetRollout() + assert.EqualValues(s.T(), 0, *rollout.Status.CurrentStepIndex) + assert.EqualValues(s.T(), 0, len(rollout.Status.Canary.StepPluginStatuses)) + }) +} + +func (s *StepPluginSuite) TestRolloutSkipPluginWhenDisabled() { + s.Given(). + RolloutTemplate("@step-plugin/disabled-rollout.yaml", map[string]string{"$$disabled_plugin$$": E2EStepPluginNameDisabled}). + When(). + ApplyManifests().WaitForRolloutStatus("Healthy"). + UpdateSpec().WaitForRolloutStatus("Healthy"). + Then(). + ExpectStableRevision("2"). + Assert(func(t *fixtures.Then) { + rollout := t.GetRollout() + assert.EqualValues(s.T(), 2, len(rollout.Status.Canary.StepPluginStatuses)) + + stepStatus := rollout.Status.Canary.StepPluginStatuses[0] + assert.EqualValues(s.T(), E2EStepPluginNameDisabled, stepStatus.Name) + assert.EqualValues(s.T(), 0, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationRun, stepStatus.Operation) + assert.EqualValues(s.T(), true, stepStatus.Disabled) + + stepStatus = rollout.Status.Canary.StepPluginStatuses[1] + assert.EqualValues(s.T(), E2EStepPluginName, stepStatus.Name) + assert.EqualValues(s.T(), 1, stepStatus.Index) + assert.EqualValues(s.T(), v1alpha1.StepPluginPhaseSuccessful, stepStatus.Phase) + assert.EqualValues(s.T(), v1alpha1.StepPluginOperationRun, stepStatus.Operation) + assert.EqualValues(s.T(), false, stepStatus.Disabled) + }) +} diff --git a/test/fixtures/common.go b/test/fixtures/common.go index 670d2dd2f4..b5c5dae7b0 100644 --- a/test/fixtures/common.go +++ b/test/fixtures/common.go @@ -13,6 +13,7 @@ import ( "time" a6util "github.com/argoproj/argo-rollouts/utils/apisix" + k8errors "k8s.io/apimachinery/pkg/api/errors" smiv1alpha1 "github.com/servicemeshinterface/smi-sdk-go/pkg/apis/split/v1alpha1" smiclientset "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/split/clientset/versioned" @@ -681,6 +682,17 @@ func (c *Common) GetRolloutEventReasons() []string { return reasons } +func (c *Common) GetControllerConfig() *corev1.ConfigMap { + configMap, err := c.kubeClient.CoreV1().ConfigMaps(c.namespace).Get(c.Context, "argo-rollouts-config", metav1.GetOptions{}) + if err != nil { + if k8errors.IsNotFound(err) { + return nil + } + c.CheckError(err) + } + return configMap +} + // PrintRolloutEvents prints all Kubernetes events associated with the given rollout. func (c *Common) PrintRolloutEvents(ro *v1alpha1.Rollout) { opts := metav1.ListOptions{FieldSelector: fields.ParseSelectorOrDie(fmt.Sprintf("involvedObject.uid=%s", ro.UID)).String()} diff --git a/test/fixtures/given.go b/test/fixtures/given.go index 57e17251c6..a6e332d69a 100644 --- a/test/fixtures/given.go +++ b/test/fixtures/given.go @@ -34,9 +34,12 @@ func (g *Given) RolloutObjects(text string) *Given { return g } -func (g *Given) RolloutTemplate(text, name string) *Given { +func (g *Given) RolloutTemplate(text string, values map[string]string) *Given { yamlBytes := g.yamlBytes(text) - newText := strings.ReplaceAll(string(yamlBytes), "REPLACEME", name) + newText := string(yamlBytes) + for k, v := range values { + newText = strings.ReplaceAll(newText, k, v) + } return g.RolloutObjects(newText) } diff --git a/test/fixtures/then.go b/test/fixtures/then.go index 8183cc2adc..d39e054d34 100644 --- a/test/fixtures/then.go +++ b/test/fixtures/then.go @@ -494,6 +494,15 @@ func (t *Then) ExpectRolloutEvents(reasons []string) *Then { return t } +func (t *Then) ExpectRolloutEventsContains(reasons []string) *Then { + t.t.Helper() + eventReasons := t.GetRolloutEventReasons() + for _, r := range reasons { + assert.Contains(t.Common.t, eventReasons, r) + } + return t +} + func (t *Then) When() *When { return &When{ Common: t.Common, diff --git a/test/fixtures/when.go b/test/fixtures/when.go index d9696a7761..a5806befb9 100644 --- a/test/fixtures/when.go +++ b/test/fixtures/when.go @@ -415,6 +415,18 @@ func (w *When) WaitForActiveRevision(revision string, timeout ...time.Duration) return w.WaitForRolloutCondition(checkStatus, fmt.Sprintf("active revision=%s", revision), timeout...) } +func (w *When) WaitForRolloutStepPluginRunning(timeout ...time.Duration) *When { + checkStatus := func(ro *rov1.Rollout) bool { + for _, s := range ro.Status.Canary.StepPluginStatuses { + if s.Index == *ro.Status.CurrentStepIndex && s.Operation == rov1.StepPluginOperationRun && s.Phase == v1alpha1.StepPluginPhaseRunning { + return true + } + } + return false + } + return w.WaitForRolloutCondition(checkStatus, fmt.Sprintf("stepPluginStatus[currentIndex].phase=Running"), timeout...) +} + func (w *When) WaitForRolloutCondition(test func(ro *rov1.Rollout) bool, condition string, timeouts ...time.Duration) *When { start := time.Now() w.log.Infof("Waiting for condition: %s", condition) diff --git a/ui/src/app/components/rollout/rollout.scss b/ui/src/app/components/rollout/rollout.scss index 6ee3b71099..b93f9ed8ff 100644 --- a/ui/src/app/components/rollout/rollout.scss +++ b/ui/src/app/components/rollout/rollout.scss @@ -97,6 +97,10 @@ padding-bottom: 4px; font-size: 14px; } + + &-value { + white-space: pre-wrap; + } } } diff --git a/ui/src/app/components/rollout/rollout.tsx b/ui/src/app/components/rollout/rollout.tsx index dfecde7e84..f0cf0037bf 100644 --- a/ui/src/app/components/rollout/rollout.tsx +++ b/ui/src/app/components/rollout/rollout.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import * as YAML from 'yaml'; import {Helmet} from 'react-helmet'; import {useParams} from 'react-router-dom'; import { @@ -6,6 +7,7 @@ import { GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1HeaderRoutingMatch, GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutExperimentTemplate, GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SetMirrorRoute, + GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PluginStep, RolloutReplicaSetInfo, RolloutRolloutInfo, RolloutServiceApi, @@ -316,6 +318,7 @@ const Step = (props: {step: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1 const [openAnalysis, setOpenAnalysis] = React.useState(false); const [openHeader, setOpenHeader] = React.useState(false); const [openMirror, setOpenMirror] = React.useState(false); + const [openPlugin, setOpenPlugin] = React.useState(false); let icon: string; let content = ''; @@ -359,6 +362,11 @@ const Step = (props: {step: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1 } } + if (props.step.plugin) { + content = `${props.step.plugin.name}`; + icon = 'fa-puzzle-piece'; + } + return (
@@ -368,7 +376,8 @@ const Step = (props: {step: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1 (props.step.setCanaryScale && openCanary) || (props.step.analysis && openAnalysis) || (props.step.setHeaderRoute && openHeader) || - (props.step.setMirrorRoute && openMirror) + (props.step.setMirrorRoute && openMirror) || + (props.step.plugin && openPlugin) ? 'steps__step-title--experiment' : '' }`} @@ -395,6 +404,11 @@ const Step = (props: {step: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1
)} + {props.step.plugin && props.step.plugin.config && ( +
setOpenPlugin(!openPlugin)}> + +
+ )} {props.step.experiment?.templates && (
@@ -419,6 +433,7 @@ const Step = (props: {step: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1
)} {props.step?.setCanaryScale && openCanary && } + {props.step?.plugin && openPlugin && } {props.step?.setHeaderRoute && openHeader && } {props.step?.setMirrorRoute && openMirror && } @@ -563,3 +578,13 @@ const WidgetItemSetHeader = ({values}: {values: GithubComArgoprojArgoRolloutsPkg ); }; + +const WidgetItemPlugin = ({values}: {values: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PluginStep}) => { + if (!values.config) return null; + return ( +
+
CONFIG
+
{YAML.stringify(values.config)}
+
+ ); +}; diff --git a/ui/src/models/rollout/generated/api.ts b/ui/src/models/rollout/generated/api.ts index a2cd53858e..9159d1afd3 100755 --- a/ui/src/models/rollout/generated/api.ts +++ b/ui/src/models/rollout/generated/api.ts @@ -711,6 +711,12 @@ export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1CanaryStatu * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1CanaryStatus */ stablePingPong?: string; + /** + * + * @type {Array} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1CanaryStatus + */ + stepPluginStatuses?: Array; } /** * CanaryStep defines a step of a canary deployment. @@ -760,6 +766,12 @@ export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1CanaryStep * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1CanaryStep */ setMirrorRoute?: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SetMirrorRoute; + /** + * + * @type {GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PluginStep} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1CanaryStep + */ + plugin?: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PluginStep; } /** * @@ -1788,6 +1800,25 @@ export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PingPongSpe */ pongService?: string; } +/** + * + * @export + * @interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PluginStep + */ +export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PluginStep { + /** + * + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PluginStep + */ + name?: string; + /** + * + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PluginStep + */ + config?: string; +} /** * * @export @@ -2795,6 +2826,85 @@ export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SkyWalkingM */ interval?: string; } +/** + * + * @export + * @interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ +export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus { + /** + * + * @type {number} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ + index?: number; + /** + * + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ + name?: string; + /** + * + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ + operation?: string; + /** + * + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ + phase?: string; + /** + * + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ + message?: string; + /** + * + * @type {K8sIoApimachineryPkgApisMetaV1Time} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ + startedAt?: K8sIoApimachineryPkgApisMetaV1Time; + /** + * + * @type {K8sIoApimachineryPkgApisMetaV1Time} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ + updatedAt?: K8sIoApimachineryPkgApisMetaV1Time; + /** + * + * @type {K8sIoApimachineryPkgApisMetaV1Time} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ + finishedAt?: K8sIoApimachineryPkgApisMetaV1Time; + /** + * + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ + backoff?: string; + /** + * + * @type {number} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ + executions?: number; + /** + * + * @type {boolean} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ + disabled?: boolean; + /** + * + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1StepPluginStatus + */ + status?: string; +} /** * * @export diff --git a/utils/conditions/conditions.go b/utils/conditions/conditions.go index 77cd401c63..2e62cb80fe 100644 --- a/utils/conditions/conditions.go +++ b/utils/conditions/conditions.go @@ -133,6 +133,11 @@ const ( // RolloutExperimentFailedMessage is added in a rollout when the experiment owned by a rollout fails to show any progress RolloutExperimentFailedMessage = "Experiment '%s' owned by the Rollout '%q' has timed out." + // RolloutReconciliationErrorReason is added in a rollout when the reconciliation returns an error preventing progress + RolloutReconciliationErrorReason = "ReconciliationError" + // RolloutReconciliationErrorMessage is added in a rollout when the reconciliation returns an error preventing progress + RolloutReconciliationErrorMessage = "Reconciliation failed with error: %v" + // TimedOutReason is added in a rollout when its newest replica set fails to show any progress // within the given deadline (progressDeadlineSeconds). TimedOutReason = "ProgressDeadlineExceeded" @@ -157,6 +162,12 @@ const ( // ServiceReferencingManagedService is added in a rollout when the multiple rollouts reference a Rollout ServiceReferencingManagedService = "Service %q is managed by another Rollout" + // StepPluginTransitionReason is added to a Rollout when a step plugin transition to an unsuccessful phase + StepPluginTransitionReason = "StepPluginTransition" + StepPluginTransitionRunMessage = "Step plugin %s (step %d) transitioned to %s" + StepPluginTransitionAbortMessage = "Step plugin %s (step %d) aborted (%s)" + StepPluginTransitionTerminateMessage = "Step plugin %s (step %d) terminated (%s)" + // TargetGroupHealthyReason is emitted when target group has been verified TargetGroupVerifiedReason = "TargetGroupVerified" TargetGroupVerifiedRegistrationMessage = "Service %s (TargetGroup %s) verified: %d endpoints registered" diff --git a/utils/config/config.go b/utils/config/config.go index 7989374e8e..3eb9a1f86f 100644 --- a/utils/config/config.go +++ b/utils/config/config.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "regexp" + "slices" "sync" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -20,10 +21,11 @@ import ( type Config struct { configMap *v1.ConfigMap plugins []types.PluginItem + lock *sync.RWMutex } var configMemoryCache *Config -var mutex sync.RWMutex +var mutex = &sync.RWMutex{} // Regex to match plugin names, this matches github username and repo limits var re = regexp.MustCompile(`^([a-zA-Z0-9\-]+)\/{1}([a-zA-Z0-9_\-.]+)$`) @@ -34,7 +36,9 @@ func InitializeConfig(k8sClientset kubernetes.Interface, configMapName string) ( configMapCluster, err := k8sClientset.CoreV1().ConfigMaps(defaults.Namespace()).Get(context.Background(), configMapName, metav1.GetOptions{}) if err != nil { if k8errors.IsNotFound(err) { - configMemoryCache = &Config{} // We create an empty config so that we don't try to initialize again + configMemoryCache = &Config{ + lock: &sync.RWMutex{}, + } // We create an empty config so that we don't try to initialize again // If the configmap is not found, we return return configMemoryCache, nil } @@ -45,16 +49,31 @@ func InitializeConfig(k8sClientset kubernetes.Interface, configMapName string) ( if err = yaml.Unmarshal([]byte(configMapCluster.Data["trafficRouterPlugins"]), &trafficRouterPlugins); err != nil { return nil, fmt.Errorf("failed to unmarshal traffic router plugins while initializing: %w", err) } + for i := range trafficRouterPlugins { + trafficRouterPlugins[i].Type = types.PluginTypeTrafficRouter + } var metricProviderPlugins []types.PluginItem if err = yaml.Unmarshal([]byte(configMapCluster.Data["metricProviderPlugins"]), &metricProviderPlugins); err != nil { return nil, fmt.Errorf("failed to unmarshal metric provider plugins while initializing: %w", err) } + for i := range metricProviderPlugins { + metricProviderPlugins[i].Type = types.PluginTypeMetricProvider + } + + var stepPlugins []types.PluginItem + if err = yaml.Unmarshal([]byte(configMapCluster.Data["stepPlugins"]), &stepPlugins); err != nil { + return nil, fmt.Errorf("failed to unmarshal step plugins while initializing: %w", err) + } + for i := range stepPlugins { + stepPlugins[i].Type = types.PluginTypeStep + } mutex.Lock() configMemoryCache = &Config{ configMap: configMapCluster, - plugins: append(trafficRouterPlugins, metricProviderPlugins...), + plugins: slices.Concat(trafficRouterPlugins, metricProviderPlugins, stepPlugins), + lock: &sync.RWMutex{}, } mutex.Unlock() @@ -70,6 +89,7 @@ func InitializeConfig(k8sClientset kubernetes.Interface, configMapName string) ( func GetConfig() (*Config, error) { mutex.RLock() defer mutex.RUnlock() + if configMemoryCache == nil { return nil, fmt.Errorf("config not initialized, please initialize before use") } @@ -85,12 +105,30 @@ func UnInitializeConfig() { // GetAllPlugins returns a flattened list of plugin items. This is useful for iterating over all plugins. func (c *Config) GetAllPlugins() []types.PluginItem { - mutex.RLock() - defer mutex.RUnlock() + c.lock.RLock() + defer c.lock.RUnlock() + // Return a copy of the slice + return append([]types.PluginItem{}, c.plugins...) +} - var copiedPlugins []types.PluginItem - copiedPlugins = append(copiedPlugins, configMemoryCache.plugins...) - return copiedPlugins +// GetPlugin returns the plugin item by name and type if it exists +func (c *Config) GetPlugin(name string, pluginType types.PluginType) *types.PluginItem { + for _, plugin := range c.GetAllPlugins() { + if plugin.Name == name && plugin.Type == pluginType { + return &plugin + } + } + return nil +} + +func (c *Config) ValidateConfig() error { + for _, pluginItem := range c.GetAllPlugins() { + matches := re.FindAllStringSubmatch(pluginItem.Name, -1) + if len(matches) != 1 || len(matches[0]) != 3 { + return fmt.Errorf("plugin repository (%s) must be in the format of /", pluginItem.Name) + } + } + return nil } // GetPluginDirectoryAndFilename this functions return the directory and file name from a given pluginName such as @@ -105,16 +143,3 @@ func GetPluginDirectoryAndFilename(pluginName string) (directory string, filenam return namespace, plugin, nil } - -func (c *Config) ValidateConfig() error { - mutex.RLock() - defer mutex.RUnlock() - - for _, pluginItem := range c.GetAllPlugins() { - matches := re.FindAllStringSubmatch(pluginItem.Name, -1) - if len(matches) != 1 || len(matches[0]) != 3 { - return fmt.Errorf("plugin repository (%s) must be in the format of /", pluginItem.Name) - } - } - return nil -} diff --git a/utils/plugin/downloader_test.go b/utils/plugin/downloader_test.go index ab14be3385..f01e1d0e5f 100644 --- a/utils/plugin/downloader_test.go +++ b/utils/plugin/downloader_test.go @@ -107,7 +107,7 @@ func TestPlugin(t *testing.T) { cm, err := config.InitializeConfig(client, defaults.DefaultRolloutsConfigMapName) assert.NoError(t, err) - assert.Equal(t, cm, &config.Config{}) + assert.Equal(t, 0, len(cm.GetAllPlugins())) err = DownloadPlugins(MockFileDownloader{}) assert.NoError(t, err) diff --git a/utils/plugin/plugin.go b/utils/plugin/plugin.go index 3fd7a013a0..a76ed5e942 100644 --- a/utils/plugin/plugin.go +++ b/utils/plugin/plugin.go @@ -5,30 +5,32 @@ import ( "path/filepath" "github.com/argoproj/argo-rollouts/utils/defaults" + "github.com/argoproj/argo-rollouts/utils/plugin/types" "github.com/argoproj/argo-rollouts/utils/config" ) // GetPluginInfo returns the location & command arguments of the plugin on the filesystem via plugin name. If the plugin is not // configured in the configmap, an error is returned. -func GetPluginInfo(pluginName string) (string, []string, error) { +func GetPluginInfo(pluginName string, pluginType types.PluginType) (string, []string, error) { configMap, err := config.GetConfig() if err != nil { return "", nil, fmt.Errorf("failed to get config: %w", err) } - for _, item := range configMap.GetAllPlugins() { - if pluginName == item.Name { - dir, filename, err := config.GetPluginDirectoryAndFilename(item.Name) - if err != nil { - return "", nil, err - } - absFilePath, err := filepath.Abs(filepath.Join(defaults.DefaultRolloutPluginFolder, dir, filename)) - if err != nil { - return "", nil, fmt.Errorf("failed to get absolute path of plugin folder: %w", err) - } - return absFilePath, item.Args, nil - } + plugin := configMap.GetPlugin(pluginName, pluginType) + if plugin == nil { + return "", nil, fmt.Errorf("plugin %s not configured in configmap", pluginName) } - return "", nil, fmt.Errorf("plugin %s not configured in configmap", pluginName) + + dir, filename, err := config.GetPluginDirectoryAndFilename(plugin.Name) + if err != nil { + return "", nil, err + } + absFilePath, err := filepath.Abs(filepath.Join(defaults.DefaultRolloutPluginFolder, dir, filename)) + if err != nil { + return "", nil, fmt.Errorf("failed to get absolute path of plugin folder: %w", err) + } + return absFilePath, plugin.Args, nil + } diff --git a/utils/plugin/plugin_test.go b/utils/plugin/plugin_test.go index 7226d2d312..0e5d994a6c 100644 --- a/utils/plugin/plugin_test.go +++ b/utils/plugin/plugin_test.go @@ -5,6 +5,7 @@ import ( "testing" "github.com/argoproj/argo-rollouts/utils/defaults" + "github.com/argoproj/argo-rollouts/utils/plugin/types" "github.com/argoproj/argo-rollouts/utils/config" "github.com/stretchr/testify/assert" @@ -29,14 +30,14 @@ func TestGetPluginInfo(t *testing.T) { _, err := config.InitializeConfig(client, "argo-rollouts-config") assert.NoError(t, err) - location, args, err := GetPluginInfo("argoproj-labs/http") + location, args, err := GetPluginInfo("argoproj-labs/http", types.PluginTypeMetricProvider) assert.NoError(t, err) fp, err := filepath.Abs(filepath.Join(defaults.DefaultRolloutPluginFolder, "argoproj-labs/http")) assert.NoError(t, err) assert.Equal(t, fp, location) assert.Equal(t, args, cmdArgs) - _, args, _ = GetPluginInfo("argoproj-labs/http-sha") + _, args, _ = GetPluginInfo("argoproj-labs/http-sha", types.PluginTypeMetricProvider) assert.Equal(t, len(args), 0) }) @@ -54,14 +55,39 @@ func TestGetPluginInfo(t *testing.T) { _, err := config.InitializeConfig(client, "argo-rollouts-config") assert.NoError(t, err) - location, args, err := GetPluginInfo("argoproj-labs/router") + location, args, err := GetPluginInfo("argoproj-labs/router", types.PluginTypeTrafficRouter) assert.NoError(t, err) fp, err := filepath.Abs(filepath.Join(defaults.DefaultRolloutPluginFolder, "argoproj-labs/router")) assert.NoError(t, err) assert.Equal(t, fp, location) assert.Equal(t, args, cmdArgs) - _, args, _ = GetPluginInfo("argoproj-labs/router-sha") + _, args, _ = GetPluginInfo("argoproj-labs/router-sha", types.PluginTypeTrafficRouter) + assert.Equal(t, len(args), 0) + }) + + t.Run("tests getting plugin location of step plugins", func(t *testing.T) { + + cm := &v1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Name: "argo-rollouts-config", + Namespace: "argo-rollouts", + }, + Data: map[string]string{"stepPlugins": "\n - name: argoproj-labs/steps\n location: https://test/plugin\n args: [\"-l 2\"]\n - name: argoproj-labs/steps-sha\n location: https://test/plugin\n sha256: 74657374e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}, + } + client := fake.NewSimpleClientset(cm) + + _, err := config.InitializeConfig(client, "argo-rollouts-config") + assert.NoError(t, err) + + location, args, err := GetPluginInfo("argoproj-labs/steps", types.PluginTypeStep) + assert.NoError(t, err) + fp, err := filepath.Abs(filepath.Join(defaults.DefaultRolloutPluginFolder, "argoproj-labs/steps")) + assert.NoError(t, err) + assert.Equal(t, fp, location) + assert.Equal(t, args, cmdArgs) + + _, args, _ = GetPluginInfo("argoproj-labs/step-sha", types.PluginTypeStep) assert.Equal(t, len(args), 0) }) @@ -78,10 +104,30 @@ func TestGetPluginInfo(t *testing.T) { _, err := config.InitializeConfig(client, "argo-rollouts-config") assert.NoError(t, err) - location, args, err := GetPluginInfo("does-not-exist") + location, args, err := GetPluginInfo("does-not-exist", types.PluginTypeMetricProvider) assert.Error(t, err) assert.Equal(t, "plugin does-not-exist not configured in configmap", err.Error()) assert.Equal(t, "", location) assert.Equal(t, len(args), 0) }) + + t.Run("test getting plugin location from a plugin of a different type", func(t *testing.T) { + cm := &v1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Name: "argo-rollouts-config", + Namespace: "argo-rollouts", + }, + Data: map[string]string{"metricProviderPlugins": "\n - name: argoproj-labs/http\n location: https://test/plugin\n - name: argoproj-labs/http-sha\n location: https://test/plugin\n sha256: 74657374e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}, + } + client := fake.NewSimpleClientset(cm) + + _, err := config.InitializeConfig(client, "argo-rollouts-config") + assert.NoError(t, err) + + location, args, err := GetPluginInfo("argoproj-labs/http", types.PluginTypeStep) + assert.Error(t, err) + assert.Equal(t, "plugin argoproj-labs/http not configured in configmap", err.Error()) + assert.Equal(t, "", location) + assert.Equal(t, len(args), 0) + }) } diff --git a/utils/plugin/types/steps.go b/utils/plugin/types/steps.go new file mode 100644 index 0000000000..f54d7ec00b --- /dev/null +++ b/utils/plugin/types/steps.go @@ -0,0 +1,55 @@ +package types + +import ( + "encoding/json" + "fmt" + "time" +) + +// StepPhase is the type of phase of step plugin result +type StepPhase string + +const ( + // PhaseRunning is the Running phase of a step plugin + PhaseRunning StepPhase = "Running" + // PhaseRunning is the Successful phase of a step plugin + PhaseSuccessful StepPhase = "Successful" + // PhaseRunning is the Failed phase of a step plugin + PhaseFailed StepPhase = "Failed" + // PhaseRunning is the Error phase of a step plugin + PhaseError StepPhase = "Error" +) + +// RpcStepContext is the context of the step plugin operation +type RpcStepContext struct { + // PluginName is the name of the plugin as defined by the user + PluginName string + // Config holds the user specified configuration in the Rollout object for this plugin step + Config json.RawMessage + // Status holds a previous execution status related to the operation + Status json.RawMessage +} + +type RpcStepResult struct { + // Phase of the operation to idicate if it has completed or not + Phase StepPhase + // Message contains information about the execution + Message string + // RequeueAfter is the duration to wait before executing the operation again when it does not return a completed phase + RequeueAfter time.Duration + // Status hold the execution status of this plugin step. It can be used to persist a state between executions + Status json.RawMessage +} + +// Validate the phase of a step plugin +func (p StepPhase) Validate() error { + switch p { + case PhaseRunning: + case PhaseSuccessful: + case PhaseFailed: + case PhaseError: + default: + return fmt.Errorf("phase '%s' is not valid", p) + } + return nil +} diff --git a/utils/plugin/types/types.go b/utils/plugin/types/types.go index e89ba40f2a..11cd8be5e4 100644 --- a/utils/plugin/types/types.go +++ b/utils/plugin/types/types.go @@ -85,24 +85,55 @@ type RpcTrafficRoutingReconciler interface { Type() string } -//type Plugin struct { -// MetricProviders []PluginItem `json:"metricProviders" yaml:"metricProviders"` -// TrafficRouters []PluginItem `json:"trafficRouters" yaml:"trafficRouters"` -//} +type RpcStep interface { + // Run executes a step plugin for the RpcStepContext and returns the result to the controller or an RpcError for unexpeted failures + Run(*v1alpha1.Rollout, *RpcStepContext) (RpcStepResult, RpcError) + // Terminate stops an uncompleted operation started by the Run operation + Terminate(*v1alpha1.Rollout, *RpcStepContext) (RpcStepResult, RpcError) + // Abort reverts the actions performed during the Run operation if necessary + Abort(*v1alpha1.Rollout, *RpcStepContext) (RpcStepResult, RpcError) + // Type returns the type of the step plugin + Type() string +} type TrafficRouterPlugins struct { + // TrafficRouters is the list of plugin that implements a RpcTrafficRoutingReconciler TrafficRouters []PluginItem `json:"trafficRouterPlugins" yaml:"trafficRouterPlugins"` } type MetricProviderPlugins struct { + // MetricProviders is the list of plugin that implements a RpcMetricProvider MetricProviders []PluginItem `json:"metricProviderPlugins" yaml:"metricProviderPlugins"` } +type StepPlugins struct { + // Steps is the list of plugin that implements a RpcStep + Steps []PluginItem `json:"stepPlugins" yaml:"stepPlugins"` +} + +// PluginType is a type of plugin +type PluginType string + +const ( + // PluginTypeMetricProvider is the type for a MetricProvider plugin + PluginTypeMetricProvider PluginType = "MetricProvider" + // PluginTypeTrafficRouter is the type for a TrafficRouter plugin + PluginTypeTrafficRouter PluginType = "TrafficRouter" + // PluginTypeStep is the type for a Step plugin + PluginTypeStep PluginType = "Step" +) + type PluginItem struct { - Name string `json:"name" yaml:"name"` + // Name of the plugin to use in the Rollout custom resources + Name string `json:"name" yaml:"name"` + // Location of the plugin. Supports http(s):// urls and file:// prefix Location string `json:"location" yaml:"location"` - Sha256 string `json:"sha256" yaml:"sha256"` - - // Args holds command line arguments + // Sha256 is the checksum of the file specified at the provided Location + Sha256 string `json:"sha256" yaml:"sha256"` + // Type of the plugin + Type PluginType + // Disabled indicates if the plugin should be ignored when referenced in Rollout custom resources. Only valid for a plugin of type Step. + Disabled bool `json:"disabled" yaml:"disabled"` + // Args holds command line arguments to initialize the plugin Args []string `json:"args" yaml:"args"` } diff --git a/utils/rollout/rolloututil.go b/utils/rollout/rolloututil.go index 5411f3f58c..35a3bca9c3 100644 --- a/utils/rollout/rolloututil.go +++ b/utils/rollout/rolloututil.go @@ -181,6 +181,9 @@ func CanaryStepString(c v1alpha1.CanaryStep) string { return fmt.Sprintf("setCanaryScale{replicas: %d}", *c.SetCanaryScale.Replicas) } } + if c.Plugin != nil { + return fmt.Sprintf("plugin: %s", c.Plugin.Name) + } return "invalid" } diff --git a/utils/rollout/rolloututil_test.go b/utils/rollout/rolloututil_test.go index d88f080f64..f85a53faf6 100644 --- a/utils/rollout/rolloututil_test.go +++ b/utils/rollout/rolloututil_test.go @@ -389,6 +389,10 @@ func TestCanaryStepString(t *testing.T) { step: v1alpha1.CanaryStep{SetCanaryScale: &v1alpha1.SetCanaryScale{Replicas: pointer.Int32Ptr(5)}}, expectedString: "setCanaryScale{replicas: 5}", }, + { + step: v1alpha1.CanaryStep{Plugin: &v1alpha1.PluginStep{Name: "foo"}}, + expectedString: "plugin: foo", + }, } for _, test := range tests { assert.Equal(t, test.expectedString, CanaryStepString(test.step)) From b448b76fafe240d17a3f4f8dd0c6486ff1c722a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 08:59:01 -0500 Subject: [PATCH 109/219] chore(deps): bump sigstore/cosign-installer from 3.5.0 to 3.6.0 (#3777) Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.5.0 to 3.6.0. - [Release notes](https://github.com/sigstore/cosign-installer/releases) - [Commits](https://github.com/sigstore/cosign-installer/compare/59acb6260d9c0ba8f4a2f9d9b48431a222b68e20...4959ce089c160fddf62f7b42464195ba1a56d382) --- updated-dependencies: - dependency-name: sigstore/cosign-installer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 85a337b988..72eafef558 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -74,7 +74,7 @@ jobs: go-version: ${{ inputs.go-version }} - name: Install cosign - uses: sigstore/cosign-installer@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20 # v3.5.0 + uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0 with: cosign-release: 'v2.2.0' diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 863e7da737..4f7c5c9dea 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -168,7 +168,7 @@ jobs: go-version: ${{ env.GOLANG_VERSION }} - name: Install cosign - uses: sigstore/cosign-installer@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20 # v3.5.0 + uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0 with: cosign-release: 'v2.2.0' From 825a7caf8808172d65a3cd3b163242f25d396921 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 10:08:14 -0500 Subject: [PATCH 110/219] chore(deps): bump docker/build-push-action from 6.5.0 to 6.6.1 (#3776) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.5.0 to 6.6.1. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/5176d81f87c23d6fc96624dfdbcd9f3830bbe445...16ebe778df0e7752d2cfcbd924afdbbd89c1a755) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 72eafef558..4221462cef 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@5176d81f87c23d6fc96624dfdbcd9f3830bbe445 #v6.5.0 + uses: docker/build-push-action@16ebe778df0e7752d2cfcbd924afdbbd89c1a755 #v6.6.1 with: context: . platforms: ${{ inputs.platforms }} From 54cef88794e779eb2e1b210ee2abf27d0e882fed Mon Sep 17 00:00:00 2001 From: Kevin Ji <1146876+kevinji@users.noreply.github.com> Date: Sun, 11 Aug 2024 18:08:13 -0700 Subject: [PATCH 111/219] chore: capitalize AS in Dockerfile (#3781) Signed-off-by: Kevin Ji <1146876+kevinji@users.noreply.github.com> --- Dockerfile | 8 ++++---- Dockerfile.dev | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index f1f64b0a80..ffd0244abc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ # Initial stage which pulls prepares build dependencies and CLI tooling we need for our final image # Also used as the image in CI jobs so needs all dependencies #################################################################################################### -FROM --platform=$BUILDPLATFORM golang:1.22 as builder +FROM --platform=$BUILDPLATFORM golang:1.22 AS builder RUN apt-get update && apt-get install -y \ wget \ @@ -24,7 +24,7 @@ RUN cd ${GOPATH}/src/dummy && \ #################################################################################################### # UI build stage #################################################################################################### -FROM --platform=$BUILDPLATFORM docker.io/library/node:18 as argo-rollouts-ui +FROM --platform=$BUILDPLATFORM docker.io/library/node:18 AS argo-rollouts-ui WORKDIR /src ADD ["ui/package.json", "ui/yarn.lock", "./"] @@ -40,7 +40,7 @@ RUN NODE_ENV='production' yarn build #################################################################################################### # Rollout Controller Build stage which performs the actual build of argo-rollouts binaries #################################################################################################### -FROM --platform=$BUILDPLATFORM golang:1.22 as argo-rollouts-build +FROM --platform=$BUILDPLATFORM golang:1.22 AS argo-rollouts-build WORKDIR /go/src/github.com/argoproj/argo-rollouts @@ -69,7 +69,7 @@ RUN GOOS=$TARGETOS GOARCH=$TARGETARCH make ${MAKE_TARGET} #################################################################################################### # Kubectl plugin image #################################################################################################### -FROM gcr.io/distroless/static-debian11 as kubectl-argo-rollouts +FROM gcr.io/distroless/static-debian11 AS kubectl-argo-rollouts COPY --from=argo-rollouts-build /go/src/github.com/argoproj/argo-rollouts/dist/kubectl-argo-rollouts /bin/kubectl-argo-rollouts diff --git a/Dockerfile.dev b/Dockerfile.dev index 184d4e33e9..413f50ec7c 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,7 +1,7 @@ #################################################################################################### # argo-rollouts-dev #################################################################################################### -FROM golang:1.20 as builder +FROM golang:1.20 AS builder RUN apt-get update && apt-get install -y \ ca-certificates && \ From 8f74229d592ff992d72114aaa5d64d6e2a0d26d0 Mon Sep 17 00:00:00 2001 From: Andy Reitz Date: Sun, 11 Aug 2024 18:08:37 -0700 Subject: [PATCH 112/219] docs: Update ephemeral-metadata.md with a small fix (#3782) Update ephemeral-metadata.md A small grammatical fix. Signed-off-by: Andy Reitz --- docs/features/ephemeral-metadata.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/ephemeral-metadata.md b/docs/features/ephemeral-metadata.md index 0a2d0f50e9..346aac31d8 100644 --- a/docs/features/ephemeral-metadata.md +++ b/docs/features/ephemeral-metadata.md @@ -12,7 +12,7 @@ One use case is for a Rollout to label or annotate the desired/stable pods with labels/annotations, for _only_ the duration which they are the desired or stable set, and for the labels to be updated/removed as soon as the ReplicaSet switches roles (e.g. from desired to stable). The use case which this enables, is to allow prometheus, wavefront, datadog queries and dashboards -to be built, which can rely on a consistent labels, rather than the `rollouts-pod-template-hash` +to be built, which can rely on a consistent list of labels, rather than the `rollouts-pod-template-hash` which is unpredictable and changing from revision to revision. A Rollout using the canary strategy has the ability to attach ephemeral metadata to the stable or From 6b2ee929157340fdf97386222316789f0c706634 Mon Sep 17 00:00:00 2001 From: Kevin Ji <1146876+kevinji@users.noreply.github.com> Date: Sun, 11 Aug 2024 18:10:32 -0700 Subject: [PATCH 113/219] fix(metricprovider): reuse http.Transport for http.Client (#3780) The current code creates a new http.Transport for each http.Client that is created, which leads to a leak in TCP connections due to keep-alive. Instead, reuse the same http.Transport between requests. According to the http.Transport docs, this is safe for concurrent use. Signed-off-by: Kevin Ji <1146876+kevinji@users.noreply.github.com> --- metricproviders/prometheus/prometheus.go | 28 ++++++++++++++++-------- metricproviders/webmetric/webmetric.go | 9 ++++---- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/metricproviders/prometheus/prometheus.go b/metricproviders/prometheus/prometheus.go index 383e4e0a6b..f369187f9d 100644 --- a/metricproviders/prometheus/prometheus.go +++ b/metricproviders/prometheus/prometheus.go @@ -209,6 +209,21 @@ func NewPrometheusProvider(api v1.API, logCtx log.Entry, metric v1alpha1.Metric) return provider, nil } +func newHTTPTransport(insecureSkipVerify bool) *http.Transport { + return &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + }).DialContext, + TLSHandshakeTimeout: 10 * time.Second, + TLSClientConfig: &tls.Config{InsecureSkipVerify: insecureSkipVerify}, + } +} + +var secureTransport *http.Transport = newHTTPTransport(false) +var insecureTransport *http.Transport = newHTTPTransport(true) + // NewPrometheusAPI generates a prometheus API from the metric configuration func NewPrometheusAPI(metric v1alpha1.Metric) (v1.API, error) { envValuesByKey := make(map[string]string) @@ -232,15 +247,10 @@ func NewPrometheusAPI(metric v1alpha1.Metric) (v1.API, error) { } var roundTripper http.RoundTripper - - roundTripper = &http.Transport{ - Proxy: http.ProxyFromEnvironment, - DialContext: (&net.Dialer{ - Timeout: 30 * time.Second, - KeepAlive: 30 * time.Second, - }).DialContext, - TLSHandshakeTimeout: 10 * time.Second, - TLSClientConfig: &tls.Config{InsecureSkipVerify: metric.Provider.Prometheus.Insecure}, + if metric.Provider.Prometheus.Insecure { + roundTripper = insecureTransport + } else { + roundTripper = secureTransport } // attach custom headers to api requests, if specified diff --git a/metricproviders/webmetric/webmetric.go b/metricproviders/webmetric/webmetric.go index 6561e72290..6043885f72 100644 --- a/metricproviders/webmetric/webmetric.go +++ b/metricproviders/webmetric/webmetric.go @@ -176,6 +176,10 @@ func (p *Provider) GarbageCollect(run *v1alpha1.AnalysisRun, metric v1alpha1.Met return nil } +var insecureTransport *http.Transport = &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, +} + func NewWebMetricHttpClient(metric v1alpha1.Metric) (*http.Client, error) { var timeout time.Duration var oauthCfg clientcredentials.Config @@ -191,10 +195,7 @@ func NewWebMetricHttpClient(metric v1alpha1.Metric) (*http.Client, error) { Timeout: timeout, } if metric.Provider.Web.Insecure { - tr := &http.Transport{ - TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, - } - c.Transport = tr + c.Transport = insecureTransport } if metric.Provider.Web.Authentication.OAuth2.TokenURL != "" { if metric.Provider.Web.Authentication.OAuth2.ClientID == "" || metric.Provider.Web.Authentication.OAuth2.ClientSecret == "" { From f6ce5ce003ec1679c052a00d3bcdc3d035df82c1 Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Mon, 12 Aug 2024 18:24:31 +0300 Subject: [PATCH 114/219] docs: remove obsolete roadmap page (#3783) Signed-off-by: Kostis Kapelonis --- docs/CONTRIBUTING.md | 17 ++++++++++++++ docs/roadmap.md | 55 -------------------------------------------- mkdocs.yml | 1 - 3 files changed, 17 insertions(+), 56 deletions(-) delete mode 100644 docs/roadmap.md diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 70ce3bfb22..a73c76d557 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -139,6 +139,23 @@ yarn install yarn start ``` +## Getting your feature accepted + +To be eligible for inclusion in a minor release, a new feature must meet the following criteria before the release’s RC +date. + +If it is a large feature that involves significant design decisions, that feature must be described in a Proposal. + +The feature PR must include: + +* Tests (passing) +* Documentation +* If necessary, a note in the Upgrading docs for the planned minor release +* The PR must be reviewed, approved, and merged by an Approver. + +If these criteria are not met by the RC date, the feature will be ineligible for inclusion in the RC series or GA for +that minor release. It will have to wait for the next minor release. + ## Controller architecture Argo Rollouts is actually a collection of individual controllers diff --git a/docs/roadmap.md b/docs/roadmap.md deleted file mode 100644 index 7c3e52dcb9..0000000000 --- a/docs/roadmap.md +++ /dev/null @@ -1,55 +0,0 @@ -# Roadmap - -The Argo Rollouts roadmap is maintained in Github Milestones on the Github repository. - -## Release Cycle - -### Schedule - -These are the upcoming releases date estimates: - -| Release | Release Planning Meeting | Release Candidate 1 | General Availability | -|---------|--------------------------|-----------------------|--------------------------| -| v1.4 | TBD | Monday, Dec. 19, 2022 | Tuesday, Jan. 9, 2023 | -| v1.5 | Monday, Mar. 6, 2023 | Monday, Mar. 20, 2023 | Monday, Apr. 10, 2023 | -| v1.6 | Monday, Jun. 5, 2023 | Monday, Jun. 19, 2023 | Wednesday, Jul. 12, 2023 | -| v1.7 | Monday, Sep. 4, 2023 | Monday, Sep. 18, 2023 | Monday, Oct. 9, 2023 | - -### Release Process - -#### Minor Releases (e.g. 1.x.0) - -A minor Argo Rollouts release occurs four times a year, once every three months. Each General Availability (GA) release is -preceded by several Release Candidates (RCs). The first RC is released three weeks before the scheduled GA date. - -These are the approximate release dates: - -* The first Monday of January -* The first Monday of April -* The first Monday of July -* The first Monday of October - -Dates may be shifted slightly to accommodate holidays. Those shifts should be minimal. - -#### Patch Releases (e.g. 1.4.x) - -Argo Rollouts patch releases occur on an as-needed basis. Only the three most recent minor versions are eligible for patch -releases. Versions older than the three most recent minor versions are considered EOL and will not receive bug fixes or -security updates. - -### Feature Acceptance Criteria - -To be eligible for inclusion in a minor release, a new feature must meet the following criteria before the release’s RC -date. - -If it is a large feature that involves significant design decisions, that feature must be described in a Proposal. - -The feature PR must include: - -* Tests (passing) -* Documentation -* If necessary, a note in the Upgrading docs for the planned minor release -* The PR must be reviewed, approved, and merged by an Approver. - -If these criteria are not met by the RC date, the feature will be ineligible for inclusion in the RC series or GA for -that minor release. It will have to wait for the next minor release. diff --git a/mkdocs.yml b/mkdocs.yml index 8506973d4f..71ed4e9f70 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -136,7 +136,6 @@ nav: - Security: - Security Policy: security/security.md - Verify Release Artifacts: security/signed-release-assets.md -- Roadmap/Release Schedule: roadmap.md - Contributing: - Contribution Guide: CONTRIBUTING.md - Environment Setup: getting-started/setup/index.md From 3c15eb145440c31b995dafc5dada00111d7a60cf Mon Sep 17 00:00:00 2001 From: Alexandre Gaudreault Date: Mon, 12 Aug 2024 13:02:01 -0400 Subject: [PATCH 115/219] fix: replicaSet not scaled down due to incorrect annotations (#3762) (#3784) dco Signed-off-by: Alexandre Gaudreault --- rollout/controller.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rollout/controller.go b/rollout/controller.go index 8c5c905ef1..50e7b3e215 100644 --- a/rollout/controller.go +++ b/rollout/controller.go @@ -992,7 +992,7 @@ func (c *rolloutContext) updateReplicaSetFallbackToPatch(ctx context.Context, rs } if _, found := rs.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey]; found { - patchRS.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] = rs.Labels[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] + patchRS.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] = rs.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] } if _, found := rs.Spec.Selector.MatchLabels[v1alpha1.DefaultRolloutUniqueLabelKey]; found { From e619a51a1608b9be544019dc217edd1893763df8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Aug 2024 10:42:18 -0500 Subject: [PATCH 116/219] chore(deps): bump github.com/influxdata/influxdb-client-go/v2 from 2.13.0 to 2.14.0 (#3786) chore(deps): bump github.com/influxdata/influxdb-client-go/v2 Bumps [github.com/influxdata/influxdb-client-go/v2](https://github.com/influxdata/influxdb-client-go) from 2.13.0 to 2.14.0. - [Release notes](https://github.com/influxdata/influxdb-client-go/releases) - [Changelog](https://github.com/influxdata/influxdb-client-go/blob/master/CHANGELOG.md) - [Commits](https://github.com/influxdata/influxdb-client-go/compare/v2.13.0...v2.14.0) --- updated-dependencies: - dependency-name: github.com/influxdata/influxdb-client-go/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2a7073409c..b663d22adb 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/go-plugin v1.6.1 - github.com/influxdata/influxdb-client-go/v2 v2.13.0 + github.com/influxdata/influxdb-client-go/v2 v2.14.0 github.com/juju/ansiterm v1.0.0 github.com/machinebox/graphql v0.2.2 github.com/mitchellh/mapstructure v1.5.0 diff --git a/go.sum b/go.sum index e86242e7c1..6ea7ee917d 100644 --- a/go.sum +++ b/go.sum @@ -435,8 +435,8 @@ github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/influxdb-client-go/v2 v2.13.0 h1:ioBbLmR5NMbAjP4UVA5r9b5xGjpABD7j65pI8kFphDM= -github.com/influxdata/influxdb-client-go/v2 v2.13.0/go.mod h1:k+spCbt9hcvqvUiz0sr5D8LolXHqAAOfPw9v/RIRHl4= +github.com/influxdata/influxdb-client-go/v2 v2.14.0 h1:AjbBfJuq+QoaXNcrova8smSjwJdUHnwvfjMF71M1iI4= +github.com/influxdata/influxdb-client-go/v2 v2.14.0/go.mod h1:Ahpm3QXKMJslpXl3IftVLVezreAUtBOTZssDrjZEFHI= github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf h1:7JTmneyiNEwVBOHSjoMxiWAqB992atOeepeFYegn5RU= github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= github.com/jaytaylor/html2text v0.0.0-20190408195923-01ec452cbe43/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk= From 0397210a79ff985a87f4a72bf8ec29bf29230fb9 Mon Sep 17 00:00:00 2001 From: John Wood Date: Tue, 13 Aug 2024 11:27:33 -0500 Subject: [PATCH 117/219] feat(controller): enable pprof profiling support (#3769) * feat(controller): enable pprof profiling Signed-off-by: John Wood * wip Signed-off-by: John Wood * Consolidate --enable-pprof and --pprof-port into single config variable Signed-off-by: John Wood --------- Signed-off-by: John Wood --- cmd/rollouts-controller/main.go | 8 ++++++++ controller/profiling.go | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 controller/profiling.go diff --git a/cmd/rollouts-controller/main.go b/cmd/rollouts-controller/main.go index c8deab3ea0..89e611ab95 100644 --- a/cmd/rollouts-controller/main.go +++ b/cmd/rollouts-controller/main.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "net/http" "os" "strings" "time" @@ -79,6 +80,7 @@ func newCommand() *cobra.Command { printVersion bool selfServiceNotificationEnabled bool controllersEnabled []string + pprofAddress string ) electOpts := controller.NewLeaderElectionOptions() var command = cobra.Command{ @@ -204,6 +206,11 @@ func newCommand() *cobra.Command { ingressWrapper, err := ingressutil.NewIngressWrapper(mode, kubeClient, kubeInformerFactory) checkError(err) + if pprofAddress != "" { + mux := controller.NewPProfServer() + go func() { log.Println(http.ListenAndServe(pprofAddress, mux)) }() + } + var cm *controller.Manager enabledControllers, err := getEnabledControllers(controllersEnabled) @@ -310,6 +317,7 @@ func newCommand() *cobra.Command { command.Flags().DurationVar(&electOpts.LeaderElectionRetryPeriod, "leader-election-retry-period", controller.DefaultLeaderElectionRetryPeriod, "The duration the clients should wait between attempting acquisition and renewal of a leadership. This is only applicable if leader election is enabled.") command.Flags().BoolVar(&selfServiceNotificationEnabled, "self-service-notification-enabled", false, "Allows rollouts controller to pull notification config from the namespace that the rollout resource is in. This is useful for self-service notification.") command.Flags().StringSliceVar(&controllersEnabled, "controllers", nil, "Explicitly specify the list of controllers to run, currently only supports 'analysis', eg. --controller=analysis. Default: all controllers are enabled") + command.Flags().StringVar(&pprofAddress, "enable-pprof-address", "", "Enable pprof profiling on controller by providing a server address.") return &command } diff --git a/controller/profiling.go b/controller/profiling.go new file mode 100644 index 0000000000..03920906ac --- /dev/null +++ b/controller/profiling.go @@ -0,0 +1,24 @@ +package controller + +import ( + "fmt" + "net/http" + "net/http/pprof" +) + +const ( + ProfilingPath = "/debug/pprof" +) + +// NewPProfServer returns a new pprof server to gather runtime profiling data +func NewPProfServer() *http.ServeMux { + mux := http.NewServeMux() + + mux.HandleFunc(ProfilingPath, pprof.Index) + mux.HandleFunc(fmt.Sprintf("%s/cmdline", ProfilingPath), pprof.Cmdline) + mux.HandleFunc(fmt.Sprintf("%s/profile", ProfilingPath), pprof.Profile) + mux.HandleFunc(fmt.Sprintf("%s/symbol", ProfilingPath), pprof.Symbol) + mux.HandleFunc(fmt.Sprintf("%s/trace", ProfilingPath), pprof.Trace) + + return mux +} From 36b9e15e392f562e21ffd1acc004b0dd807c7da6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 13 Aug 2024 22:20:50 +0000 Subject: [PATCH 118/219] docs: Update Changelog (#3788) * update changelog * Update CHANGELOG.md --------- Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com> Co-authored-by: Zach Aller --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 263680f07d..32f585e4e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ + +## [v1.7.2](https://github.com/argoproj/argo-rollouts/compare/v1.7.1...v1.7.2) (2024-08-12) + +### Fix + +* replicaSet not scaled down due to incorrect annotations ([#3762](https://github.com/argoproj/argo-rollouts/issues/3762)) ([#3784](https://github.com/argoproj/argo-rollouts/issues/3784)) +* add update verb to ClusterRole permissions for scaleDown feature. Fixes [#3672](https://github.com/argoproj/argo-rollouts/issues/3672) ([#3675](https://github.com/argoproj/argo-rollouts/issues/3675)) +* **analysis:** explicitly set datadog aggregator to last only on v2 ([#3730](https://github.com/argoproj/argo-rollouts/issues/3730)) +* **analysis:** Take RollbackWindow into account when Reconciling Analysis Runs. Fixes [#3669](https://github.com/argoproj/argo-rollouts/issues/3669) ([#3670](https://github.com/argoproj/argo-rollouts/issues/3670)) +* **controller:** Get the right resourceName for traefik.io.Fixes [#3615](https://github.com/argoproj/argo-rollouts/issues/3615) ([#3759](https://github.com/argoproj/argo-rollouts/issues/3759)) +* **controller:** use the stableRS from the rollout context rather tha… ([#3664](https://github.com/argoproj/argo-rollouts/issues/3664)) +* **dashboard:** Update pod status logic to support native sidecars. Fixes [#3366](https://github.com/argoproj/argo-rollouts/issues/3366) ([#3639](https://github.com/argoproj/argo-rollouts/issues/3639)) +* **metricprovider:** reuse http.Transport for http.Client ([#3780](https://github.com/argoproj/argo-rollouts/issues/3780)) + + ## [v1.7.1](https://github.com/argoproj/argo-rollouts/compare/v1.7.0...v1.7.1) (2024-06-22) From 97ded54e3f3da546fa6ab9fceb27230b2e445ee9 Mon Sep 17 00:00:00 2001 From: Orlando Valdez <135269522+orlando-valdez-ck@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:54:28 -0400 Subject: [PATCH 119/219] feat(analysis): Adds timeout property to NewRelic metrics provider. Resolves: #3741 (#3742) * Add timeout property Signed-off-by: Orlando Valdez * Add option to specify nrql timeout Signed-off-by: Orlando Valdez * Update newrelic docs Signed-off-by: Orlando Valdez * Indent gql query Signed-off-by: Orlando Valdez * Slim down GQL query Signed-off-by: Orlando Valdez * Add missing codegen output after the merge Signed-off-by: Orlando Valdez * Add tests Signed-off-by: Orlando Valdez * Add mock client comments Signed-off-by: Orlando Valdez * Fix response struct Signed-off-by: Orlando Valdez * Codegen after merge Signed-off-by: Orlando Valdez --------- Signed-off-by: Orlando Valdez --- docs/analysis/newrelic.md | 1 + .../features/kustomize/rollout_cr_schema.json | 12 + go.mod | 6 +- go.sum | 17 +- manifests/crds/analysis-run-crd.yaml | 3 + manifests/crds/analysis-template-crd.yaml | 3 + .../crds/cluster-analysis-template-crd.yaml | 3 + manifests/install.yaml | 9 + metricproviders/newrelic/mock_test.go | 53 +- metricproviders/newrelic/newrelic.go | 72 +- metricproviders/newrelic/newrelic_test.go | 72 +- pkg/apiclient/rollout/rollout.swagger.json | 5 + pkg/apis/rollouts/v1alpha1/analysis_types.go | 3 + pkg/apis/rollouts/v1alpha1/generated.pb.go | 1019 +++++++++-------- pkg/apis/rollouts/v1alpha1/generated.proto | 4 + .../rollouts/v1alpha1/openapi_generated.go | 7 + .../v1alpha1/zz_generated.deepcopy.go | 7 +- ui/src/models/rollout/generated/api.ts | 6 + 18 files changed, 780 insertions(+), 522 deletions(-) diff --git a/docs/analysis/newrelic.md b/docs/analysis/newrelic.md index 589e6d14f6..38416c6e2b 100644 --- a/docs/analysis/newrelic.md +++ b/docs/analysis/newrelic.md @@ -21,6 +21,7 @@ spec: profile: my-newrelic-secret # optional, defaults to 'newrelic' query: | FROM Transaction SELECT percentage(count(*), WHERE httpResponseCode != 500) as successRate where appName = '{{ args.application-name }}' + timeout: 10 # NRQL query timeout in seconds. Optional, defaults to 5 ``` The `result` evaluated for the condition will always be map or list of maps. The name will follow the pattern of either `function` or `function.field`, e.g. `SELECT average(duration) from Transaction` will yield `average.duration`. In this case the field result cannot be accessed with dot notation and instead should be accessed like `result['average.duration']`. Query results can be renamed using the [NRQL clause `AS`](https://docs.newrelic.com/docs/query-your-data/nrql-new-relic-query-language/get-started/nrql-syntax-clauses-functions#sel-as) as seen above. diff --git a/docs/features/kustomize/rollout_cr_schema.json b/docs/features/kustomize/rollout_cr_schema.json index f835099afe..2a1baf7bad 100644 --- a/docs/features/kustomize/rollout_cr_schema.json +++ b/docs/features/kustomize/rollout_cr_schema.json @@ -4606,6 +4606,10 @@ }, "query": { "type": "string" + }, + "timeout": { + "format": "int64", + "type": "integer" } }, "required": [ @@ -9457,6 +9461,10 @@ }, "query": { "type": "string" + }, + "timeout": { + "format": "int64", + "type": "integer" } }, "required": [ @@ -14321,6 +14329,10 @@ }, "query": { "type": "string" + }, + "timeout": { + "format": "int64", + "type": "integer" } }, "required": [ diff --git a/go.mod b/go.mod index b663d22adb..a847dfa6bd 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/juju/ansiterm v1.0.0 github.com/machinebox/graphql v0.2.2 github.com/mitchellh/mapstructure v1.5.0 - github.com/newrelic/newrelic-client-go v1.1.0 + github.com/newrelic/newrelic-client-go/v2 v2.41.2 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.18.0 github.com/prometheus/client_model v0.6.1 @@ -141,7 +141,7 @@ require ( github.com/hashicorp/go-retryablehttp v0.7.1 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/huandu/xstrings v1.3.3 // indirect - github.com/imdario/mergo v0.3.13 // indirect + github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect @@ -181,7 +181,7 @@ require ( github.com/stretchr/objx v0.5.2 // indirect github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect - github.com/valyala/fastjson v1.6.3 // indirect + github.com/valyala/fastjson v1.6.4 // indirect github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0 // indirect github.com/xlab/treeprint v1.2.0 // indirect go.etcd.io/etcd/api/v3 v3.5.10 // indirect diff --git a/go.sum b/go.sum index 6ea7ee917d..4d384dc5e1 100644 --- a/go.sum +++ b/go.sum @@ -192,8 +192,8 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/elazarl/goproxy v0.0.0-20220417044921-416226498f94 h1:VIy7cdK7ufs7ctpTFkXJHm1uP3dJSnCGSPysEICB1so= -github.com/elazarl/goproxy v0.0.0-20220417044921-416226498f94/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/elazarl/goproxy v0.0.0-20231117061959-7cc037d33fb5 h1:m62nsMU279qRD9PQSWD1l66kmkXzuYcnVJqL4XLeV2M= +github.com/elazarl/goproxy v0.0.0-20231117061959-7cc037d33fb5/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= @@ -430,8 +430,8 @@ github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= -github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= +github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= @@ -556,8 +556,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/newrelic/newrelic-client-go v1.1.0 h1:aflNjzQ21c+2GwBVh+UbAf9lznkRfCcVABoc5UM4IXw= -github.com/newrelic/newrelic-client-go v1.1.0/go.mod h1:RYMXt7hgYw7nzuXIGd2BH0F1AivgWw7WrBhNBQZEB4k= +github.com/newrelic/newrelic-client-go/v2 v2.41.2 h1:5YkFRSU19a9CoOkF8qgWoNRXVbL6qh0nZYaWbQjFppA= +github.com/newrelic/newrelic-client-go/v2 v2.41.2/go.mod h1:pDFY24/6iIMEbPIdowTRrRn9YYwkXc3j+B+XpTb4oF4= github.com/nlopes/slack v0.5.0/go.mod h1:jVI4BBK3lSktibKahxBF74txcK2vyvkza1z/+rRnVAM= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oapi-codegen/runtime v1.0.0 h1:P4rqFX5fMFWqRzY9M/3YF9+aPSPPB06IzP2P7oOxrWo= @@ -696,8 +696,8 @@ github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 h1:nrZ3ySNYwJ github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80/go.mod h1:iFyPdL66DjUD96XmzVL3ZntbzcflLnznH0fr99w5VqE= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fastjson v1.6.3 h1:tAKFnnwmeMGPbwJ7IwxcTPCNr3uIzoIj3/Fh90ra4xc= -github.com/valyala/fastjson v1.6.3/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= +github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= +github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0 h1:qqllXPzXh+So+mmANlX/gCJrgo+1kQyshMoQ+NASzm0= @@ -1177,7 +1177,6 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/manifests/crds/analysis-run-crd.yaml b/manifests/crds/analysis-run-crd.yaml index d5158a74f4..99122a2f87 100644 --- a/manifests/crds/analysis-run-crd.yaml +++ b/manifests/crds/analysis-run-crd.yaml @@ -3015,6 +3015,9 @@ spec: type: string query: type: string + timeout: + format: int64 + type: integer required: - query type: object diff --git a/manifests/crds/analysis-template-crd.yaml b/manifests/crds/analysis-template-crd.yaml index e09c631c95..a4bbb59116 100644 --- a/manifests/crds/analysis-template-crd.yaml +++ b/manifests/crds/analysis-template-crd.yaml @@ -3011,6 +3011,9 @@ spec: type: string query: type: string + timeout: + format: int64 + type: integer required: - query type: object diff --git a/manifests/crds/cluster-analysis-template-crd.yaml b/manifests/crds/cluster-analysis-template-crd.yaml index 0c2baf1fc6..3b570c7f7b 100644 --- a/manifests/crds/cluster-analysis-template-crd.yaml +++ b/manifests/crds/cluster-analysis-template-crd.yaml @@ -3011,6 +3011,9 @@ spec: type: string query: type: string + timeout: + format: int64 + type: integer required: - query type: object diff --git a/manifests/install.yaml b/manifests/install.yaml index 56e71a4e18..d8bb697324 100755 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -3016,6 +3016,9 @@ spec: type: string query: type: string + timeout: + format: int64 + type: integer required: - query type: object @@ -6314,6 +6317,9 @@ spec: type: string query: type: string + timeout: + format: int64 + type: integer required: - query type: object @@ -9490,6 +9496,9 @@ spec: type: string query: type: string + timeout: + format: int64 + type: integer required: - query type: object diff --git a/metricproviders/newrelic/mock_test.go b/metricproviders/newrelic/mock_test.go index a96b4febbc..e9d0b2f3ee 100644 --- a/metricproviders/newrelic/mock_test.go +++ b/metricproviders/newrelic/mock_test.go @@ -1,15 +1,64 @@ package newrelic -import "github.com/newrelic/newrelic-client-go/pkg/nrdb" +import ( + "reflect" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/newrelic/newrelic-client-go/v2/pkg/nrdb" +) type mockAPI struct { response []nrdb.NRDBResult err error } -func (m *mockAPI) Query(query string) ([]nrdb.NRDBResult, error) { +func (m *mockAPI) Query(metric v1alpha1.Metric) ([]nrdb.NRDBResult, error) { if m.err != nil { return nil, m.err } return m.response, nil } + +type mockNerdGraphClient struct { + response []nrdb.NRDBResult + lastArgs map[string]interface{} + err error +} + +func (m *mockNerdGraphClient) QueryWithResponse(query string, variables map[string]interface{}, respBody interface{}) error { + m.lastArgs = variables + + if m.err != nil { + return m.err + } + + r := gqlNrglQueryResponse{} + r.Actor.Account.NRQL.Results = m.response + + rVal := reflect.ValueOf(r) + reflect.ValueOf(respBody).Elem().Set(rVal) + + return nil +} + +// Response sets the response the mock client will return +func (m *mockNerdGraphClient) Response(response []nrdb.NRDBResult) { + m.response = response +} + +// LastArgs returns the variables used when calling the NerdGraph API +func (m *mockNerdGraphClient) LastArgs() map[string]any { + return m.lastArgs +} + +// Err sets the error to be returned when calling the NerdGraph API +func (m *mockNerdGraphClient) Err(err error) { + m.err = err +} + +// Clear removes all configured mock behavior +func (m *mockNerdGraphClient) Clear() { + m.err = nil + m.response = nil + m.lastArgs = nil +} diff --git a/metricproviders/newrelic/newrelic.go b/metricproviders/newrelic/newrelic.go index e70db7c765..7f0ed2dee4 100644 --- a/metricproviders/newrelic/newrelic.go +++ b/metricproviders/newrelic/newrelic.go @@ -7,8 +7,8 @@ import ( "fmt" "strconv" - "github.com/newrelic/newrelic-client-go/newrelic" - "github.com/newrelic/newrelic-client-go/pkg/nrdb" + "github.com/newrelic/newrelic-client-go/v2/newrelic" + "github.com/newrelic/newrelic-client-go/v2/pkg/nrdb" log "github.com/sirupsen/logrus" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" @@ -27,27 +27,77 @@ const ( DefaultNewRelicProfileSecretName = "newrelic" repoURL = "https://github.com/argoproj/argo-rollouts" resolvedNewRelicQuery = "ResolvedNewRelicQuery" + defaultNrqlTimeout = 5 ) +var ( + ErrNegativeTimeout = errors.New("timeout value needs to be a positive value") +) + +type gqlNrglQueryResponse struct { + Actor struct { + Account struct { + NRQL nrdb.NRDBResultContainer + } + } +} + +const gqlNrqlQuery = `query ( + $query: Nrql!, + $accountId: Int!, + $timeout: Seconds! +) +{ + actor { + account(id: $accountId) { + nrql(query: $query, timeout: $timeout) { + results + } + } + } +} +` + var userAgent = fmt.Sprintf("argo-rollouts/%s (%s)", version.GetVersion(), repoURL) type NewRelicClientAPI interface { - Query(query string) ([]nrdb.NRDBResult, error) + Query(metric v1alpha1.Metric) ([]nrdb.NRDBResult, error) +} + +type nerdGraphClient interface { + QueryWithResponse(query string, variables map[string]interface{}, respBody interface{}) error } type NewRelicClient struct { - *newrelic.NewRelic - AccountID int + NerdGraphClient nerdGraphClient + AccountID int } // Query executes a NRQL query against the given New Relic account -func (n *NewRelicClient) Query(query string) ([]nrdb.NRDBResult, error) { - results, err := n.Nrdb.Query(n.AccountID, nrdb.NRQL(query)) - if err != nil { +func (n *NewRelicClient) Query(metric v1alpha1.Metric) ([]nrdb.NRDBResult, error) { + var timeout int64 = defaultNrqlTimeout + respBody := gqlNrglQueryResponse{} + + if metric.Provider.NewRelic.Timeout != nil { + timeout = *metric.Provider.NewRelic.Timeout + } + + if timeout < 0 { + return nil, ErrNegativeTimeout + } + + args := map[string]any{ + "accountId": n.AccountID, + "query": metric.Provider.NewRelic.Query, + "timeout": timeout, + } + + if err := n.NerdGraphClient.QueryWithResponse(gqlNrqlQuery, args, &respBody); err != nil { return nil, err } + // TODO(jwelch) return metadata from NRDBResultContainer to include on the measurement - return results.Results, nil + return respBody.Actor.Account.NRQL.Results, nil } type Provider struct { @@ -62,7 +112,7 @@ func (p *Provider) Run(run *v1alpha1.AnalysisRun, metric v1alpha1.Metric) v1alph StartedAt: &startTime, } - results, err := p.api.Query(metric.Provider.NewRelic.Query) + results, err := p.api.Query(metric) if err != nil { return metricutil.MarkMeasurementError(newMeasurement, err) } @@ -191,7 +241,7 @@ func NewNewRelicAPIClient(metric v1alpha1.Metric, kubeclientset kubernetes.Inter if err != nil { return nil, fmt.Errorf("could not parse account ID: %w", err) } - return &NewRelicClient{NewRelic: nrClient, AccountID: accID}, nil + return &NewRelicClient{NerdGraphClient: &nrClient.NerdGraph, AccountID: accID}, nil } else { return nil, errors.New("account ID or personal API key not found") } diff --git a/metricproviders/newrelic/newrelic_test.go b/metricproviders/newrelic/newrelic_test.go index cf4b421111..9b1cf31156 100644 --- a/metricproviders/newrelic/newrelic_test.go +++ b/metricproviders/newrelic/newrelic_test.go @@ -5,7 +5,7 @@ import ( "fmt" "testing" - "github.com/newrelic/newrelic-client-go/pkg/nrdb" + "github.com/newrelic/newrelic-client-go/v2/pkg/nrdb" log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" corev1 "k8s.io/api/core/v1" @@ -407,3 +407,73 @@ func TestNewNewRelicAPIClient(t *testing.T) { assert.NotNil(t, err) }) } + +func TestNewRelicClient_Query(t *testing.T) { + accountId := 1234567 + sevenTo := int64(7) + negativeTo := int64(-1) + defaultTo := int64(defaultNrqlTimeout) + theQuery := "FROM K8sContainerSample SELECT percentile(`cpuCoresUtilization`, 95)" + + mockNGC := &mockNerdGraphClient{} + nrc := &NewRelicClient{NerdGraphClient: mockNGC, AccountID: accountId} + + tests := map[string]struct { + timeoutProvided *int64 + timeoutUsed *int64 + query string + want []nrdb.NRDBResult + errMsg string + gqlErr error + }{ + `returns results`: { + timeoutUsed: &defaultTo, + query: theQuery, + want: []nrdb.NRDBResult{map[string]any{"count": 10}}, + }, + `uses default timeout when one is not provided`: { + timeoutUsed: &defaultTo, + query: theQuery, + }, + `uses provided timeout`: { + timeoutUsed: &sevenTo, + timeoutProvided: &sevenTo, + query: theQuery, + }, + `errors when timeout is negative`: { + timeoutProvided: &negativeTo, + query: theQuery, + errMsg: ErrNegativeTimeout.Error(), + }, + `errors when nerdgraph returns error`: { + timeoutUsed: &defaultTo, + query: theQuery, + errMsg: "boom", + gqlErr: errors.New("boom"), + }, + } + for testName, tc := range tests { + t.Run(testName, func(t *testing.T) { + defer mockNGC.Clear() + mockNGC.Err(tc.gqlErr) + mockNGC.Response(tc.want) + metric := v1alpha1.Metric{ + Provider: v1alpha1.MetricProvider{ + NewRelic: &v1alpha1.NewRelicMetric{ + Timeout: tc.timeoutProvided, + Query: tc.query, + }, + }, + } + results, err := nrc.Query(metric) + if len(tc.errMsg) > 0 { + assert.EqualError(t, err, tc.errMsg) + return + } + assert.Equal(t, *tc.timeoutUsed, mockNGC.LastArgs()["timeout"]) + assert.Equal(t, tc.query, mockNGC.LastArgs()["query"]) + assert.Equal(t, accountId, mockNGC.LastArgs()["accountId"]) + assert.Equal(t, tc.want, results) + }) + } +} diff --git a/pkg/apiclient/rollout/rollout.swagger.json b/pkg/apiclient/rollout/rollout.swagger.json index ab906295f0..2fb5247d85 100755 --- a/pkg/apiclient/rollout/rollout.swagger.json +++ b/pkg/apiclient/rollout/rollout.swagger.json @@ -1661,6 +1661,11 @@ "query": { "type": "string", "title": "Query is a raw newrelic NRQL query to perform" + }, + "timeout": { + "type": "string", + "format": "int64", + "title": "Timeout represents the duration limit in seconds that will apply to the NRQL query\n+optional" } }, "title": "NewRelicMetric defines the newrelic query to perform canary analysis" diff --git a/pkg/apis/rollouts/v1alpha1/analysis_types.go b/pkg/apis/rollouts/v1alpha1/analysis_types.go index a61d54f71d..90762ef66b 100644 --- a/pkg/apis/rollouts/v1alpha1/analysis_types.go +++ b/pkg/apis/rollouts/v1alpha1/analysis_types.go @@ -297,6 +297,9 @@ type NewRelicMetric struct { Profile string `json:"profile,omitempty" protobuf:"bytes,1,opt,name=profile"` // Query is a raw newrelic NRQL query to perform Query string `json:"query" protobuf:"bytes,2,opt,name=query"` + // Timeout represents the duration limit in seconds that will apply to the NRQL query + // +optional + Timeout *int64 `json:"timeout,omitempty" protobuf:"bytes,3,opt,name=timeout"` } // JobMetric defines a job to run which acts as a metric diff --git a/pkg/apis/rollouts/v1alpha1/generated.pb.go b/pkg/apis/rollouts/v1alpha1/generated.pb.go index b472340b48..9f2149493e 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.pb.go +++ b/pkg/apis/rollouts/v1alpha1/generated.pb.go @@ -3437,16 +3437,16 @@ func init() { } var fileDescriptor_e0e705f843545fab = []byte{ - // 8914 bytes of a gzipped FileDescriptorProto + // 8922 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x64, 0xd7, 0x75, 0x98, 0x1e, 0x87, 0x43, 0xce, 0x9c, 0xe1, 0x92, 0xdc, 0xbb, 0xbb, 0x12, 0x45, 0x69, 0x97, 0xeb, 0xa7, 0x54, 0x5d, 0xc5, 0x32, 0x69, 0xaf, 0xa4, 0x54, 0xb6, 0x5c, 0xb5, 0x33, 0xe4, 0xae, 0x96, 0x2b, 0x72, 0x97, 0x3a, 0xc3, 0xd5, 0xc6, 0x1f, 0x4a, 0xfc, 0x38, 0x73, 0x39, 0x7c, 0xcb, - 0x99, 0xf7, 0xc6, 0xef, 0xbd, 0xe1, 0x2e, 0x65, 0x21, 0x96, 0x6d, 0x28, 0x71, 0x5c, 0x1b, 0x71, + 0x99, 0xf7, 0xc6, 0xef, 0xbd, 0xe1, 0x2e, 0x65, 0x21, 0x96, 0x6d, 0x28, 0x76, 0x5c, 0x1b, 0x71, 0x93, 0x18, 0x45, 0x3f, 0x50, 0xb8, 0x41, 0x8a, 0xb4, 0x4d, 0x7f, 0x14, 0x81, 0x8b, 0xf6, 0x47, 0x80, 0x16, 0x75, 0x53, 0xd8, 0x40, 0x5d, 0x38, 0x3f, 0x5a, 0xa7, 0x05, 0xc2, 0xd4, 0x4c, 0xff, 0x34, 0x68, 0x61, 0xa4, 0x70, 0x11, 0x54, 0x3f, 0x8a, 0xe2, 0x7e, 0xbe, 0xfb, 0xde, 0xbc, 0xe1, - 0xd7, 0x3c, 0xae, 0x94, 0xc6, 0xff, 0x66, 0xee, 0x39, 0xf7, 0x9c, 0xf3, 0xee, 0xe7, 0xb9, 0xe7, + 0xd7, 0x3c, 0xae, 0x94, 0x26, 0xff, 0x66, 0xee, 0x39, 0xf7, 0x9c, 0xf3, 0xee, 0xe7, 0xb9, 0xe7, 0x9e, 0x73, 0x2e, 0xac, 0xb4, 0xdc, 0x68, 0xab, 0xb7, 0x31, 0xdf, 0xf0, 0x3b, 0x0b, 0x4e, 0xd0, 0xf2, 0xbb, 0x81, 0x7f, 0x8f, 0xff, 0xf8, 0x50, 0xe0, 0xb7, 0xdb, 0x7e, 0x2f, 0x0a, 0x17, 0xba, 0xdb, 0xad, 0x05, 0xa7, 0xeb, 0x86, 0x0b, 0xba, 0x64, 0xe7, 0x23, 0x4e, 0xbb, 0xbb, 0xe5, 0x7c, @@ -3458,22 +3458,22 @@ var fileDescriptor_e0e705f843545fab = []byte{ 0x07, 0x34, 0x0b, 0xe7, 0xf9, 0x18, 0xa7, 0xe3, 0x34, 0xb6, 0x5c, 0x8f, 0x06, 0xbb, 0xf1, 0x57, 0x77, 0x68, 0xe4, 0x64, 0xd5, 0x5a, 0x18, 0x54, 0x2b, 0xe8, 0x79, 0x91, 0xdb, 0xa1, 0x7d, 0x15, 0x7e, 0xe6, 0xb0, 0x0a, 0x61, 0x63, 0x8b, 0x76, 0x9c, 0xbe, 0x7a, 0xcf, 0x0d, 0xaa, 0xd7, 0x8b, - 0xdc, 0xf6, 0x82, 0xeb, 0x45, 0x61, 0x14, 0xa4, 0x2b, 0xd9, 0x3f, 0x2a, 0x40, 0xb9, 0xba, 0x52, + 0xdc, 0xf6, 0x82, 0xeb, 0x45, 0x61, 0x14, 0xa4, 0x2b, 0xd9, 0x3f, 0x2e, 0x40, 0xb9, 0xba, 0x52, 0xab, 0x47, 0x4e, 0xd4, 0x0b, 0xc9, 0x2f, 0x5a, 0x30, 0xd1, 0xf6, 0x9d, 0x66, 0xcd, 0x69, 0x3b, 0x5e, 0x83, 0x06, 0x33, 0xd6, 0x65, 0xeb, 0x4a, 0xe5, 0xea, 0xca, 0xfc, 0x30, 0xfd, 0x35, 0x5f, - 0xbd, 0x1f, 0x22, 0x0d, 0xfd, 0x5e, 0xd0, 0xa0, 0x48, 0x37, 0x6b, 0xe7, 0xbf, 0xb3, 0x37, 0xf7, - 0xc8, 0xfe, 0xde, 0xdc, 0xc4, 0x8a, 0xc1, 0x09, 0x13, 0x7c, 0xc9, 0x37, 0x2c, 0x38, 0xdb, 0x70, + 0xbd, 0x1f, 0x22, 0x0d, 0xfd, 0x5e, 0xd0, 0xa0, 0x48, 0x37, 0x6b, 0xe7, 0xbf, 0xbb, 0x37, 0xf7, + 0xc8, 0xfe, 0xde, 0xdc, 0xc4, 0x8a, 0xc1, 0x09, 0x13, 0x7c, 0xc9, 0x37, 0x2d, 0x38, 0xdb, 0x70, 0x3c, 0x27, 0xd8, 0x5d, 0x77, 0x82, 0x16, 0x8d, 0x5e, 0x09, 0xfc, 0x5e, 0x77, 0x66, 0xe4, 0x14, 0xa4, 0x79, 0x5c, 0x4a, 0x73, 0x76, 0x31, 0xcd, 0x0e, 0xfb, 0x25, 0xe0, 0x72, 0x85, 0x91, 0xb3, 0xd1, 0xa6, 0xa6, 0x5c, 0x85, 0xd3, 0x94, 0xab, 0x9e, 0x66, 0x87, 0xfd, 0x12, 0x90, 0x67, 0x60, 0xdc, 0xf5, 0x5a, 0x01, 0x0d, 0xc3, 0x99, 0xd1, 0xcb, 0xd6, 0x95, 0x72, 0x6d, 0x4a, 0x56, 0x1f, - 0x5f, 0x16, 0xc5, 0xa8, 0xe0, 0xf6, 0xef, 0x14, 0xe0, 0x6c, 0x75, 0xa5, 0xb6, 0x1e, 0x38, 0x9b, + 0x5f, 0x16, 0xc5, 0xa8, 0xe0, 0xf6, 0x6f, 0x17, 0xe0, 0x6c, 0x75, 0xa5, 0xb6, 0x1e, 0x38, 0x9b, 0x9b, 0x6e, 0x03, 0xfd, 0x5e, 0xe4, 0x7a, 0x2d, 0x93, 0x80, 0x75, 0x30, 0x01, 0xf2, 0x02, 0x54, 0x42, 0x1a, 0xec, 0xb8, 0x0d, 0xba, 0xe6, 0x07, 0x11, 0xef, 0x94, 0x62, 0xed, 0x9c, 0x44, 0xaf, 0xd4, 0x63, 0x10, 0x9a, 0x78, 0xac, 0x5a, 0xe0, 0xfb, 0x91, 0x84, 0xf3, 0x36, 0x2b, 0xc7, 0xd5, 0x30, 0x06, 0xa1, 0x89, 0x47, 0x96, 0x60, 0xda, 0xf1, 0x3c, 0x3f, 0x72, 0x22, 0xd7, 0xf7, 0xd6, 0x02, 0xba, 0xe9, 0x3e, 0x90, 0x9f, 0x38, 0x23, 0xeb, 0x4e, 0x57, 0x53, 0x70, 0xec, 0xab, 0x41, - 0xbe, 0x6e, 0xc1, 0x74, 0x18, 0xb9, 0x8d, 0x6d, 0xd7, 0xa3, 0x61, 0xb8, 0xe8, 0x7b, 0x9b, 0x6e, + 0xbe, 0x61, 0xc1, 0x74, 0x18, 0xb9, 0x8d, 0x6d, 0xd7, 0xa3, 0x61, 0xb8, 0xe8, 0x7b, 0x9b, 0x6e, 0x6b, 0xa6, 0xc8, 0xbb, 0xed, 0xd6, 0x70, 0xdd, 0x56, 0x4f, 0x51, 0xad, 0x9d, 0x67, 0x22, 0xa5, 0x4b, 0xb1, 0x8f, 0x3b, 0xf9, 0x20, 0x94, 0x65, 0x8b, 0xd2, 0x70, 0x66, 0xec, 0x72, 0xe1, 0x4a, 0xb9, 0x76, 0x66, 0x7f, 0x6f, 0xae, 0xbc, 0xac, 0x0a, 0x31, 0x86, 0xdb, 0x4b, 0x30, 0x53, 0xed, @@ -3490,10 +3490,10 @@ var fileDescriptor_e0e705f843545fab = []byte{ 0x6f, 0x39, 0x1d, 0x8a, 0x1c, 0x42, 0x9e, 0x82, 0xe2, 0x8e, 0xd3, 0xee, 0x51, 0xde, 0x48, 0xe5, 0xda, 0x19, 0x89, 0x52, 0x7c, 0x9d, 0x15, 0xa2, 0x80, 0x91, 0xb7, 0xa0, 0xcc, 0x7f, 0x5c, 0x0f, 0xfc, 0x4e, 0x4e, 0x9f, 0x26, 0x25, 0x7c, 0x5d, 0x91, 0x15, 0xc3, 0x4f, 0xff, 0xc5, 0x98, 0xa1, - 0xfd, 0x47, 0x16, 0x4c, 0x19, 0x1f, 0xb7, 0xe2, 0x86, 0x11, 0xf9, 0x74, 0xdf, 0xe0, 0x99, 0x3f, + 0xfd, 0x87, 0x16, 0x4c, 0x19, 0x1f, 0xb7, 0xe2, 0x86, 0x11, 0xf9, 0x74, 0xdf, 0xe0, 0x99, 0x3f, 0xda, 0xe0, 0x61, 0xb5, 0xf9, 0xd0, 0x99, 0x96, 0x5f, 0x5a, 0x52, 0x25, 0xc6, 0xc0, 0xf1, 0xa0, 0xe8, 0x46, 0xb4, 0x13, 0xce, 0x8c, 0x5c, 0x2e, 0x5c, 0xa9, 0x5c, 0x5d, 0xce, 0xad, 0x1b, 0xe3, - 0xf6, 0x5d, 0x66, 0xf4, 0x51, 0xb0, 0xb1, 0xbf, 0x55, 0x48, 0x74, 0xdf, 0xaa, 0x92, 0xe3, 0x1d, + 0xf6, 0x5d, 0x66, 0xf4, 0x51, 0xb0, 0xb1, 0xbf, 0x5d, 0x48, 0x74, 0xdf, 0xaa, 0x92, 0xe3, 0x1d, 0x0b, 0xc6, 0xda, 0xce, 0x06, 0x6d, 0x8b, 0xb9, 0x55, 0xb9, 0xfa, 0x46, 0x6e, 0x92, 0x28, 0x1e, 0xf3, 0x2b, 0x9c, 0xfe, 0x35, 0x2f, 0x0a, 0x76, 0xe3, 0xe1, 0x25, 0x0a, 0x51, 0x32, 0x27, 0x7f, 0xdb, 0x82, 0x4a, 0xbc, 0xaa, 0xa9, 0x66, 0xd9, 0xc8, 0x5f, 0x98, 0x78, 0x31, 0x95, 0x12, 0xe9, @@ -3505,497 +3505,497 @@ var fileDescriptor_e0e705f843545fab = []byte{ 0xae, 0xe7, 0x33, 0x2d, 0xe3, 0xa5, 0xa2, 0x1a, 0xb4, 0x42, 0xe4, 0x1c, 0xc8, 0x02, 0x94, 0x23, 0x1a, 0x74, 0x5c, 0xcf, 0x89, 0xc4, 0x0e, 0x5a, 0xaa, 0x9d, 0x95, 0x68, 0xe5, 0x75, 0x05, 0xc0, 0x18, 0x87, 0xb4, 0x61, 0xac, 0x19, 0xec, 0x62, 0xcf, 0x9b, 0x19, 0xcd, 0xa3, 0x29, 0x96, 0x38, - 0xad, 0x78, 0x90, 0x8a, 0xff, 0x28, 0x79, 0x90, 0xdf, 0xb4, 0xe0, 0x7c, 0x87, 0x3a, 0x61, 0x2f, + 0xad, 0x78, 0x90, 0x8a, 0xff, 0x28, 0x79, 0x90, 0xdf, 0xb0, 0xe0, 0x7c, 0x87, 0x3a, 0x61, 0x2f, 0xa0, 0xec, 0x13, 0x90, 0x46, 0xd4, 0x63, 0x1d, 0x3b, 0x53, 0xe4, 0xcc, 0x71, 0xd8, 0x7e, 0xe8, 0xa7, 0x5c, 0x7b, 0x52, 0x8a, 0x72, 0x3e, 0x0b, 0x8a, 0x99, 0xd2, 0x90, 0xb7, 0xa0, 0x12, 0x45, 0xed, 0x7a, 0xc4, 0xf4, 0xe0, 0xd6, 0xee, 0xcc, 0x18, 0x5f, 0xbc, 0x86, 0x5c, 0x61, 0xd6, 0xd7, 0x57, 0x14, 0xc1, 0xda, 0x14, 0x9b, 0x2d, 0x46, 0x01, 0x9a, 0xec, 0xec, 0x7f, 0x59, 0x84, 0xb3, 0x7d, 0xdb, 0x0a, 0x79, 0x1e, 0x8a, 0xdd, 0x2d, 0x27, 0x54, 0xfb, 0xc4, 0x25, 0xb5, 0x48, 0xad, 0xb1, 0xc2, 0x77, 0xf7, 0xe6, 0xce, 0xa8, 0x2a, 0xbc, 0x00, 0x05, 0x32, 0xd3, 0xda, 0x3a, 0x34, - 0x0c, 0x9d, 0x96, 0xda, 0x3c, 0x8c, 0x41, 0xca, 0x8b, 0x51, 0xc1, 0xc9, 0x2f, 0x59, 0x70, 0x46, - 0x0c, 0x58, 0xa4, 0x61, 0xaf, 0x1d, 0xb1, 0x0d, 0x92, 0x75, 0xca, 0xcd, 0x3c, 0x26, 0x87, 0x20, - 0x59, 0xbb, 0x20, 0xb9, 0x9f, 0x31, 0x4b, 0x43, 0x4c, 0xf2, 0x25, 0x77, 0xa1, 0x1c, 0x46, 0x4e, - 0x10, 0xd1, 0x66, 0x35, 0xe2, 0xaa, 0x5c, 0xe5, 0xea, 0x4f, 0x1f, 0x6d, 0xe7, 0x58, 0x77, 0x3b, - 0x54, 0xec, 0x52, 0x75, 0x45, 0x00, 0x63, 0x5a, 0xe4, 0x2d, 0x80, 0xa0, 0xe7, 0xd5, 0x7b, 0x9d, - 0x8e, 0x13, 0xec, 0x4a, 0xed, 0xee, 0xc6, 0x70, 0x9f, 0x87, 0x9a, 0x5e, 0xac, 0xe8, 0xc4, 0x65, - 0x68, 0xf0, 0x23, 0x5f, 0xb0, 0xe0, 0x8c, 0x98, 0x07, 0x4a, 0x82, 0xb1, 0x9c, 0x25, 0x38, 0xcb, - 0x9a, 0x76, 0xc9, 0x64, 0x81, 0x49, 0x8e, 0xe4, 0x0d, 0xa8, 0x34, 0xfc, 0x4e, 0xb7, 0x4d, 0x45, - 0xe3, 0x8e, 0x1f, 0xbb, 0x71, 0xf9, 0xd0, 0x5d, 0x8c, 0x49, 0xa0, 0x49, 0xcf, 0xfe, 0x8f, 0x49, - 0x1d, 0x47, 0x0d, 0x69, 0xf2, 0x29, 0x78, 0x3c, 0xec, 0x35, 0x1a, 0x34, 0x0c, 0x37, 0x7b, 0x6d, - 0xec, 0x79, 0x37, 0xdc, 0x30, 0xf2, 0x83, 0xdd, 0x15, 0xb7, 0xe3, 0x46, 0x7c, 0x40, 0x17, 0x6b, - 0x17, 0xf7, 0xf7, 0xe6, 0x1e, 0xaf, 0x0f, 0x42, 0xc2, 0xc1, 0xf5, 0x89, 0x03, 0x4f, 0xf4, 0xbc, - 0xc1, 0xe4, 0xc5, 0xf1, 0x63, 0x6e, 0x7f, 0x6f, 0xee, 0x89, 0x3b, 0x83, 0xd1, 0xf0, 0x20, 0x1a, - 0xf6, 0x9f, 0x58, 0x6c, 0x1b, 0x12, 0xdf, 0xb5, 0x4e, 0x3b, 0xdd, 0x36, 0x5b, 0x3a, 0x4f, 0x5f, - 0x39, 0x8e, 0x12, 0xca, 0x31, 0xe6, 0xb3, 0x97, 0x2b, 0xf9, 0x07, 0x69, 0xc8, 0xf6, 0x7f, 0xb7, - 0xe0, 0x7c, 0x1a, 0xf9, 0x21, 0x28, 0x74, 0x61, 0x52, 0xa1, 0xbb, 0x95, 0xef, 0xd7, 0x0e, 0xd0, - 0xea, 0x7e, 0xd9, 0x18, 0xb0, 0x0a, 0x15, 0xe9, 0x26, 0x79, 0x11, 0x26, 0x22, 0xf9, 0xf7, 0x56, - 0xac, 0x9c, 0x6b, 0xc3, 0xc4, 0xba, 0x01, 0xc3, 0x04, 0x26, 0xab, 0xd9, 0x68, 0xf7, 0xc2, 0x88, - 0x06, 0xf5, 0x86, 0xdf, 0x15, 0xcb, 0x6e, 0x29, 0xae, 0xb9, 0x68, 0xc0, 0x30, 0x81, 0x69, 0xff, - 0x8d, 0x62, 0x7f, 0xbb, 0xff, 0xff, 0xae, 0xaf, 0xc4, 0xea, 0x47, 0xe1, 0xbd, 0x54, 0x3f, 0x46, - 0xdf, 0x57, 0xea, 0xc7, 0x17, 0x2d, 0xa6, 0xc5, 0x89, 0x01, 0x10, 0x4a, 0xd5, 0xe8, 0xb5, 0x7c, - 0xa7, 0x03, 0xd2, 0x4d, 0x53, 0x31, 0x94, 0xbc, 0x30, 0x66, 0x6b, 0xff, 0xa3, 0x51, 0x98, 0xa8, - 0x7a, 0x91, 0x5b, 0xdd, 0xdc, 0x74, 0x3d, 0x37, 0xda, 0x25, 0x5f, 0x1d, 0x81, 0x85, 0x6e, 0x40, - 0x37, 0x69, 0x10, 0xd0, 0xe6, 0x52, 0x2f, 0x70, 0xbd, 0x56, 0xbd, 0xb1, 0x45, 0x9b, 0xbd, 0xb6, - 0xeb, 0xb5, 0x96, 0x5b, 0x9e, 0xaf, 0x8b, 0xaf, 0x3d, 0xa0, 0x8d, 0x1e, 0x6f, 0x57, 0xb1, 0x4a, - 0x74, 0x86, 0x93, 0x7d, 0xed, 0x78, 0x4c, 0x6b, 0xcf, 0xed, 0xef, 0xcd, 0x2d, 0x1c, 0xb3, 0x12, - 0x1e, 0xf7, 0xd3, 0xc8, 0x97, 0x47, 0x60, 0x3e, 0xa0, 0x9f, 0xed, 0xb9, 0x47, 0x6f, 0x0d, 0xb1, - 0x8c, 0xb7, 0x87, 0xdc, 0xee, 0x8f, 0xc5, 0xb3, 0x76, 0x75, 0x7f, 0x6f, 0xee, 0x98, 0x75, 0xf0, - 0x98, 0xdf, 0x65, 0xaf, 0x41, 0xa5, 0xda, 0x75, 0x43, 0xf7, 0x01, 0xfa, 0xbd, 0x88, 0x1e, 0xc1, - 0xa0, 0x31, 0x07, 0xc5, 0xa0, 0xd7, 0xa6, 0x62, 0x81, 0x29, 0xd7, 0xca, 0x6c, 0x59, 0x46, 0x56, - 0x80, 0xa2, 0xdc, 0xfe, 0x22, 0xdb, 0x82, 0x38, 0xc9, 0x94, 0x29, 0xeb, 0x1e, 0x14, 0x03, 0xc6, - 0x44, 0x8e, 0xac, 0x61, 0x4f, 0xfd, 0xb1, 0xd4, 0x52, 0x08, 0xf6, 0x13, 0x05, 0x0b, 0xfb, 0xdb, - 0x23, 0x70, 0xa1, 0xda, 0xed, 0xae, 0xd2, 0x70, 0x2b, 0x25, 0xc5, 0xaf, 0x58, 0x30, 0xb9, 0xe3, - 0x06, 0x51, 0xcf, 0x69, 0x2b, 0x6b, 0xa5, 0x90, 0xa7, 0x3e, 0xac, 0x3c, 0x9c, 0xdb, 0xeb, 0x09, - 0xd2, 0x35, 0xb2, 0xbf, 0x37, 0x37, 0x99, 0x2c, 0xc3, 0x14, 0x7b, 0xf2, 0xb7, 0x2c, 0x98, 0x96, - 0x45, 0xb7, 0xfc, 0x26, 0x35, 0xad, 0xe1, 0x77, 0xf2, 0x94, 0x49, 0x13, 0x17, 0x56, 0xcc, 0x74, - 0x29, 0xf6, 0x09, 0x61, 0xff, 0xcf, 0x11, 0x78, 0x6c, 0x00, 0x0d, 0xf2, 0x5b, 0x16, 0x9c, 0x17, - 0x26, 0x74, 0x03, 0x84, 0x74, 0x53, 0xb6, 0xe6, 0x27, 0xf2, 0x96, 0x1c, 0xd9, 0x14, 0xa7, 0x5e, - 0x83, 0xd6, 0x66, 0xd8, 0x92, 0xbc, 0x98, 0xc1, 0x1a, 0x33, 0x05, 0xe2, 0x92, 0x0a, 0xa3, 0x7a, - 0x4a, 0xd2, 0x91, 0x87, 0x22, 0x69, 0x3d, 0x83, 0x35, 0x66, 0x0a, 0x64, 0xff, 0x35, 0x78, 0xe2, - 0x00, 0x72, 0x87, 0x4f, 0x4e, 0xfb, 0x0d, 0x3d, 0xea, 0x93, 0x63, 0xee, 0x08, 0xf3, 0xda, 0x86, - 0x31, 0x3e, 0x75, 0xd4, 0xc4, 0x06, 0xb6, 0x07, 0xf3, 0x39, 0x15, 0xa2, 0x84, 0xd8, 0xdf, 0xb6, - 0xa0, 0x74, 0x0c, 0xdb, 0xe7, 0x5c, 0xd2, 0xf6, 0x59, 0xee, 0xb3, 0x7b, 0x46, 0xfd, 0x76, 0xcf, - 0x57, 0x86, 0xeb, 0x8d, 0xa3, 0xd8, 0x3b, 0x7f, 0x64, 0xc1, 0xd9, 0x3e, 0xfb, 0x28, 0xd9, 0x82, - 0xf3, 0x5d, 0xbf, 0xa9, 0xb6, 0xd3, 0x1b, 0x4e, 0xb8, 0xc5, 0x61, 0xf2, 0xf3, 0x9e, 0x67, 0x3d, - 0xb9, 0x96, 0x01, 0x7f, 0x77, 0x6f, 0x6e, 0x46, 0x13, 0x49, 0x21, 0x60, 0x26, 0x45, 0xd2, 0x85, - 0xd2, 0xa6, 0x4b, 0xdb, 0xcd, 0x78, 0x08, 0x0e, 0xa9, 0xa5, 0x5d, 0x97, 0xd4, 0xc4, 0xd5, 0x80, - 0xfa, 0x87, 0x9a, 0x8b, 0xfd, 0x63, 0x0b, 0x26, 0xab, 0xbd, 0x68, 0x8b, 0xe9, 0x28, 0x0d, 0x6e, - 0x8d, 0x23, 0x1e, 0x14, 0x43, 0xb7, 0xb5, 0xf3, 0x7c, 0x3e, 0x8b, 0x71, 0x9d, 0x91, 0x92, 0x57, - 0x24, 0x5a, 0x59, 0xe7, 0x85, 0x28, 0xd8, 0x90, 0x00, 0xc6, 0x7c, 0xa7, 0x17, 0x6d, 0x5d, 0x95, - 0x9f, 0x3c, 0xa4, 0x65, 0xe2, 0x36, 0xfb, 0x9c, 0xab, 0x92, 0xa3, 0x56, 0x19, 0x45, 0x29, 0x4a, - 0x4e, 0xf6, 0xe7, 0x61, 0x32, 0x79, 0xef, 0x76, 0x84, 0x31, 0x7b, 0x11, 0x0a, 0x4e, 0xe0, 0xc9, - 0x11, 0x5b, 0x91, 0x08, 0x85, 0x2a, 0xde, 0x42, 0x56, 0x4e, 0x9e, 0x85, 0xd2, 0x66, 0xaf, 0xdd, - 0xe6, 0xe7, 0x0a, 0x71, 0xc9, 0xa5, 0x8f, 0x45, 0xd7, 0x65, 0x39, 0x6a, 0x0c, 0xfb, 0xff, 0x8c, - 0xc2, 0x54, 0xad, 0xdd, 0xa3, 0xaf, 0x04, 0x94, 0x2a, 0x5b, 0x50, 0x15, 0xa6, 0xba, 0x01, 0xdd, - 0x71, 0xe9, 0xfd, 0x3a, 0x6d, 0xd3, 0x46, 0xe4, 0x07, 0x52, 0x9a, 0xc7, 0x24, 0xa1, 0xa9, 0xb5, - 0x24, 0x18, 0xd3, 0xf8, 0xe4, 0x65, 0x98, 0x74, 0x1a, 0x91, 0xbb, 0x43, 0x35, 0x05, 0x21, 0xee, - 0xa3, 0x92, 0xc2, 0x64, 0x35, 0x01, 0xc5, 0x14, 0x36, 0xf9, 0x34, 0xcc, 0x84, 0x0d, 0xa7, 0x4d, - 0xef, 0x74, 0x25, 0xab, 0xc5, 0x2d, 0xda, 0xd8, 0x5e, 0xf3, 0x5d, 0x2f, 0x92, 0x76, 0xc7, 0xcb, - 0x92, 0xd2, 0x4c, 0x7d, 0x00, 0x1e, 0x0e, 0xa4, 0x40, 0xfe, 0x95, 0x05, 0x17, 0xbb, 0x01, 0x5d, - 0x0b, 0xfc, 0x8e, 0xcf, 0x86, 0x5a, 0x9f, 0x39, 0x4c, 0x9a, 0x85, 0x5e, 0x1f, 0x52, 0x97, 0x12, - 0x25, 0xfd, 0x77, 0x38, 0x1f, 0xd8, 0xdf, 0x9b, 0xbb, 0xb8, 0x76, 0x90, 0x00, 0x78, 0xb0, 0x7c, - 0xe4, 0xdf, 0x58, 0x70, 0xa9, 0xeb, 0x87, 0xd1, 0x01, 0x9f, 0x50, 0x3c, 0xd5, 0x4f, 0xb0, 0xf7, - 0xf7, 0xe6, 0x2e, 0xad, 0x1d, 0x28, 0x01, 0x1e, 0x22, 0xa1, 0xbd, 0x5f, 0x81, 0xb3, 0xc6, 0xd8, - 0x93, 0xc6, 0x9c, 0x97, 0xe0, 0x8c, 0x1a, 0x0c, 0xb1, 0xee, 0x53, 0x8e, 0x6d, 0x7b, 0x55, 0x13, - 0x88, 0x49, 0x5c, 0x36, 0xee, 0xf4, 0x50, 0x14, 0xb5, 0x53, 0xe3, 0x6e, 0x2d, 0x01, 0xc5, 0x14, - 0x36, 0x59, 0x86, 0x73, 0xb2, 0x04, 0x69, 0xb7, 0xed, 0x36, 0x9c, 0x45, 0xbf, 0x27, 0x87, 0x5c, - 0xb1, 0xf6, 0xd8, 0xfe, 0xde, 0xdc, 0xb9, 0xb5, 0x7e, 0x30, 0x66, 0xd5, 0x21, 0x2b, 0x70, 0xde, - 0xe9, 0x45, 0xbe, 0xfe, 0xfe, 0x6b, 0x1e, 0xdb, 0x4e, 0x9b, 0x7c, 0x68, 0x95, 0xc4, 0xbe, 0x5b, - 0xcd, 0x80, 0x63, 0x66, 0x2d, 0xb2, 0x96, 0xa2, 0x56, 0xa7, 0x0d, 0xdf, 0x6b, 0x8a, 0x5e, 0x2e, - 0xc6, 0xc7, 0xc0, 0x6a, 0x06, 0x0e, 0x66, 0xd6, 0x24, 0x6d, 0x98, 0xec, 0x38, 0x0f, 0xee, 0x78, - 0xce, 0x8e, 0xe3, 0xb6, 0x19, 0x13, 0x69, 0x2f, 0x1c, 0x6c, 0x65, 0xea, 0x45, 0x6e, 0x7b, 0x5e, - 0xf8, 0x71, 0xcc, 0x2f, 0x7b, 0xd1, 0xed, 0xa0, 0x1e, 0x31, 0x4d, 0x5d, 0x68, 0x90, 0xab, 0x09, - 0x5a, 0x98, 0xa2, 0x4d, 0x6e, 0xc3, 0x05, 0x3e, 0x1d, 0x97, 0xfc, 0xfb, 0xde, 0x12, 0x6d, 0x3b, - 0xbb, 0xea, 0x03, 0xc6, 0xf9, 0x07, 0x3c, 0xbe, 0xbf, 0x37, 0x77, 0xa1, 0x9e, 0x85, 0x80, 0xd9, - 0xf5, 0x88, 0x03, 0x4f, 0x24, 0x01, 0x48, 0x77, 0xdc, 0xd0, 0xf5, 0x3d, 0x61, 0x96, 0x2b, 0xc5, - 0x66, 0xb9, 0xfa, 0x60, 0x34, 0x3c, 0x88, 0x06, 0xf9, 0xbb, 0x16, 0x9c, 0xcf, 0x9a, 0x86, 0x33, - 0xe5, 0x3c, 0x6e, 0x93, 0x53, 0x53, 0x4b, 0x8c, 0x88, 0xcc, 0x45, 0x21, 0x53, 0x08, 0xf2, 0xb6, - 0x05, 0x13, 0x8e, 0x71, 0x82, 0x9e, 0x81, 0x3c, 0x76, 0x2d, 0xf3, 0x4c, 0x5e, 0x9b, 0xde, 0xdf, - 0x9b, 0x4b, 0x9c, 0xd2, 0x31, 0xc1, 0x91, 0xfc, 0x7d, 0x0b, 0x2e, 0x64, 0xce, 0xf1, 0x99, 0xca, - 0x69, 0xb4, 0x10, 0x1f, 0x24, 0xd9, 0x6b, 0x4e, 0xb6, 0x18, 0xe4, 0xeb, 0x96, 0xde, 0xca, 0xd4, - 0x05, 0xe3, 0xcc, 0x04, 0x17, 0x6d, 0x48, 0x83, 0x87, 0xa1, 0x46, 0x29, 0xc2, 0xb5, 0x73, 0xc6, - 0xce, 0xa8, 0x0a, 0x31, 0xcd, 0x9e, 0x7c, 0xcd, 0x52, 0x5b, 0xa3, 0x96, 0xe8, 0xcc, 0x69, 0x49, - 0x44, 0xe2, 0x9d, 0x56, 0x0b, 0x94, 0x62, 0x4e, 0x7e, 0x0e, 0x66, 0x9d, 0x0d, 0x3f, 0x88, 0x32, - 0x27, 0xdf, 0xcc, 0x24, 0x9f, 0x46, 0x97, 0xf6, 0xf7, 0xe6, 0x66, 0xab, 0x03, 0xb1, 0xf0, 0x00, - 0x0a, 0xf6, 0x77, 0xc7, 0x60, 0x42, 0x9c, 0x84, 0xe4, 0xd6, 0xf5, 0xbb, 0x16, 0x3c, 0xd9, 0xe8, - 0x05, 0x01, 0xf5, 0xa2, 0x7a, 0x44, 0xbb, 0xfd, 0x1b, 0x97, 0x75, 0xaa, 0x1b, 0xd7, 0xe5, 0xfd, - 0xbd, 0xb9, 0x27, 0x17, 0x0f, 0xe0, 0x8f, 0x07, 0x4a, 0x47, 0xfe, 0x83, 0x05, 0xb6, 0x44, 0xa8, - 0x39, 0x8d, 0xed, 0x56, 0xe0, 0xf7, 0xbc, 0x66, 0xff, 0x47, 0x8c, 0x9c, 0xea, 0x47, 0x3c, 0xbd, - 0xbf, 0x37, 0x67, 0x2f, 0x1e, 0x2a, 0x05, 0x1e, 0x41, 0x52, 0xf2, 0x0a, 0x9c, 0x95, 0x58, 0xd7, - 0x1e, 0x74, 0x69, 0xe0, 0xb2, 0x33, 0x87, 0x54, 0x1c, 0x63, 0xdf, 0xb4, 0x34, 0x02, 0xf6, 0xd7, - 0x21, 0x21, 0x8c, 0xdf, 0xa7, 0x6e, 0x6b, 0x2b, 0x52, 0xea, 0xd3, 0x90, 0x0e, 0x69, 0xd2, 0x2a, - 0x72, 0x57, 0xd0, 0xac, 0x55, 0xf6, 0xf7, 0xe6, 0xc6, 0xe5, 0x1f, 0x54, 0x9c, 0xc8, 0x2d, 0x98, - 0x14, 0xe7, 0xd4, 0x35, 0xd7, 0x6b, 0xad, 0xf9, 0x9e, 0xf0, 0xaa, 0x2a, 0xd7, 0x9e, 0x56, 0x1b, - 0x7e, 0x3d, 0x01, 0x7d, 0x77, 0x6f, 0x6e, 0x42, 0xfd, 0x5e, 0xdf, 0xed, 0x52, 0x4c, 0xd5, 0x26, - 0x7f, 0xc7, 0x02, 0x12, 0x46, 0xb4, 0xbb, 0xd6, 0xee, 0xb5, 0x5c, 0xd9, 0x44, 0xd2, 0x3f, 0x2a, - 0x07, 0x57, 0xad, 0x24, 0xdd, 0xda, 0xac, 0x14, 0x92, 0xd4, 0xfb, 0x38, 0x62, 0x86, 0x14, 0xf6, - 0xb7, 0xc6, 0x01, 0xd4, 0x5c, 0xa2, 0x5d, 0xf2, 0x41, 0x28, 0x87, 0x34, 0x12, 0x4d, 0x22, 0xaf, - 0xb9, 0xc4, 0xe5, 0xa4, 0x2a, 0xc4, 0x18, 0x4e, 0xb6, 0xa1, 0xd8, 0x75, 0x7a, 0x21, 0xcd, 0xe7, - 0x70, 0x23, 0x47, 0xe6, 0x1a, 0xa3, 0x28, 0x4e, 0xcd, 0xfc, 0x27, 0x0a, 0x1e, 0xe4, 0x4b, 0x16, - 0x00, 0x4d, 0x8e, 0xa6, 0xa1, 0xad, 0x57, 0x92, 0x65, 0x3c, 0xe0, 0x58, 0x1b, 0xd4, 0x26, 0xf7, - 0xf7, 0xe6, 0xc0, 0x18, 0x97, 0x06, 0x5b, 0x72, 0x1f, 0x4a, 0x8e, 0xda, 0x90, 0x46, 0x4f, 0x63, - 0x43, 0xe2, 0x87, 0x59, 0x3d, 0xa3, 0x34, 0x33, 0xf2, 0x65, 0x0b, 0x26, 0x43, 0x1a, 0xc9, 0xae, - 0x62, 0xcb, 0xa2, 0xd4, 0xc6, 0x87, 0x9c, 0x11, 0xf5, 0x04, 0x4d, 0xb1, 0xbc, 0x27, 0xcb, 0x30, - 0xc5, 0x57, 0x89, 0x72, 0x83, 0x3a, 0x4d, 0x1a, 0x70, 0x5b, 0x89, 0x54, 0xf3, 0x86, 0x17, 0xc5, - 0xa0, 0xa9, 0x45, 0x31, 0xca, 0x30, 0xc5, 0x57, 0x89, 0xb2, 0xea, 0x06, 0x81, 0x2f, 0x45, 0x29, - 0xe5, 0x24, 0x8a, 0x41, 0x53, 0x8b, 0x62, 0x94, 0x61, 0x8a, 0x2f, 0x69, 0xc3, 0x58, 0x97, 0x4f, - 0x2d, 0xa9, 0xca, 0x0d, 0x79, 0x47, 0xae, 0xa6, 0x29, 0xed, 0x0a, 0x9b, 0x94, 0xf8, 0x8f, 0x92, - 0x87, 0xfd, 0xcd, 0x33, 0x30, 0xa9, 0xa6, 0x6d, 0x7c, 0xc8, 0x11, 0x86, 0xc0, 0x01, 0x87, 0x9c, - 0x45, 0x13, 0x88, 0x49, 0x5c, 0x56, 0x59, 0xac, 0x5a, 0xc9, 0x33, 0x8e, 0xae, 0x5c, 0x37, 0x81, - 0x98, 0xc4, 0x25, 0x1d, 0x28, 0xb2, 0x95, 0x45, 0xb9, 0x5f, 0x0c, 0xf9, 0xe5, 0xf1, 0x6a, 0x64, - 0x18, 0x55, 0x18, 0x79, 0x14, 0x5c, 0xb8, 0x2d, 0x3b, 0x4a, 0x98, 0xb7, 0xe5, 0x54, 0xcc, 0x67, - 0x35, 0x48, 0x5a, 0xce, 0x45, 0xdf, 0x27, 0xcb, 0x30, 0xc5, 0x3e, 0xe3, 0xdc, 0x53, 0x3c, 0xc5, - 0x73, 0xcf, 0x27, 0xa1, 0xd4, 0x71, 0x1e, 0xd4, 0x7b, 0x41, 0xeb, 0xe4, 0xe7, 0x2b, 0xe9, 0x4e, - 0x2b, 0xa8, 0xa0, 0xa6, 0x47, 0xbe, 0x60, 0x19, 0x0b, 0x9c, 0xf0, 0xb5, 0xb8, 0x9b, 0xef, 0x02, - 0xa7, 0xd5, 0x86, 0x81, 0x4b, 0x5d, 0xdf, 0x29, 0xa4, 0xf4, 0xd0, 0x4f, 0x21, 0x4c, 0xa3, 0x16, - 0x13, 0x44, 0x6b, 0xd4, 0xe5, 0x53, 0xd5, 0xa8, 0x17, 0x13, 0xcc, 0x30, 0xc5, 0x9c, 0xcb, 0x23, - 0xe6, 0x9c, 0x96, 0x07, 0x4e, 0x55, 0x9e, 0x7a, 0x82, 0x19, 0xa6, 0x98, 0x0f, 0x3e, 0x7a, 0x57, - 0x4e, 0xe7, 0xe8, 0x3d, 0x91, 0xc3, 0xd1, 0xfb, 0xe0, 0x53, 0xc9, 0x99, 0x61, 0x4f, 0x25, 0xe4, - 0x26, 0x90, 0xe6, 0xae, 0xe7, 0x74, 0xdc, 0x86, 0x5c, 0x2c, 0xf9, 0x26, 0x3d, 0xc9, 0x4d, 0x33, - 0x5a, 0x2b, 0x5b, 0xea, 0xc3, 0xc0, 0x8c, 0x5a, 0x24, 0x82, 0x52, 0x57, 0x29, 0x9f, 0x53, 0x79, - 0x8c, 0x7e, 0xa5, 0x8c, 0x0a, 0x17, 0x1a, 0x36, 0xf1, 0x54, 0x09, 0x6a, 0x4e, 0x64, 0x05, 0xce, - 0x77, 0x5c, 0x6f, 0xcd, 0x6f, 0x86, 0x6b, 0x34, 0x90, 0x86, 0xa7, 0x3a, 0x8d, 0x66, 0xa6, 0x79, - 0xdb, 0x70, 0x63, 0xc2, 0x6a, 0x06, 0x1c, 0x33, 0x6b, 0xd9, 0xff, 0xdb, 0x82, 0xe9, 0xc5, 0xb6, - 0xdf, 0x6b, 0xde, 0x75, 0xa2, 0xc6, 0x96, 0xf0, 0xd8, 0x20, 0x2f, 0x43, 0xc9, 0xf5, 0x22, 0x1a, - 0xec, 0x38, 0x6d, 0xb9, 0x3f, 0xd9, 0xca, 0x92, 0xbc, 0x2c, 0xcb, 0xdf, 0xdd, 0x9b, 0x9b, 0x5c, - 0xea, 0x05, 0xdc, 0x60, 0x2f, 0x56, 0x2b, 0xd4, 0x75, 0xc8, 0x37, 0x2d, 0x38, 0x2b, 0x7c, 0x3e, - 0x96, 0x9c, 0xc8, 0x79, 0xad, 0x47, 0x03, 0x97, 0x2a, 0xaf, 0x8f, 0x21, 0x17, 0xaa, 0xb4, 0xac, - 0x8a, 0xc1, 0x6e, 0x7c, 0x66, 0x59, 0x4d, 0x73, 0xc6, 0x7e, 0x61, 0xec, 0x5f, 0x2b, 0xc0, 0xe3, - 0x03, 0x69, 0x91, 0x59, 0x18, 0x71, 0x9b, 0xf2, 0xd3, 0x41, 0xd2, 0x1d, 0x59, 0x6e, 0xe2, 0x88, - 0xdb, 0x24, 0xf3, 0x5c, 0xc3, 0x0d, 0x68, 0x18, 0xaa, 0xbb, 0xf7, 0xb2, 0x56, 0x46, 0x65, 0x29, - 0x1a, 0x18, 0x64, 0x0e, 0x8a, 0xdc, 0x95, 0x5a, 0x1e, 0xad, 0xb8, 0xce, 0xcc, 0xbd, 0x96, 0x51, - 0x94, 0x93, 0x2f, 0x5a, 0x00, 0x42, 0x40, 0xa6, 0xef, 0xcb, 0x5d, 0x12, 0xf3, 0x6d, 0x26, 0x46, - 0x59, 0x48, 0x19, 0xff, 0x47, 0x83, 0x2b, 0x59, 0x87, 0x31, 0xa6, 0x3e, 0xfb, 0xcd, 0x13, 0x6f, - 0x8a, 0x42, 0x01, 0xe2, 0x34, 0x50, 0xd2, 0x62, 0x6d, 0x15, 0xd0, 0xa8, 0x17, 0x78, 0xac, 0x69, - 0xf9, 0x36, 0x58, 0x12, 0x52, 0xa0, 0x2e, 0x45, 0x03, 0xc3, 0xfe, 0x17, 0x23, 0x70, 0x3e, 0x4b, - 0x74, 0xb6, 0xdb, 0x8c, 0x09, 0x69, 0xa5, 0x95, 0xe0, 0x67, 0xf3, 0x6f, 0x1f, 0xe9, 0xbe, 0xa4, - 0x6f, 0x6c, 0xa4, 0x2f, 0xa9, 0xe4, 0x4b, 0x7e, 0x56, 0xb7, 0xd0, 0xc8, 0x09, 0x5b, 0x48, 0x53, - 0x4e, 0xb5, 0xd2, 0x65, 0x18, 0x0d, 0x59, 0xcf, 0x17, 0x92, 0x37, 0x3f, 0xbc, 0x8f, 0x38, 0x84, - 0x61, 0xf4, 0x3c, 0x37, 0x92, 0xf1, 0x47, 0x1a, 0xe3, 0x8e, 0xe7, 0x46, 0xc8, 0x21, 0xf6, 0x37, - 0x46, 0x60, 0x76, 0xf0, 0x47, 0x91, 0x6f, 0x58, 0x00, 0x4d, 0x76, 0x38, 0x0a, 0xb9, 0x13, 0xbf, - 0x70, 0xf7, 0x72, 0x4e, 0xab, 0x0d, 0x97, 0x14, 0xa7, 0xd8, 0x0f, 0x51, 0x17, 0x85, 0x68, 0x08, - 0x42, 0xae, 0xaa, 0xa1, 0xcf, 0x6f, 0xad, 0xc4, 0x64, 0xd2, 0x75, 0x56, 0x35, 0x04, 0x0d, 0x2c, - 0x76, 0xfa, 0xf5, 0x9c, 0x0e, 0x0d, 0xbb, 0x8e, 0x8e, 0xe6, 0xe2, 0xa7, 0xdf, 0x5b, 0xaa, 0x10, - 0x63, 0xb8, 0xdd, 0x86, 0xa7, 0x8e, 0x20, 0x67, 0x4e, 0xc1, 0x32, 0xf6, 0x9f, 0x5a, 0xf0, 0x98, - 0xf4, 0xc4, 0xfb, 0x0b, 0xe3, 0xd6, 0xf9, 0x67, 0x16, 0x3c, 0x31, 0xe0, 0x9b, 0x1f, 0x82, 0x77, - 0xe7, 0x9b, 0x49, 0xef, 0xce, 0x3b, 0xc3, 0x0e, 0xe9, 0xcc, 0xef, 0x18, 0xe0, 0xe4, 0xf9, 0xdd, - 0x02, 0x9c, 0x61, 0xcb, 0x56, 0xd3, 0x6f, 0xe5, 0xb4, 0x71, 0x3e, 0x05, 0xc5, 0xcf, 0xb2, 0x0d, - 0x28, 0x3d, 0xc8, 0xf8, 0xae, 0x84, 0x02, 0x46, 0xbe, 0x64, 0xc1, 0xf8, 0x67, 0xe5, 0x9e, 0x2a, - 0xce, 0x72, 0x43, 0x2e, 0x86, 0x89, 0x6f, 0x98, 0x97, 0x3b, 0xa4, 0x88, 0xc1, 0xd1, 0xbe, 0x9c, - 0x6a, 0x2b, 0x55, 0x9c, 0xc9, 0x33, 0x30, 0xbe, 0xe9, 0x07, 0x9d, 0x5e, 0xdb, 0x49, 0x07, 0x7e, - 0x5e, 0x17, 0xc5, 0xa8, 0xe0, 0x6c, 0x92, 0x3b, 0x5d, 0xf7, 0x75, 0x1a, 0x84, 0x22, 0x24, 0x23, - 0x31, 0xc9, 0xab, 0x1a, 0x82, 0x06, 0x16, 0xaf, 0xd3, 0x6a, 0x05, 0xb4, 0xe5, 0x44, 0x7e, 0xc0, - 0x77, 0x0e, 0xb3, 0x8e, 0x86, 0xa0, 0x81, 0x35, 0xfb, 0x31, 0x98, 0x30, 0x85, 0x3f, 0x56, 0x3c, - 0xcf, 0xc7, 0x41, 0x3a, 0x75, 0xa6, 0x96, 0x24, 0xeb, 0x28, 0x4b, 0x92, 0xfd, 0x9f, 0x46, 0xc0, - 0xb0, 0x45, 0x3d, 0x84, 0xa9, 0xee, 0x25, 0xa6, 0xfa, 0x90, 0x76, 0x14, 0xc3, 0xb2, 0x36, 0x28, - 0xba, 0x71, 0x27, 0x15, 0xdd, 0x78, 0x2b, 0x37, 0x8e, 0x07, 0x07, 0x37, 0xfe, 0xc0, 0x82, 0x27, - 0x62, 0xe4, 0x7e, 0x1b, 0xf6, 0xe1, 0xeb, 0xf6, 0x0b, 0x50, 0x71, 0xe2, 0x6a, 0x72, 0x62, 0x19, - 0xa1, 0x65, 0x1a, 0x84, 0x26, 0x5e, 0x1c, 0x16, 0x53, 0x38, 0x61, 0x58, 0xcc, 0xe8, 0xc1, 0x61, - 0x31, 0xf6, 0x8f, 0x47, 0xe0, 0x62, 0xff, 0x97, 0x99, 0xbe, 0xe2, 0x87, 0x7f, 0x5b, 0xda, 0x9b, - 0x7c, 0xe4, 0xc4, 0xde, 0xe4, 0x85, 0xa3, 0x7a, 0x93, 0x6b, 0x1f, 0xee, 0xd1, 0x53, 0xf7, 0xe1, - 0xae, 0xc3, 0x05, 0xe5, 0x30, 0x7a, 0xdd, 0x0f, 0x64, 0x6c, 0x88, 0x5a, 0x41, 0x4a, 0xb5, 0x8b, - 0xb2, 0xca, 0x05, 0xcc, 0x42, 0xc2, 0xec, 0xba, 0xf6, 0x0f, 0x0a, 0x70, 0x2e, 0x6e, 0xf6, 0x45, - 0xdf, 0x6b, 0xba, 0xdc, 0xe7, 0xe8, 0x25, 0x18, 0x8d, 0x76, 0xbb, 0xaa, 0xb1, 0xff, 0xb2, 0x12, - 0x67, 0x7d, 0xb7, 0xcb, 0x7a, 0xfb, 0xb1, 0x8c, 0x2a, 0xfc, 0x16, 0x81, 0x57, 0x22, 0x2b, 0x7a, - 0x76, 0x88, 0x1e, 0x78, 0x3e, 0x39, 0x9a, 0xdf, 0xdd, 0x9b, 0xcb, 0xc8, 0xf2, 0x30, 0xaf, 0x29, - 0x25, 0xc7, 0x3c, 0xb9, 0x07, 0x93, 0x6d, 0x27, 0x8c, 0xee, 0x74, 0x9b, 0x4e, 0x44, 0xd7, 0x5d, - 0xe9, 0xcd, 0x73, 0xbc, 0x70, 0x1a, 0xed, 0xf6, 0xb0, 0x92, 0xa0, 0x84, 0x29, 0xca, 0x64, 0x07, - 0x08, 0x2b, 0x59, 0x0f, 0x1c, 0x2f, 0x14, 0x5f, 0xc5, 0xf8, 0x1d, 0x3f, 0x36, 0x4a, 0x1f, 0x9d, - 0x57, 0xfa, 0xa8, 0x61, 0x06, 0x07, 0xf2, 0x34, 0x8c, 0x05, 0xd4, 0x09, 0xf5, 0x76, 0xa0, 0xe7, - 0x3f, 0xf2, 0x52, 0x94, 0x50, 0x73, 0x42, 0x8d, 0x1d, 0x32, 0xa1, 0xfe, 0xd0, 0x82, 0xc9, 0xb8, - 0x9b, 0x1e, 0x82, 0xea, 0xd1, 0x49, 0xaa, 0x1e, 0x37, 0xf2, 0x5a, 0x12, 0x07, 0x68, 0x1b, 0x7f, - 0x32, 0x6e, 0x7e, 0x1f, 0x0f, 0xe0, 0xf8, 0x9c, 0xe9, 0xcf, 0x6f, 0xe5, 0x11, 0x55, 0x97, 0xd0, - 0xf6, 0x0e, 0x74, 0xe4, 0x67, 0xba, 0x4e, 0x53, 0xea, 0x31, 0x72, 0xd8, 0x6b, 0x5d, 0x47, 0xe9, - 0x37, 0x59, 0xba, 0x8e, 0xaa, 0x43, 0xee, 0xc0, 0x63, 0xdd, 0xc0, 0xe7, 0x79, 0x06, 0x96, 0xa8, - 0xd3, 0x6c, 0xbb, 0x1e, 0x55, 0x66, 0x1e, 0xe1, 0x75, 0xf3, 0xc4, 0xfe, 0xde, 0xdc, 0x63, 0x6b, - 0xd9, 0x28, 0x38, 0xa8, 0x6e, 0x32, 0x52, 0x75, 0xf4, 0x08, 0x91, 0xaa, 0xbf, 0xac, 0x8d, 0xa9, - 0x3a, 0x28, 0xe2, 0x53, 0x79, 0x75, 0x65, 0x56, 0x78, 0x84, 0x1e, 0x52, 0x55, 0xc9, 0x14, 0x35, - 0xfb, 0xc1, 0x16, 0xbb, 0xb1, 0x13, 0x5a, 0xec, 0xe2, 0x38, 0x98, 0xf1, 0xf7, 0x32, 0x0e, 0xa6, - 0xf4, 0xbe, 0x8a, 0x83, 0xf9, 0xa6, 0x05, 0xe7, 0x9c, 0xfe, 0x08, 0xf4, 0x7c, 0x8c, 0xc7, 0x19, - 0xa1, 0xed, 0xb5, 0x27, 0xa4, 0x90, 0x59, 0x81, 0xfe, 0x98, 0x25, 0x8a, 0xfd, 0x4e, 0x11, 0xa6, - 0xd3, 0x4a, 0xd2, 0xe9, 0x87, 0xea, 0xfe, 0xaa, 0x05, 0xd3, 0x6a, 0x82, 0xeb, 0x1b, 0x70, 0x71, - 0xc4, 0x58, 0xc9, 0x69, 0x5d, 0x11, 0xea, 0x9e, 0xce, 0xa0, 0xb2, 0x9e, 0xe2, 0x86, 0x7d, 0xfc, - 0xc9, 0x1b, 0x50, 0xd1, 0xb7, 0x2a, 0x27, 0x8a, 0xdb, 0xe5, 0xa1, 0xa5, 0xd5, 0x98, 0x04, 0x9a, - 0xf4, 0xc8, 0x3b, 0x16, 0x40, 0x43, 0xed, 0xc4, 0x39, 0x45, 0x45, 0x65, 0x68, 0x0b, 0xb1, 0x3e, - 0xaf, 0x8b, 0x42, 0x34, 0x18, 0x93, 0x5f, 0xe3, 0xf7, 0x29, 0x7a, 0x24, 0x28, 0xcf, 0x83, 0x4f, - 0xe4, 0xbd, 0x14, 0xc5, 0xbe, 0x24, 0x5a, 0xdb, 0x33, 0x40, 0x21, 0x26, 0x84, 0xb0, 0x5f, 0x02, - 0xed, 0xb3, 0xcd, 0x56, 0x56, 0xee, 0xb5, 0xbd, 0xe6, 0x44, 0x5b, 0x72, 0x08, 0xea, 0x95, 0xf5, - 0xba, 0x02, 0x60, 0x8c, 0x63, 0x7f, 0x06, 0x26, 0x5f, 0x09, 0x9c, 0xee, 0x96, 0xcb, 0xef, 0x2d, - 0xd8, 0xf9, 0xf8, 0x19, 0x18, 0x77, 0x9a, 0xcd, 0xac, 0x64, 0x3f, 0x55, 0x51, 0x8c, 0x0a, 0x7e, - 0xa4, 0xa3, 0xb0, 0xfd, 0xef, 0x2c, 0x20, 0xf1, 0x4d, 0xb3, 0xeb, 0xb5, 0x56, 0x9d, 0xa8, 0xb1, - 0xc5, 0x8e, 0x70, 0x5b, 0xbc, 0x34, 0xeb, 0x08, 0x77, 0x43, 0x43, 0xd0, 0xc0, 0x22, 0x6f, 0x41, - 0x45, 0xfc, 0x7b, 0x5d, 0x1f, 0x10, 0x87, 0x77, 0x3d, 0xe7, 0x7b, 0x1e, 0x97, 0x49, 0x8c, 0xc2, - 0x1b, 0x31, 0x07, 0x34, 0xd9, 0xb1, 0xa6, 0x5a, 0xf6, 0x36, 0xdb, 0xbd, 0x07, 0xcd, 0x8d, 0xb8, - 0xa9, 0xba, 0x81, 0xbf, 0xe9, 0xb6, 0x69, 0xba, 0xa9, 0xd6, 0x44, 0x31, 0x2a, 0xf8, 0xd1, 0x9a, - 0xea, 0xdf, 0x5a, 0x70, 0x7e, 0x39, 0x8c, 0x5c, 0x7f, 0x89, 0x86, 0x11, 0xdb, 0xf9, 0xd8, 0xfa, - 0xd8, 0x6b, 0x1f, 0x25, 0xfc, 0x62, 0x09, 0xa6, 0xe5, 0x3d, 0x74, 0x6f, 0x23, 0xa4, 0x91, 0x71, - 0xd4, 0xd0, 0xf3, 0x78, 0x31, 0x05, 0xc7, 0xbe, 0x1a, 0x8c, 0x8a, 0xbc, 0x90, 0x8e, 0xa9, 0x14, - 0x92, 0x54, 0xea, 0x29, 0x38, 0xf6, 0xd5, 0xb0, 0xbf, 0x5f, 0x80, 0x73, 0xfc, 0x33, 0x52, 0xa1, - 0x53, 0x5f, 0x1b, 0x14, 0x3a, 0x35, 0xe4, 0x54, 0xe6, 0xbc, 0x4e, 0x10, 0x38, 0xf5, 0x37, 0x2d, - 0x98, 0x6a, 0x26, 0x5b, 0x3a, 0x1f, 0xbb, 0x5c, 0x56, 0x1f, 0x0a, 0x0f, 0xc4, 0x54, 0x21, 0xa6, - 0xf9, 0x93, 0x5f, 0xb7, 0x60, 0x2a, 0x29, 0xa6, 0x5a, 0xdd, 0x4f, 0xa1, 0x91, 0x74, 0xc8, 0x40, - 0xb2, 0x3c, 0xc4, 0xb4, 0x08, 0xf6, 0xf7, 0x46, 0x64, 0x97, 0x9e, 0x46, 0x5c, 0x10, 0xb9, 0x0f, - 0xe5, 0xa8, 0x1d, 0x8a, 0x42, 0xf9, 0xb5, 0x43, 0x1e, 0x5a, 0xd7, 0x57, 0xea, 0xc2, 0xe1, 0x24, - 0xd6, 0x2b, 0x65, 0x09, 0xd3, 0x8f, 0x15, 0x2f, 0xce, 0xb8, 0xd1, 0x95, 0x8c, 0x73, 0x39, 0x2d, - 0xaf, 0x2f, 0xae, 0xa5, 0x19, 0xcb, 0x12, 0xc6, 0x58, 0xf1, 0xb2, 0x7f, 0xdb, 0x82, 0xf2, 0x4d, - 0x5f, 0xad, 0x23, 0x3f, 0x97, 0x83, 0x2d, 0x4a, 0xab, 0xac, 0x5a, 0x69, 0x89, 0x4f, 0x41, 0x2f, - 0x27, 0x2c, 0x51, 0x4f, 0x1a, 0xb4, 0xe7, 0x79, 0xce, 0x43, 0x46, 0xea, 0xa6, 0xbf, 0x31, 0xd0, - 0x7c, 0xfc, 0x1b, 0x45, 0x38, 0xf3, 0xaa, 0xb3, 0x4b, 0xbd, 0xc8, 0x39, 0xfe, 0x26, 0xf1, 0x02, - 0x54, 0x9c, 0x2e, 0xbf, 0xcb, 0x34, 0x8e, 0x21, 0xb1, 0x71, 0x27, 0x06, 0xa1, 0x89, 0x17, 0x2f, - 0x68, 0x22, 0x48, 0x27, 0x6b, 0x29, 0x5a, 0x4c, 0xc1, 0xb1, 0xaf, 0x06, 0xb9, 0x09, 0x44, 0x06, - 0xb6, 0x57, 0x1b, 0x0d, 0xbf, 0xe7, 0x89, 0x25, 0x4d, 0xd8, 0x7d, 0xf4, 0x79, 0x78, 0xb5, 0x0f, - 0x03, 0x33, 0x6a, 0x91, 0x4f, 0xc3, 0x4c, 0x83, 0x53, 0x96, 0xa7, 0x23, 0x93, 0xa2, 0x38, 0x21, - 0xeb, 0xb0, 0x97, 0xc5, 0x01, 0x78, 0x38, 0x90, 0x02, 0x93, 0x34, 0x8c, 0xfc, 0xc0, 0x69, 0x51, - 0x93, 0xee, 0x58, 0x52, 0xd2, 0x7a, 0x1f, 0x06, 0x66, 0xd4, 0x22, 0x9f, 0x87, 0x72, 0xb4, 0x15, - 0xd0, 0x70, 0xcb, 0x6f, 0x37, 0xa5, 0xef, 0xc9, 0x90, 0xc6, 0x40, 0xd9, 0xfb, 0xeb, 0x8a, 0xaa, - 0x31, 0xbc, 0x55, 0x11, 0xc6, 0x3c, 0x49, 0x00, 0x63, 0x61, 0xc3, 0xef, 0xd2, 0x50, 0x9e, 0x2a, - 0x6e, 0xe6, 0xc2, 0x9d, 0x1b, 0xb7, 0x0c, 0x33, 0x24, 0xe7, 0x80, 0x92, 0x93, 0xfd, 0x7b, 0x23, - 0x30, 0x61, 0x22, 0x1e, 0x61, 0x6d, 0xfa, 0x92, 0x05, 0x13, 0x0d, 0xdf, 0x8b, 0x02, 0xbf, 0x1d, - 0x27, 0x6c, 0x18, 0x5e, 0xa3, 0x60, 0xa4, 0x96, 0x68, 0xe4, 0xb8, 0x6d, 0xc3, 0x5a, 0x67, 0xb0, - 0xc1, 0x04, 0x53, 0xf2, 0x55, 0x0b, 0xa6, 0x62, 0xc7, 0xc8, 0xd8, 0xd6, 0x97, 0xab, 0x20, 0x7a, - 0xa9, 0xbf, 0x96, 0xe4, 0x84, 0x69, 0xd6, 0xf6, 0x06, 0x4c, 0xa7, 0x7b, 0x9b, 0x35, 0x65, 0xd7, - 0x91, 0x73, 0xbd, 0x10, 0x37, 0xe5, 0x9a, 0x13, 0x86, 0xc8, 0x21, 0xe4, 0x59, 0x28, 0x75, 0x9c, - 0xa0, 0xe5, 0x7a, 0x4e, 0x9b, 0xb7, 0x62, 0xc1, 0x58, 0x90, 0x64, 0x39, 0x6a, 0x0c, 0xfb, 0xc3, - 0x30, 0xb1, 0xea, 0x78, 0x2d, 0xda, 0x94, 0xeb, 0xf0, 0xe1, 0x91, 0xa9, 0x7f, 0x3c, 0x0a, 0x15, - 0xe3, 0xf8, 0x78, 0xfa, 0xe7, 0xac, 0x44, 0x22, 0xa2, 0x42, 0x8e, 0x89, 0x88, 0x3e, 0x09, 0xb0, - 0xe9, 0x7a, 0x6e, 0xb8, 0x75, 0xc2, 0x14, 0x47, 0xfc, 0x6e, 0xfe, 0xba, 0xa6, 0x80, 0x06, 0xb5, - 0xf8, 0x02, 0xb4, 0x78, 0x40, 0xb6, 0xc0, 0x77, 0x2c, 0x63, 0xbb, 0x19, 0xcb, 0xc3, 0xe1, 0xc3, - 0xe8, 0x98, 0x79, 0xb5, 0xfd, 0x88, 0xbb, 0xa9, 0x83, 0x76, 0xa5, 0x75, 0x28, 0x05, 0x34, 0xec, - 0x75, 0xe8, 0x89, 0x92, 0x11, 0x71, 0xd7, 0x1b, 0x94, 0xf5, 0x51, 0x53, 0x9a, 0x7d, 0x09, 0xce, - 0x24, 0x44, 0x38, 0xd6, 0x0d, 0x93, 0x0f, 0x99, 0x36, 0x8a, 0x93, 0xdc, 0x37, 0xb1, 0xbe, 0x68, - 0x1b, 0x49, 0x88, 0x74, 0x5f, 0x08, 0x07, 0x2b, 0x01, 0xb3, 0x7f, 0x3c, 0x06, 0xd2, 0x87, 0xe1, - 0x08, 0xcb, 0x95, 0x79, 0x73, 0x39, 0x72, 0x82, 0x9b, 0xcb, 0x9b, 0x30, 0xe1, 0x7a, 0x6e, 0xe4, - 0x3a, 0x6d, 0x6e, 0x7f, 0x92, 0xdb, 0xa9, 0x72, 0xc6, 0x9f, 0x58, 0x36, 0x60, 0x19, 0x74, 0x12, - 0x75, 0xc9, 0x6b, 0x50, 0xe4, 0xfb, 0x8d, 0x1c, 0xc0, 0xc7, 0x77, 0xb4, 0xe0, 0x3e, 0x36, 0x22, - 0x42, 0x4f, 0x50, 0xe2, 0x87, 0x0f, 0x91, 0x85, 0x49, 0x1f, 0xbf, 0xe5, 0x38, 0x8e, 0x0f, 0x1f, - 0x29, 0x38, 0xf6, 0xd5, 0x60, 0x54, 0x36, 0x1d, 0xb7, 0xdd, 0x0b, 0x68, 0x4c, 0x65, 0x2c, 0x49, - 0xe5, 0x7a, 0x0a, 0x8e, 0x7d, 0x35, 0xc8, 0x26, 0x4c, 0xc8, 0x32, 0xe1, 0x36, 0x37, 0x7e, 0xc2, - 0xaf, 0xe4, 0xee, 0x91, 0xd7, 0x0d, 0x4a, 0x98, 0xa0, 0x4b, 0x7a, 0x70, 0xd6, 0xf5, 0x1a, 0xbe, - 0xd7, 0x68, 0xf7, 0x42, 0x77, 0x87, 0xc6, 0xe1, 0x71, 0x27, 0x61, 0x76, 0x61, 0x7f, 0x6f, 0xee, - 0xec, 0x72, 0x9a, 0x1c, 0xf6, 0x73, 0x20, 0x5f, 0xb0, 0xe0, 0x42, 0xc3, 0xf7, 0x42, 0x9e, 0xc5, - 0x63, 0x87, 0x5e, 0x0b, 0x02, 0x3f, 0x10, 0xbc, 0xcb, 0x27, 0xe4, 0xcd, 0xcd, 0x9e, 0x8b, 0x59, - 0x24, 0x31, 0x9b, 0x13, 0x79, 0x13, 0x4a, 0xdd, 0xc0, 0xdf, 0x71, 0x9b, 0x34, 0x90, 0x2e, 0x98, - 0x2b, 0x79, 0xa4, 0x36, 0x5a, 0x93, 0x34, 0xe3, 0xa5, 0x47, 0x95, 0xa0, 0xe6, 0x67, 0xff, 0xdf, - 0x0a, 0x4c, 0x26, 0xd1, 0xc9, 0x2f, 0x00, 0x74, 0x03, 0xbf, 0x43, 0xa3, 0x2d, 0xaa, 0xc3, 0x9c, - 0x6e, 0x0d, 0x9b, 0xbc, 0x46, 0xd1, 0x53, 0x6e, 0x4b, 0x6c, 0xb9, 0x88, 0x4b, 0xd1, 0xe0, 0x48, - 0x02, 0x18, 0xdf, 0x16, 0xdb, 0xae, 0xd4, 0x42, 0x5e, 0xcd, 0x45, 0x67, 0x92, 0x9c, 0x79, 0x7c, - 0x8e, 0x2c, 0x42, 0xc5, 0x88, 0x6c, 0x40, 0xe1, 0x3e, 0xdd, 0xc8, 0x27, 0x73, 0xc2, 0x5d, 0x2a, - 0x4f, 0x33, 0xb5, 0xf1, 0xfd, 0xbd, 0xb9, 0xc2, 0x5d, 0xba, 0x81, 0x8c, 0x38, 0xfb, 0xae, 0xa6, - 0xf0, 0x5d, 0x90, 0x4b, 0xc5, 0xab, 0x39, 0x3a, 0x42, 0x88, 0xef, 0x92, 0x45, 0xa8, 0x18, 0x91, - 0x37, 0xa1, 0x7c, 0xdf, 0xd9, 0xa1, 0x9b, 0x81, 0xef, 0x45, 0xd2, 0x57, 0x6e, 0xc8, 0xe0, 0x92, - 0xbb, 0x8a, 0x9c, 0xe4, 0xcb, 0xb7, 0x77, 0x5d, 0x88, 0x31, 0x3b, 0xb2, 0x03, 0x25, 0x8f, 0xde, - 0x47, 0xda, 0x76, 0x1b, 0xf9, 0x04, 0x73, 0xdc, 0x92, 0xd4, 0x24, 0x67, 0xbe, 0xef, 0xa9, 0x32, - 0xd4, 0xbc, 0x58, 0x5f, 0xde, 0xf3, 0x37, 0xe4, 0x42, 0x35, 0x64, 0x5f, 0xea, 0x93, 0xa9, 0xe8, - 0xcb, 0x9b, 0xfe, 0x06, 0x32, 0xe2, 0x6c, 0x8e, 0x34, 0xb4, 0xa3, 0x96, 0x5c, 0xa6, 0x6e, 0xe5, - 0xeb, 0xa0, 0x26, 0xe6, 0x48, 0x5c, 0x8a, 0x06, 0x47, 0xd6, 0xb6, 0x2d, 0x69, 0xac, 0x94, 0x0b, - 0xd5, 0x90, 0x6d, 0x9b, 0x34, 0x7d, 0x8a, 0xb6, 0x55, 0x65, 0xa8, 0x79, 0x31, 0xbe, 0xae, 0xb4, - 0xfc, 0xe5, 0xb3, 0x54, 0x25, 0xed, 0x88, 0x82, 0xaf, 0x2a, 0x43, 0xcd, 0x8b, 0xb5, 0x77, 0xb8, - 0xbd, 0x7b, 0xdf, 0x69, 0x6f, 0xbb, 0x5e, 0x4b, 0x86, 0xed, 0x0e, 0x1b, 0xe6, 0xb6, 0xbd, 0x7b, - 0x57, 0xd0, 0x33, 0xdb, 0x3b, 0x2e, 0x45, 0x83, 0x23, 0xf9, 0x7b, 0x96, 0x0e, 0xc5, 0x99, 0xc8, - 0xc3, 0x89, 0x29, 0xb9, 0xe4, 0xca, 0xc8, 0x1c, 0xa1, 0x28, 0xfe, 0xb4, 0xf6, 0xbb, 0xe4, 0x85, - 0x5f, 0xf9, 0xa3, 0xb9, 0x19, 0xea, 0x35, 0xfc, 0xa6, 0xeb, 0xb5, 0x16, 0xee, 0x85, 0xbe, 0x37, - 0x8f, 0xce, 0x7d, 0xa5, 0xa3, 0x4b, 0x99, 0x66, 0x3f, 0x0a, 0x15, 0x83, 0xc4, 0x61, 0x8a, 0xde, - 0x84, 0xa9, 0xe8, 0xfd, 0xf6, 0x18, 0x4c, 0x98, 0x79, 0x48, 0x8f, 0xa0, 0x7d, 0xe9, 0x13, 0xc7, - 0xc8, 0x71, 0x4e, 0x1c, 0xec, 0x88, 0x69, 0x5c, 0x70, 0x29, 0xf3, 0xd6, 0x72, 0x6e, 0x0a, 0x77, - 0x7c, 0xc4, 0x34, 0x0a, 0x43, 0x4c, 0x30, 0x3d, 0x86, 0xcf, 0x0b, 0x53, 0x5b, 0x85, 0x62, 0x57, - 0x4c, 0xaa, 0xad, 0x09, 0x55, 0xed, 0x2a, 0x40, 0x9c, 0x30, 0x53, 0x5e, 0x7c, 0x6a, 0x7d, 0xd8, - 0x48, 0xe4, 0x69, 0x60, 0x91, 0xa7, 0x61, 0x8c, 0xa9, 0x3e, 0xb4, 0x29, 0xb3, 0x0a, 0xe8, 0x73, - 0xfc, 0x75, 0x5e, 0x8a, 0x12, 0x4a, 0x5e, 0x64, 0x5a, 0x6a, 0xac, 0xb0, 0xc8, 0x64, 0x01, 0xe7, - 0x63, 0x2d, 0x35, 0x86, 0x61, 0x02, 0x93, 0x89, 0x4e, 0x99, 0x7e, 0xc1, 0xd7, 0x06, 0x43, 0x74, - 0xae, 0x74, 0xa0, 0x80, 0x71, 0xbb, 0x52, 0x4a, 0x1f, 0xe1, 0x73, 0xba, 0x68, 0xd8, 0x95, 0x52, - 0x70, 0xec, 0xab, 0xc1, 0x3e, 0x46, 0xde, 0xd9, 0x56, 0x84, 0xc3, 0xf4, 0x80, 0xdb, 0xd6, 0x5f, - 0x34, 0xcf, 0x5a, 0x39, 0xce, 0x21, 0x31, 0x6a, 0x8f, 0x7e, 0xd8, 0x1a, 0xee, 0x58, 0xf4, 0x19, - 0x98, 0x4c, 0xee, 0x42, 0xb9, 0xdf, 0x7c, 0xfc, 0xc3, 0x31, 0x38, 0x77, 0xab, 0xe5, 0x7a, 0xe9, - 0x9c, 0x6f, 0x59, 0x0f, 0x3c, 0x58, 0xc7, 0x7e, 0xe0, 0x41, 0xc7, 0xe4, 0xc9, 0xe7, 0x13, 0xb2, - 0x63, 0xf2, 0xd4, 0x5b, 0x16, 0x49, 0x5c, 0xf2, 0x87, 0x16, 0x3c, 0xe9, 0x34, 0xc5, 0xb9, 0xc0, - 0x69, 0xcb, 0x52, 0x23, 0x2f, 0xb9, 0x9c, 0xd1, 0xe1, 0x90, 0xbb, 0x7c, 0xff, 0xc7, 0xcf, 0x57, - 0x0f, 0xe0, 0x2a, 0x7a, 0xfc, 0xa7, 0xe4, 0x17, 0x3c, 0x79, 0x10, 0x2a, 0x1e, 0x28, 0x3e, 0xf9, - 0xab, 0x30, 0x95, 0xf8, 0x60, 0x69, 0x09, 0x2f, 0x8b, 0x0b, 0x8b, 0x7a, 0x12, 0x84, 0x69, 0x5c, - 0xf2, 0x3d, 0x0b, 0x66, 0x84, 0xd9, 0x35, 0xa3, 0x69, 0xc4, 0x4d, 0xad, 0x9f, 0x7f, 0xd3, 0x2c, - 0x0e, 0xe0, 0x28, 0x9a, 0x25, 0xb6, 0xc3, 0x0e, 0x40, 0xc3, 0x81, 0x22, 0xcf, 0xde, 0x86, 0x0f, - 0x1c, 0xda, 0xee, 0xc7, 0xca, 0x62, 0xff, 0x2a, 0x5c, 0x3c, 0x50, 0xda, 0x63, 0xcd, 0xc4, 0xef, - 0x58, 0x30, 0x61, 0xe6, 0xae, 0x22, 0xcf, 0x42, 0x29, 0xf2, 0xb7, 0xa9, 0x77, 0x27, 0x50, 0xde, - 0xcc, 0x7a, 0x15, 0x58, 0xe7, 0xe5, 0xb8, 0x82, 0x1a, 0x83, 0x61, 0x37, 0xda, 0x2e, 0xf5, 0xa2, - 0xe5, 0xa6, 0x9c, 0x03, 0x1a, 0x7b, 0x51, 0x94, 0x2f, 0xa1, 0xc6, 0x10, 0x0e, 0x88, 0xec, 0x77, - 0x9d, 0x36, 0x02, 0xaa, 0x62, 0x1f, 0x0c, 0x07, 0xc4, 0x18, 0x86, 0x09, 0x4c, 0x62, 0x6b, 0xfb, - 0xef, 0x68, 0x7c, 0xe9, 0x93, 0xb2, 0xd7, 0x7e, 0xcb, 0x82, 0xb2, 0xb8, 0xbf, 0x40, 0xba, 0x99, - 0xf2, 0x3f, 0x4e, 0x59, 0x58, 0xaa, 0x6b, 0xcb, 0x59, 0xfe, 0xc7, 0x97, 0x61, 0x74, 0xdb, 0xf5, - 0xd4, 0x97, 0xe8, 0x3d, 0xfb, 0x55, 0xd7, 0x6b, 0x22, 0x87, 0xe8, 0x5d, 0xbd, 0x30, 0x70, 0x57, - 0x5f, 0x80, 0xb2, 0xf6, 0xca, 0x91, 0x7b, 0xa3, 0x36, 0x6d, 0x6b, 0x2f, 0x1e, 0x8c, 0x71, 0xec, - 0xdf, 0xb4, 0x60, 0x92, 0x87, 0xd3, 0xc7, 0xc6, 0x82, 0x17, 0xb4, 0xa3, 0x9c, 0x90, 0xfb, 0x62, - 0xd2, 0x51, 0xee, 0xdd, 0xbd, 0xb9, 0x8a, 0x08, 0xc0, 0x4f, 0xfa, 0xcd, 0x7d, 0x4a, 0x5a, 0x18, - 0xb9, 0x3b, 0xdf, 0xc8, 0xb1, 0x0d, 0x60, 0xb1, 0x98, 0x8a, 0x08, 0xc6, 0xf4, 0xec, 0xb7, 0x60, - 0xc2, 0x8c, 0x54, 0x23, 0x2f, 0x40, 0xa5, 0xeb, 0x7a, 0xad, 0x64, 0x44, 0xb3, 0xbe, 0x85, 0x59, - 0x8b, 0x41, 0x68, 0xe2, 0xf1, 0x6a, 0x7e, 0x5c, 0x2d, 0x75, 0x79, 0xb3, 0xe6, 0x9b, 0xd5, 0xe2, - 0x3f, 0xb6, 0x07, 0x10, 0x87, 0x5d, 0x1f, 0xc9, 0xb2, 0x35, 0x26, 0x2e, 0x46, 0x84, 0xa6, 0xc6, - 0x53, 0x68, 0x8c, 0x89, 0x11, 0xfe, 0xee, 0xde, 0x41, 0x9a, 0xa0, 0xa8, 0xc5, 0x1f, 0xe8, 0xc8, - 0x88, 0xc0, 0xcc, 0xfd, 0x81, 0x8e, 0x0c, 0x1e, 0xef, 0xdd, 0x03, 0x1d, 0x59, 0xc2, 0xfc, 0xf9, - 0x7a, 0xa0, 0xe3, 0x13, 0x70, 0xdc, 0x5c, 0xbd, 0x4c, 0xf1, 0xba, 0x6f, 0xe6, 0xd4, 0xd0, 0x2d, - 0x2e, 0x93, 0x6a, 0x48, 0xa8, 0xfd, 0xdd, 0x51, 0x98, 0x4e, 0xdb, 0x5f, 0xf2, 0x76, 0x6d, 0x21, - 0x5f, 0xb5, 0x60, 0xd2, 0x49, 0xe4, 0x45, 0xcc, 0xe9, 0xb5, 0xaf, 0x04, 0x4d, 0x23, 0x2f, 0x5f, - 0xa2, 0x1c, 0x53, 0xbc, 0xc9, 0x5f, 0x82, 0xf1, 0xc8, 0xed, 0x50, 0xbf, 0x27, 0xac, 0xb2, 0x05, - 0x61, 0x1d, 0x59, 0x17, 0x45, 0xa8, 0x60, 0x6c, 0x13, 0x70, 0xb9, 0x3a, 0x1b, 0x50, 0xe9, 0xa6, - 0x3d, 0x1d, 0x9b, 0x91, 0x45, 0x39, 0x6a, 0x0c, 0xf2, 0x00, 0xc6, 0x85, 0x13, 0x8c, 0xf2, 0x76, - 0x5a, 0xcd, 0xc9, 0x4e, 0x24, 0xfc, 0x6c, 0xe2, 0x2e, 0x10, 0xff, 0x43, 0x54, 0xec, 0x98, 0xee, - 0x0c, 0x81, 0xe3, 0xb5, 0x28, 0x6f, 0x73, 0x69, 0xd9, 0x78, 0x3d, 0x2f, 0x93, 0x1c, 0x6a, 0xca, - 0xd5, 0xa0, 0x15, 0xca, 0x88, 0x47, 0x5d, 0x86, 0x06, 0x67, 0xfb, 0x57, 0x2d, 0x98, 0x19, 0x54, - 0x91, 0x0d, 0x14, 0xbe, 0xea, 0xca, 0x11, 0x65, 0x24, 0x5a, 0x70, 0x82, 0x08, 0x05, 0x8c, 0x5c, - 0x84, 0x02, 0xd5, 0x1b, 0x95, 0xce, 0x0a, 0x79, 0xcd, 0x6b, 0x22, 0x2b, 0x27, 0x57, 0x61, 0x34, - 0x8c, 0x68, 0x37, 0x15, 0xc7, 0x30, 0xca, 0x16, 0xcf, 0x0c, 0x43, 0x3c, 0xc7, 0xb5, 0x3f, 0x0c, - 0xc7, 0x4c, 0xed, 0x6c, 0x5f, 0x03, 0x82, 0x7e, 0xbb, 0xbd, 0xe1, 0x34, 0xb6, 0xef, 0xba, 0x5e, - 0xd3, 0xbf, 0xcf, 0x37, 0x86, 0x05, 0x28, 0x07, 0x32, 0xba, 0x3b, 0x94, 0x73, 0x4a, 0xef, 0x2c, - 0x2a, 0xec, 0x3b, 0xc4, 0x18, 0xc7, 0xfe, 0xde, 0x08, 0x8c, 0xcb, 0x54, 0x04, 0x0f, 0x21, 0x88, - 0x66, 0x3b, 0xe1, 0xba, 0xb0, 0x9c, 0x4b, 0x06, 0x85, 0x81, 0x11, 0x34, 0x61, 0x2a, 0x82, 0xe6, - 0xd5, 0x7c, 0xd8, 0x1d, 0x1c, 0x3e, 0xf3, 0xed, 0x22, 0x4c, 0xa5, 0x52, 0x3b, 0xa4, 0xb2, 0xc0, - 0x5b, 0xef, 0x49, 0x16, 0x78, 0x12, 0x26, 0x5e, 0x02, 0xc8, 0xcf, 0xe5, 0xf6, 0x27, 0x8f, 0x02, - 0xe4, 0xe5, 0x0c, 0x5d, 0x7c, 0xff, 0x38, 0x43, 0xff, 0x37, 0x0b, 0x1e, 0x1f, 0x98, 0xa0, 0x84, - 0xa7, 0xfa, 0x0b, 0x92, 0x50, 0xb9, 0x5e, 0xe4, 0x9c, 0xf4, 0x49, 0xbb, 0x39, 0xa4, 0xb3, 0xb3, - 0xa5, 0xd9, 0x93, 0xe7, 0x61, 0x82, 0xaf, 0xcd, 0x6c, 0xe5, 0x64, 0x6b, 0xaf, 0xb8, 0xa5, 0xe5, - 0xf7, 0x75, 0x75, 0xa3, 0x1c, 0x13, 0x58, 0xf6, 0x37, 0x2d, 0x98, 0x19, 0x94, 0xf8, 0xed, 0x08, - 0x7a, 0xee, 0x5f, 0x49, 0x05, 0x21, 0xcd, 0xf5, 0x05, 0x21, 0xa5, 0xac, 0x88, 0x2a, 0xde, 0xc8, - 0x30, 0xe0, 0x15, 0x0e, 0x89, 0xb1, 0xf9, 0xfd, 0x02, 0x4c, 0x4b, 0x11, 0xe3, 0x23, 0xca, 0x8b, - 0x89, 0xd0, 0xa9, 0x9f, 0x4a, 0x85, 0x4e, 0x9d, 0x4f, 0xe3, 0xff, 0x24, 0x6e, 0xea, 0xfd, 0x15, - 0x37, 0xf5, 0x95, 0x22, 0x5c, 0xc8, 0x4c, 0xb1, 0x46, 0xbe, 0x9c, 0xb1, 0x53, 0xdc, 0xcd, 0x39, - 0x97, 0x9b, 0x0e, 0xb1, 0x3e, 0xdd, 0x60, 0xa3, 0x5f, 0x37, 0x83, 0x7c, 0xc4, 0xea, 0xbf, 0x79, - 0x0a, 0x59, 0xe9, 0x8e, 0x1b, 0xef, 0xf3, 0x70, 0x5f, 0xc9, 0xfb, 0x73, 0xb0, 0xd4, 0x7f, 0xa5, - 0x00, 0x57, 0x8e, 0xda, 0xb2, 0xef, 0xd3, 0x00, 0xd9, 0x30, 0x11, 0x20, 0xfb, 0x90, 0x54, 0x9b, - 0x53, 0x89, 0x95, 0xfd, 0x07, 0xa3, 0x7a, 0xdf, 0xed, 0x9f, 0xb0, 0x47, 0xb2, 0xbc, 0x8c, 0x33, - 0xd5, 0x57, 0xbd, 0x25, 0x10, 0xef, 0x0d, 0xe3, 0x75, 0x51, 0xfc, 0xee, 0xde, 0xdc, 0xd9, 0x38, - 0x17, 0x91, 0x2c, 0x44, 0x55, 0x89, 0x5c, 0x81, 0x52, 0x20, 0xa0, 0x2a, 0x24, 0x50, 0x3a, 0x66, - 0x89, 0x32, 0xd4, 0x50, 0xf2, 0x79, 0xe3, 0xac, 0x30, 0x7a, 0x5a, 0x29, 0xb7, 0x0e, 0xf2, 0x37, - 0x7b, 0x03, 0x4a, 0xa1, 0x4a, 0x78, 0x2f, 0xa6, 0xd3, 0x73, 0x47, 0x8c, 0x34, 0x75, 0x36, 0x68, - 0x5b, 0x65, 0xbf, 0x17, 0xdf, 0xa7, 0x73, 0xe3, 0x6b, 0x92, 0xc4, 0xd6, 0x96, 0x09, 0x71, 0x1f, - 0x06, 0xfd, 0x56, 0x09, 0x12, 0xc1, 0xb8, 0x7c, 0xf5, 0x5a, 0x1e, 0x67, 0x57, 0x73, 0x0a, 0xd9, - 0x92, 0x0e, 0xfd, 0xfc, 0xc0, 0xaf, 0x2c, 0x72, 0x8a, 0x95, 0xfd, 0x03, 0x0b, 0x2a, 0x72, 0x8c, - 0x3c, 0x84, 0x90, 0xdb, 0x7b, 0xc9, 0x90, 0xdb, 0x6b, 0xb9, 0x2c, 0xe1, 0x03, 0xe2, 0x6d, 0xef, - 0xc1, 0x84, 0x99, 0xec, 0x94, 0x7c, 0xd2, 0xd8, 0x82, 0xac, 0x61, 0x12, 0xfa, 0xa9, 0x4d, 0x2a, - 0xde, 0x9e, 0xec, 0x7f, 0x5a, 0xd6, 0xad, 0xc8, 0x0f, 0xce, 0xe6, 0xc8, 0xb7, 0x0e, 0x1c, 0xf9, - 0xe6, 0xc0, 0x1b, 0xc9, 0x7f, 0xe0, 0xbd, 0x06, 0x25, 0xb5, 0x2c, 0x4a, 0x6d, 0xea, 0x29, 0xd3, - 0xc3, 0x9f, 0xa9, 0x64, 0x8c, 0x98, 0x31, 0x5d, 0xf8, 0x01, 0x38, 0xbe, 0x27, 0x50, 0xcb, 0xb5, - 0x26, 0x43, 0xde, 0x84, 0xca, 0x7d, 0x3f, 0xd8, 0x6e, 0xfb, 0x0e, 0x7f, 0x65, 0x04, 0xf2, 0x70, - 0x2a, 0xd1, 0xb6, 0x7e, 0x11, 0x66, 0x75, 0x37, 0xa6, 0x8f, 0x26, 0x33, 0x52, 0x85, 0xa9, 0x8e, - 0xeb, 0x21, 0x75, 0x9a, 0x3a, 0xb2, 0x76, 0x54, 0x64, 0xf8, 0x57, 0xba, 0xfd, 0x6a, 0x12, 0x8c, - 0x69, 0x7c, 0x6e, 0x97, 0x0b, 0x12, 0xa6, 0x0e, 0x99, 0xc6, 0x7b, 0x6d, 0xf8, 0xc1, 0x98, 0x34, - 0x9f, 0x88, 0x38, 0xa3, 0x64, 0x39, 0xa6, 0x78, 0x93, 0xcf, 0x41, 0x29, 0x54, 0xef, 0xc9, 0x16, - 0x73, 0x3c, 0xf5, 0xe8, 0x37, 0x65, 0x75, 0x57, 0xea, 0x47, 0x65, 0x35, 0x43, 0xb2, 0x02, 0xe7, - 0x95, 0xed, 0x26, 0xf1, 0x34, 0xe6, 0x58, 0x9c, 0x8a, 0x0e, 0x33, 0xe0, 0x98, 0x59, 0x8b, 0xe9, - 0xb6, 0x3c, 0x89, 0xb0, 0xb8, 0xc4, 0x37, 0xee, 0xbd, 0xf9, 0xfc, 0x6b, 0xa2, 0x84, 0x1e, 0x14, - 0x38, 0x5e, 0x1a, 0x22, 0x70, 0xbc, 0x0e, 0x17, 0xd2, 0x20, 0x9e, 0x63, 0x90, 0xa7, 0x35, 0x34, - 0xb6, 0xd0, 0xb5, 0x2c, 0x24, 0xcc, 0xae, 0x4b, 0xee, 0x42, 0x39, 0xa0, 0xfc, 0x94, 0x57, 0x55, - 0xfe, 0x8f, 0xc7, 0xf6, 0xf4, 0x46, 0x45, 0x00, 0x63, 0x5a, 0xac, 0xdf, 0x9d, 0x64, 0xce, 0xfd, - 0xd7, 0x72, 0x7c, 0x70, 0x5e, 0xf6, 0xfd, 0x80, 0xdc, 0x9f, 0xf6, 0xbf, 0x9f, 0x82, 0x33, 0x09, - 0x03, 0x14, 0x79, 0x0a, 0x8a, 0x3c, 0xe9, 0x22, 0x5f, 0xad, 0x4a, 0xf1, 0x8a, 0x2a, 0x1a, 0x47, - 0xc0, 0xc8, 0xaf, 0x58, 0x30, 0xd5, 0x4d, 0x5c, 0x6f, 0xa9, 0x85, 0x7c, 0x48, 0x9b, 0x76, 0xf2, - 0xce, 0xcc, 0x78, 0xad, 0x26, 0xc9, 0x0c, 0xd3, 0xdc, 0xd9, 0x7a, 0x20, 0xc3, 0x25, 0xda, 0x34, - 0xe0, 0xd8, 0x52, 0xd1, 0xd3, 0x24, 0x16, 0x93, 0x60, 0x4c, 0xe3, 0xb3, 0x1e, 0xe6, 0x5f, 0x37, - 0xcc, 0xa3, 0xc2, 0x55, 0x45, 0x00, 0x63, 0x5a, 0xe4, 0x65, 0x98, 0x94, 0xa9, 0xd6, 0xd7, 0xfc, - 0xe6, 0x0d, 0x27, 0xdc, 0x92, 0x47, 0x3e, 0x7d, 0x44, 0x5d, 0x4c, 0x40, 0x31, 0x85, 0xcd, 0xbf, - 0x2d, 0xce, 0x67, 0xcf, 0x09, 0x8c, 0x25, 0x1f, 0xf3, 0x59, 0x4c, 0x82, 0x31, 0x8d, 0x4f, 0x9e, - 0x35, 0xb6, 0x21, 0xe1, 0x58, 0xa3, 0x57, 0x83, 0x8c, 0xad, 0xa8, 0x0a, 0x53, 0x3d, 0x7e, 0x42, - 0x6e, 0x2a, 0xa0, 0x9c, 0x8f, 0x9a, 0xe1, 0x9d, 0x24, 0x18, 0xd3, 0xf8, 0xe4, 0x25, 0x38, 0x13, - 0xb0, 0xc5, 0x56, 0x13, 0x10, 0xde, 0x36, 0xda, 0x99, 0x02, 0x4d, 0x20, 0x26, 0x71, 0xc9, 0x2b, - 0x70, 0x36, 0x4e, 0xc7, 0xab, 0x08, 0x08, 0xf7, 0x1b, 0x9d, 0x1b, 0xb2, 0x9a, 0x46, 0xc0, 0xfe, - 0x3a, 0xe4, 0xaf, 0xc3, 0xb4, 0xd1, 0x12, 0xcb, 0x5e, 0x93, 0x3e, 0x90, 0x29, 0x53, 0xf9, 0xe3, - 0x74, 0x8b, 0x29, 0x18, 0xf6, 0x61, 0x93, 0x8f, 0xc1, 0x64, 0xc3, 0x6f, 0xb7, 0xf9, 0x1a, 0x27, - 0x1e, 0x92, 0x11, 0xb9, 0x51, 0x45, 0x16, 0xd9, 0x04, 0x04, 0x53, 0x98, 0xe4, 0x26, 0x10, 0x7f, - 0x83, 0xa9, 0x57, 0xb4, 0xf9, 0x0a, 0xf5, 0xa8, 0xd4, 0x38, 0xce, 0x24, 0x83, 0xb5, 0x6e, 0xf7, - 0x61, 0x60, 0x46, 0x2d, 0x9e, 0x5a, 0xd2, 0x08, 0x6e, 0x9f, 0xcc, 0x23, 0x99, 0x7d, 0xda, 0x9e, - 0x73, 0x68, 0x64, 0x7b, 0x00, 0x63, 0xc2, 0x23, 0x22, 0x9f, 0x24, 0xa9, 0xe6, 0x9b, 0x12, 0xf1, - 0x1e, 0x21, 0x4a, 0x51, 0x72, 0x22, 0xbf, 0x00, 0xe5, 0x0d, 0xf5, 0xc0, 0x10, 0xcf, 0x8c, 0x3a, - 0xf4, 0xbe, 0x98, 0x7a, 0x2b, 0x2b, 0xb6, 0x57, 0x68, 0x00, 0xc6, 0x2c, 0xc9, 0xd3, 0x50, 0xb9, - 0xb1, 0x56, 0xd5, 0xa3, 0xf0, 0x2c, 0xef, 0xfd, 0x51, 0x56, 0x05, 0x4d, 0x00, 0x9b, 0x61, 0x5a, - 0x7d, 0x23, 0x49, 0xa7, 0x89, 0x0c, 0x6d, 0x8c, 0x61, 0x73, 0x17, 0x19, 0xac, 0xcf, 0x9c, 0x4b, - 0x61, 0xcb, 0x72, 0xd4, 0x18, 0xe4, 0x0d, 0xa8, 0xc8, 0xfd, 0x82, 0xaf, 0x4d, 0xe7, 0x4f, 0x96, - 0x38, 0x01, 0x63, 0x12, 0x68, 0xd2, 0xe3, 0xd7, 0xf7, 0xfc, 0xdd, 0x15, 0x7a, 0xbd, 0xd7, 0x6e, - 0xcf, 0x5c, 0xe0, 0xeb, 0x66, 0x7c, 0x7d, 0x1f, 0x83, 0xd0, 0xc4, 0x23, 0xcf, 0x29, 0x57, 0xc7, - 0x47, 0x13, 0xfe, 0x0c, 0xda, 0xd5, 0x51, 0x2b, 0xdd, 0x03, 0x62, 0xab, 0x1e, 0x3b, 0xc4, 0xc7, - 0x70, 0x03, 0x66, 0x95, 0xc6, 0xd7, 0x3f, 0x49, 0x66, 0x66, 0x12, 0xb6, 0xa3, 0xd9, 0xbb, 0x03, - 0x31, 0xf1, 0x00, 0x2a, 0x64, 0x03, 0x0a, 0x4e, 0x7b, 0x63, 0xe6, 0xf1, 0x3c, 0x54, 0xd7, 0xea, - 0x4a, 0x4d, 0x8e, 0x28, 0xee, 0x0f, 0x5d, 0x5d, 0xa9, 0x21, 0x23, 0x4e, 0x5c, 0x18, 0x75, 0xda, - 0x1b, 0xe1, 0xcc, 0x2c, 0x9f, 0xb3, 0xb9, 0x31, 0x89, 0x8d, 0x07, 0x2b, 0xb5, 0x10, 0x39, 0x0b, - 0xfb, 0x0b, 0x23, 0xfa, 0x96, 0x48, 0xe7, 0xa9, 0x7f, 0xcb, 0x9c, 0x40, 0xe2, 0xb8, 0x73, 0x3b, - 0xb7, 0x09, 0x24, 0xd5, 0x8b, 0x33, 0x03, 0xa7, 0x4f, 0x57, 0x2f, 0x19, 0xb9, 0x24, 0xb8, 0x4b, - 0xe6, 0xe0, 0x17, 0xa7, 0xe7, 0xe4, 0x82, 0x61, 0x7f, 0xb1, 0xa2, 0xad, 0xa0, 0x29, 0x37, 0xc1, - 0x00, 0x8a, 0x6e, 0x18, 0xb9, 0x7e, 0x8e, 0xf9, 0x04, 0x52, 0xc9, 0xeb, 0x79, 0xb8, 0x12, 0x07, - 0xa0, 0x60, 0xc5, 0x78, 0x7a, 0x2d, 0xd7, 0x7b, 0x20, 0x3f, 0xff, 0xb5, 0xdc, 0x9d, 0xdc, 0x04, - 0x4f, 0x0e, 0x40, 0xc1, 0x8a, 0xdc, 0x13, 0x83, 0xba, 0x90, 0x47, 0x5f, 0x57, 0x57, 0x6a, 0x29, - 0x7e, 0xc9, 0xc1, 0x7d, 0x0f, 0x0a, 0x61, 0xc7, 0x95, 0xea, 0xd2, 0x90, 0xbc, 0xea, 0xab, 0xcb, - 0x59, 0xbc, 0xea, 0xab, 0xcb, 0xc8, 0x98, 0xf0, 0xab, 0x7e, 0xa7, 0xb3, 0xe1, 0x84, 0xa1, 0xd3, - 0xd4, 0xd6, 0x99, 0x21, 0xaf, 0xfa, 0xab, 0x9a, 0x5e, 0x8a, 0x35, 0xbf, 0xea, 0x8f, 0xa1, 0x68, - 0x70, 0x26, 0x6f, 0xc2, 0xb8, 0x23, 0x1e, 0x40, 0x95, 0xc1, 0x1b, 0xf9, 0xbc, 0xea, 0x9b, 0x92, - 0x80, 0x9b, 0x69, 0x24, 0x08, 0x15, 0x43, 0xc6, 0x3b, 0x0a, 0x1c, 0xba, 0xe9, 0x6e, 0x4b, 0xe3, - 0x50, 0x7d, 0xe8, 0x27, 0x7a, 0x18, 0xb1, 0x2c, 0xde, 0x12, 0x84, 0x8a, 0x21, 0xf9, 0x25, 0x0b, - 0xce, 0x74, 0x1c, 0xcf, 0xd1, 0x21, 0xb9, 0xf9, 0x04, 0x6e, 0x9b, 0x41, 0xbe, 0xb1, 0x86, 0xb8, - 0x6a, 0x32, 0xc2, 0x24, 0x5f, 0xb2, 0x03, 0x63, 0x0e, 0x7f, 0x9a, 0x59, 0x1e, 0xc5, 0x30, 0x8f, - 0x67, 0x9e, 0x53, 0x6d, 0xc0, 0x17, 0x17, 0xf9, 0x00, 0xb4, 0xe4, 0x46, 0x7e, 0xcb, 0x82, 0x71, - 0x11, 0x57, 0xc0, 0x14, 0x52, 0xf6, 0xed, 0x9f, 0x39, 0x85, 0x47, 0x30, 0x64, 0xcc, 0x83, 0x74, - 0xce, 0xfa, 0xa0, 0x76, 0x9a, 0x16, 0xa5, 0x07, 0x46, 0x3d, 0x28, 0xe9, 0x98, 0xea, 0xdb, 0x71, - 0x1e, 0x24, 0x1e, 0x60, 0x32, 0x55, 0xdf, 0xd5, 0x14, 0x0c, 0xfb, 0xb0, 0x67, 0x3f, 0x06, 0x13, - 0xa6, 0x1c, 0xc7, 0x8a, 0x9c, 0xf8, 0x51, 0x01, 0x80, 0x77, 0x95, 0x48, 0xe3, 0xd3, 0xe1, 0x39, - 0xbf, 0xb7, 0xfc, 0x66, 0x4e, 0x0f, 0xc1, 0x1a, 0xd9, 0x78, 0x40, 0x26, 0xf8, 0xde, 0xf2, 0x9b, - 0x28, 0x99, 0x90, 0x16, 0x8c, 0x76, 0x9d, 0x68, 0x2b, 0xff, 0xd4, 0x3f, 0x25, 0x11, 0xcf, 0x1e, - 0x6d, 0x21, 0x67, 0x40, 0xde, 0xb6, 0x62, 0xbf, 0xa7, 0x42, 0x1e, 0x69, 0x8b, 0xe3, 0x36, 0x9b, - 0x97, 0x9e, 0x4e, 0xa9, 0xec, 0xbd, 0x69, 0xff, 0xa7, 0xd9, 0x77, 0x2c, 0x98, 0x30, 0x51, 0x33, - 0xba, 0xe9, 0xe7, 0xcd, 0x6e, 0xca, 0xb3, 0x3d, 0xcc, 0x1e, 0xff, 0x1f, 0x16, 0x00, 0xf6, 0xbc, - 0x7a, 0xaf, 0xd3, 0x61, 0x6a, 0xbb, 0x0e, 0x10, 0xb1, 0x8e, 0x1c, 0x20, 0x32, 0x72, 0xcc, 0x00, - 0x91, 0xc2, 0xb1, 0x02, 0x44, 0x46, 0x8f, 0x1f, 0x20, 0x52, 0x1c, 0x1c, 0x20, 0x62, 0x7f, 0xdd, - 0x82, 0xb3, 0x7d, 0xfb, 0x15, 0xd3, 0xa4, 0x03, 0xdf, 0x8f, 0x06, 0xf8, 0xcf, 0x62, 0x0c, 0x42, - 0x13, 0x8f, 0x2c, 0xc1, 0xb4, 0x7c, 0xe1, 0xa6, 0xde, 0x6d, 0xbb, 0x99, 0x69, 0x99, 0xd6, 0x53, - 0x70, 0xec, 0xab, 0x61, 0xff, 0x6b, 0x0b, 0x2a, 0x46, 0x32, 0x07, 0xee, 0x73, 0xc6, 0x6f, 0xbc, - 0xd2, 0x3e, 0x67, 0xfc, 0xaa, 0x4b, 0xc0, 0xc4, 0x35, 0x74, 0xcb, 0x78, 0xff, 0x20, 0xbe, 0x86, - 0x66, 0xa5, 0x28, 0xa1, 0x22, 0xb3, 0xbd, 0x74, 0x3e, 0x2b, 0x98, 0x99, 0xed, 0x69, 0x57, 0xb8, - 0x9a, 0xc5, 0x2e, 0x6e, 0xa3, 0x87, 0xbb, 0xb8, 0x15, 0xb3, 0x5d, 0xdc, 0xec, 0xdb, 0x30, 0x21, - 0x7c, 0xc3, 0x5f, 0xa5, 0xbb, 0x47, 0x7e, 0x49, 0x99, 0x8d, 0xf6, 0x94, 0xcf, 0x1c, 0xab, 0xce, - 0xca, 0xed, 0x7f, 0x62, 0x41, 0xea, 0x79, 0x2d, 0xe3, 0x06, 0xc6, 0x1a, 0x78, 0x03, 0x63, 0x5a, - 0xed, 0x47, 0x0e, 0xb4, 0xda, 0xdf, 0x04, 0xd2, 0x61, 0x53, 0x21, 0xb9, 0xd0, 0x16, 0x92, 0xaf, - 0x90, 0xac, 0xf6, 0x61, 0x60, 0x46, 0x2d, 0xfb, 0x1f, 0x0b, 0x61, 0xcd, 0x07, 0xb7, 0x0e, 0x6f, - 0x80, 0x1e, 0x14, 0x39, 0x29, 0x69, 0x7f, 0x1b, 0xd2, 0x76, 0xdd, 0x9f, 0x82, 0x2d, 0xee, 0x48, - 0x39, 0xe5, 0x39, 0x37, 0xfb, 0xf7, 0x85, 0xac, 0xe6, 0x8b, 0x5c, 0x87, 0xcb, 0xda, 0x49, 0xca, - 0x7a, 0x23, 0xaf, 0xb5, 0x32, 0x5b, 0x46, 0x32, 0x0f, 0xd0, 0xa5, 0x41, 0x83, 0x7a, 0x91, 0x0a, - 0x69, 0x2b, 0xca, 0xe0, 0x6a, 0x5d, 0x8a, 0x06, 0x86, 0xfd, 0x35, 0x36, 0x81, 0xe2, 0x37, 0xc6, - 0xc9, 0x95, 0xb4, 0x23, 0x70, 0x7a, 0x72, 0x68, 0x3f, 0x60, 0x23, 0xd0, 0x69, 0xe4, 0x90, 0x40, - 0xa7, 0x67, 0x60, 0x3c, 0xf0, 0xdb, 0xb4, 0x1a, 0x78, 0x69, 0x1f, 0x1d, 0x64, 0xc5, 0x78, 0x0b, - 0x15, 0xdc, 0xfe, 0x0d, 0x0b, 0xa6, 0xd3, 0x91, 0x98, 0xb9, 0x7b, 0x27, 0x9b, 0xe9, 0x22, 0x0a, - 0xc7, 0x4f, 0x17, 0x61, 0xff, 0x69, 0x11, 0xa6, 0xd3, 0x6f, 0x1f, 0x32, 0xce, 0x2e, 0x37, 0xb6, - 0xa5, 0x56, 0x7f, 0x61, 0x65, 0x13, 0x30, 0x3d, 0x5e, 0x46, 0x06, 0x8e, 0x97, 0xeb, 0x50, 0xf6, - 0xbb, 0xea, 0xc0, 0x2f, 0x84, 0xbb, 0xa2, 0x8c, 0x35, 0xb7, 0x15, 0xe0, 0xdd, 0xbd, 0xb9, 0x73, - 0xb1, 0x00, 0xba, 0x18, 0xe3, 0xaa, 0xe4, 0x67, 0x94, 0xa5, 0x62, 0x34, 0x91, 0x80, 0x49, 0x5b, - 0x2a, 0xa6, 0xe2, 0xfa, 0x83, 0x8c, 0x15, 0xc5, 0xe3, 0x24, 0x82, 0x19, 0xcb, 0x31, 0x11, 0xcc, - 0x5d, 0x28, 0x4b, 0xdb, 0xea, 0x89, 0x12, 0xa0, 0x70, 0xc2, 0x77, 0x14, 0x01, 0x8c, 0x69, 0xa5, - 0x32, 0xcc, 0x94, 0x72, 0xcd, 0x30, 0xf3, 0x12, 0x8c, 0x6f, 0x38, 0x8d, 0x6d, 0x7f, 0x73, 0x93, - 0xeb, 0xe7, 0xe5, 0xda, 0x07, 0x54, 0xc3, 0xd5, 0x44, 0x71, 0xc6, 0x90, 0x52, 0x35, 0x98, 0x56, - 0x40, 0x95, 0x3b, 0xb2, 0x32, 0xfb, 0x6a, 0xad, 0x40, 0x3b, 0x2a, 0x87, 0x68, 0x60, 0x91, 0x67, - 0xa1, 0xd4, 0x74, 0x43, 0xf1, 0x3a, 0x77, 0x25, 0xe9, 0xad, 0xbe, 0x24, 0xcb, 0x51, 0x63, 0x90, - 0x97, 0xb5, 0xb7, 0xda, 0x44, 0x1c, 0x48, 0xa2, 0x3d, 0xd5, 0x0e, 0x08, 0x24, 0x91, 0xce, 0xb8, - 0x6f, 0xb3, 0x89, 0x19, 0xb9, 0x8d, 0x6d, 0xd7, 0x13, 0x59, 0x45, 0xd8, 0x6a, 0xf1, 0x0c, 0x8c, - 0x53, 0xf9, 0x3e, 0xb8, 0xb8, 0x3a, 0xd1, 0x83, 0x45, 0x3d, 0x0b, 0xae, 0xe0, 0xa4, 0x0a, 0x53, - 0xea, 0xc2, 0x58, 0xdd, 0x77, 0x89, 0x6c, 0x48, 0xda, 0xbe, 0xbe, 0x94, 0x04, 0x63, 0x1a, 0xdf, - 0xfe, 0x3c, 0x54, 0x0c, 0x45, 0x8c, 0xeb, 0x2c, 0x0f, 0x9c, 0x46, 0x9f, 0x7f, 0xf9, 0x35, 0x56, - 0x88, 0x02, 0xc6, 0xaf, 0xe5, 0x44, 0x70, 0x64, 0x6a, 0xaf, 0x97, 0x21, 0x91, 0x12, 0xca, 0x88, - 0x05, 0xb4, 0x45, 0x1f, 0xa8, 0x27, 0x59, 0x14, 0x31, 0x64, 0x85, 0x28, 0x60, 0xf6, 0xb3, 0x50, - 0x52, 0x39, 0xeb, 0x78, 0xe2, 0x27, 0x75, 0x65, 0x64, 0x26, 0x7e, 0xf2, 0x83, 0x08, 0x39, 0xc4, - 0x7e, 0x1d, 0x4a, 0x2a, 0xb5, 0xde, 0xe1, 0xd8, 0x6c, 0xfb, 0x0d, 0x3d, 0xf7, 0x86, 0x1f, 0x46, - 0x2a, 0x1f, 0xa0, 0xb8, 0xd5, 0xbe, 0xb5, 0xcc, 0xcb, 0x50, 0x43, 0xed, 0x3f, 0xb3, 0xa0, 0xb2, - 0xbe, 0xbe, 0xa2, 0x8d, 0x5d, 0x08, 0x8f, 0x86, 0xa2, 0x85, 0xaa, 0x9b, 0x11, 0x35, 0xdd, 0x67, - 0xc4, 0x4a, 0x34, 0xbb, 0xbf, 0x37, 0xf7, 0x68, 0x3d, 0x13, 0x03, 0x07, 0xd4, 0x24, 0xcb, 0x70, - 0xce, 0x84, 0xc8, 0x3c, 0x2d, 0x52, 0x2f, 0xe0, 0x0f, 0xca, 0xd7, 0xfb, 0xc1, 0x98, 0x55, 0x27, - 0x4d, 0x4a, 0xaa, 0xb8, 0xe6, 0xdb, 0xf4, 0xf5, 0x7e, 0x30, 0x66, 0xd5, 0xb1, 0x9f, 0x83, 0xa9, - 0x94, 0x5f, 0xc7, 0x11, 0xf2, 0x63, 0xfd, 0x5e, 0x01, 0x26, 0xcc, 0xeb, 0xfd, 0x23, 0xec, 0xd9, - 0x47, 0x57, 0x85, 0x32, 0xae, 0xe4, 0x0b, 0xc7, 0xbc, 0x92, 0x37, 0x7d, 0x20, 0x46, 0x4f, 0xd7, - 0x07, 0xa2, 0x98, 0x8f, 0x0f, 0x84, 0xe1, 0xab, 0x33, 0xf6, 0xf0, 0x7c, 0x75, 0x7e, 0xb7, 0x08, - 0x93, 0xc9, 0x84, 0xcb, 0x47, 0xe8, 0xc9, 0x67, 0xfb, 0x7a, 0xf2, 0x98, 0x77, 0x80, 0x85, 0x61, - 0xef, 0x00, 0x47, 0x87, 0xbd, 0x03, 0x2c, 0x9e, 0xe0, 0x0e, 0xb0, 0xff, 0x06, 0x6f, 0xec, 0xc8, - 0x37, 0x78, 0x1f, 0xd7, 0x1b, 0xc5, 0x78, 0xc2, 0xed, 0x2d, 0xde, 0x2c, 0x48, 0xb2, 0x1b, 0x16, - 0xfd, 0x66, 0xa6, 0x3b, 0x76, 0xe9, 0x10, 0xf5, 0x21, 0xc8, 0xf4, 0x42, 0x3e, 0xbe, 0x9b, 0xc1, - 0xa3, 0xc7, 0xf0, 0x40, 0x7e, 0x01, 0x2a, 0x72, 0x3c, 0xf1, 0x03, 0x27, 0x24, 0x0f, 0xab, 0xf5, - 0x18, 0x84, 0x26, 0x1e, 0x1b, 0x18, 0xdd, 0x78, 0x82, 0xf0, 0xdb, 0xe8, 0x4a, 0xf2, 0x36, 0x7a, - 0x2d, 0x09, 0xc6, 0x34, 0xbe, 0xfd, 0x39, 0xb8, 0x90, 0x69, 0x76, 0xe4, 0x57, 0x3e, 0xfc, 0x2c, - 0x44, 0x9b, 0x12, 0xc1, 0x10, 0x23, 0xf5, 0x0e, 0xd3, 0xec, 0xdd, 0x81, 0x98, 0x78, 0x00, 0x15, - 0xfb, 0x77, 0x0a, 0x30, 0x99, 0x7c, 0x97, 0x9c, 0xdc, 0xd7, 0x97, 0x14, 0xb9, 0xdc, 0x8f, 0x08, - 0xb2, 0x46, 0x12, 0xdf, 0x81, 0x97, 0x9b, 0xf7, 0xf9, 0xf8, 0xda, 0xd0, 0x19, 0x85, 0x4f, 0x8f, - 0xb1, 0xbc, 0x55, 0x94, 0xec, 0xf8, 0xeb, 0xde, 0x71, 0xbc, 0xbf, 0xb4, 0x5d, 0xe5, 0xce, 0x3d, - 0x0e, 0xcd, 0xd6, 0xac, 0xd0, 0x60, 0xcb, 0xf6, 0x96, 0x1d, 0x1a, 0xb8, 0x9b, 0x2e, 0x6d, 0xca, - 0x07, 0x1e, 0xf8, 0xca, 0xfd, 0xba, 0x2c, 0x43, 0x0d, 0xb5, 0xdf, 0x1e, 0x81, 0x32, 0x4f, 0x4f, - 0x78, 0x3d, 0xf0, 0x3b, 0xfc, 0xc5, 0xda, 0xd0, 0xb0, 0x13, 0xc8, 0x6e, 0xbb, 0x39, 0xec, 0x23, - 0xd4, 0x31, 0x45, 0x19, 0xe2, 0x61, 0x94, 0x60, 0x82, 0x23, 0xe9, 0x42, 0x69, 0x53, 0xa6, 0x53, - 0x97, 0x7d, 0x37, 0x64, 0x4a, 0x60, 0x95, 0x9c, 0x5d, 0x34, 0x81, 0xfa, 0x87, 0x9a, 0x8b, 0xed, - 0xc0, 0x54, 0x2a, 0xbf, 0x54, 0xee, 0x49, 0xd8, 0xff, 0xd7, 0x28, 0x94, 0x75, 0xe4, 0x25, 0xf9, - 0x68, 0xc2, 0x68, 0x1b, 0xeb, 0xf0, 0xd2, 0xda, 0xca, 0xce, 0x4d, 0x1a, 0x39, 0x65, 0x80, 0xbd, - 0x08, 0x85, 0x5e, 0xd0, 0x4e, 0x5b, 0x65, 0xee, 0xe0, 0x0a, 0xb2, 0x72, 0x33, 0x5a, 0xb4, 0xf0, - 0x70, 0xa3, 0x45, 0x2f, 0xc3, 0xe8, 0x86, 0xdf, 0xdc, 0x4d, 0x3f, 0xbf, 0x58, 0xf3, 0x9b, 0xbb, - 0xc8, 0x21, 0xe4, 0x65, 0x98, 0x94, 0x21, 0xb0, 0x4a, 0x89, 0x29, 0x72, 0x3d, 0x55, 0x3b, 0xeb, - 0xac, 0x27, 0xa0, 0x98, 0xc2, 0x66, 0xbb, 0x2c, 0x3b, 0x36, 0xf0, 0xd4, 0xfa, 0x63, 0xc9, 0x9b, - 0xfd, 0x9b, 0xf5, 0xdb, 0xb7, 0xb8, 0xf1, 0x58, 0x63, 0x24, 0xa2, 0x6c, 0xc7, 0x0f, 0x8d, 0xb2, - 0x5d, 0x12, 0xb4, 0x99, 0xb4, 0x7c, 0x47, 0x99, 0xa8, 0x5d, 0x51, 0x74, 0x59, 0xd9, 0x81, 0x67, - 0x17, 0x5d, 0x33, 0x2b, 0x1e, 0xb9, 0xfc, 0xde, 0xc5, 0x23, 0xdb, 0x77, 0x60, 0x2a, 0xd5, 0x7f, - 0xca, 0xa8, 0x67, 0x65, 0x1b, 0xf5, 0x8e, 0xf6, 0x80, 0xe3, 0x3f, 0xb7, 0xe0, 0x6c, 0xdf, 0x8a, - 0x74, 0xd4, 0xc0, 0xf0, 0xf4, 0xde, 0x38, 0x72, 0xf2, 0xbd, 0xb1, 0x70, 0xbc, 0xbd, 0xb1, 0xb6, - 0xf1, 0x9d, 0x1f, 0x5e, 0x7a, 0xe4, 0xfb, 0x3f, 0xbc, 0xf4, 0xc8, 0x1f, 0xfc, 0xf0, 0xd2, 0x23, - 0x6f, 0xef, 0x5f, 0xb2, 0xbe, 0xb3, 0x7f, 0xc9, 0xfa, 0xfe, 0xfe, 0x25, 0xeb, 0x0f, 0xf6, 0x2f, - 0x59, 0xff, 0x75, 0xff, 0x92, 0xf5, 0xf5, 0x3f, 0xbe, 0xf4, 0xc8, 0x27, 0x3f, 0x1e, 0xf7, 0xd4, - 0x82, 0xea, 0x29, 0xfe, 0xe3, 0x43, 0xaa, 0x5f, 0x16, 0xba, 0xdb, 0xad, 0x05, 0xd6, 0x53, 0x0b, - 0xba, 0x44, 0xf5, 0xd4, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x69, 0xab, 0x4b, 0x8a, 0xad, - 0x00, 0x00, + 0x0c, 0x9d, 0x96, 0xda, 0x3c, 0x8c, 0x41, 0xca, 0x8b, 0x51, 0xc1, 0xc9, 0x97, 0x2d, 0x38, 0x23, + 0x06, 0x2c, 0xd2, 0xb0, 0xd7, 0x8e, 0xd8, 0x06, 0xc9, 0x3a, 0xe5, 0x66, 0x1e, 0x93, 0x43, 0x90, + 0xac, 0x5d, 0x90, 0xdc, 0xcf, 0x98, 0xa5, 0x21, 0x26, 0xf9, 0x92, 0xbb, 0x50, 0x0e, 0x23, 0x27, + 0x88, 0x68, 0xb3, 0x1a, 0x71, 0x55, 0xae, 0x72, 0xf5, 0xa7, 0x8f, 0xb6, 0x73, 0xac, 0xbb, 0x1d, + 0x2a, 0x76, 0xa9, 0xba, 0x22, 0x80, 0x31, 0x2d, 0xf2, 0x16, 0x40, 0xd0, 0xf3, 0xea, 0xbd, 0x4e, + 0xc7, 0x09, 0x76, 0xa5, 0x76, 0x77, 0x63, 0xb8, 0xcf, 0x43, 0x4d, 0x2f, 0x56, 0x74, 0xe2, 0x32, + 0x34, 0xf8, 0x91, 0x2f, 0x58, 0x70, 0x46, 0xcc, 0x03, 0x25, 0xc1, 0x58, 0xce, 0x12, 0x9c, 0x65, + 0x4d, 0xbb, 0x64, 0xb2, 0xc0, 0x24, 0x47, 0xf2, 0x06, 0x54, 0x1a, 0x7e, 0xa7, 0xdb, 0xa6, 0xa2, + 0x71, 0xc7, 0x8f, 0xdd, 0xb8, 0x7c, 0xe8, 0x2e, 0xc6, 0x24, 0xd0, 0xa4, 0x67, 0xff, 0xc7, 0xa4, + 0x8e, 0xa3, 0x86, 0x34, 0xf9, 0x14, 0x3c, 0x1e, 0xf6, 0x1a, 0x0d, 0x1a, 0x86, 0x9b, 0xbd, 0x36, + 0xf6, 0xbc, 0x1b, 0x6e, 0x18, 0xf9, 0xc1, 0xee, 0x8a, 0xdb, 0x71, 0x23, 0x3e, 0xa0, 0x8b, 0xb5, + 0x8b, 0xfb, 0x7b, 0x73, 0x8f, 0xd7, 0x07, 0x21, 0xe1, 0xe0, 0xfa, 0xc4, 0x81, 0x27, 0x7a, 0xde, + 0x60, 0xf2, 0xe2, 0xf8, 0x31, 0xb7, 0xbf, 0x37, 0xf7, 0xc4, 0x9d, 0xc1, 0x68, 0x78, 0x10, 0x0d, + 0xfb, 0x8f, 0x2d, 0xb6, 0x0d, 0x89, 0xef, 0x5a, 0xa7, 0x9d, 0x6e, 0x9b, 0x2d, 0x9d, 0xa7, 0xaf, + 0x1c, 0x47, 0x09, 0xe5, 0x18, 0xf3, 0xd9, 0xcb, 0x95, 0xfc, 0x83, 0x34, 0x64, 0xfb, 0xbf, 0x5b, + 0x70, 0x3e, 0x8d, 0xfc, 0x10, 0x14, 0xba, 0x30, 0xa9, 0xd0, 0xdd, 0xca, 0xf7, 0x6b, 0x07, 0x68, + 0x75, 0xbf, 0x64, 0x0c, 0x58, 0x85, 0x8a, 0x74, 0x93, 0xbc, 0x08, 0x13, 0x91, 0xfc, 0x7b, 0x2b, + 0x56, 0xce, 0xb5, 0x61, 0x62, 0xdd, 0x80, 0x61, 0x02, 0x93, 0xd5, 0x6c, 0xb4, 0x7b, 0x61, 0x44, + 0x83, 0x7a, 0xc3, 0xef, 0x8a, 0x65, 0xb7, 0x14, 0xd7, 0x5c, 0x34, 0x60, 0x98, 0xc0, 0xb4, 0xff, + 0x46, 0xb1, 0xbf, 0xdd, 0xff, 0x7f, 0xd7, 0x57, 0x62, 0xf5, 0xa3, 0xf0, 0x5e, 0xaa, 0x1f, 0xa3, + 0xef, 0x2b, 0xf5, 0xe3, 0x8b, 0x16, 0xd3, 0xe2, 0xc4, 0x00, 0x08, 0xa5, 0x6a, 0xf4, 0x5a, 0xbe, + 0xd3, 0x01, 0xe9, 0xa6, 0xa9, 0x18, 0x4a, 0x5e, 0x18, 0xb3, 0xb5, 0xff, 0xd1, 0x28, 0x4c, 0x54, + 0xbd, 0xc8, 0xad, 0x6e, 0x6e, 0xba, 0x9e, 0x1b, 0xed, 0x92, 0xaf, 0x8d, 0xc0, 0x42, 0x37, 0xa0, + 0x9b, 0x34, 0x08, 0x68, 0x73, 0xa9, 0x17, 0xb8, 0x5e, 0xab, 0xde, 0xd8, 0xa2, 0xcd, 0x5e, 0xdb, + 0xf5, 0x5a, 0xcb, 0x2d, 0xcf, 0xd7, 0xc5, 0xd7, 0x1e, 0xd0, 0x46, 0x8f, 0xb7, 0xab, 0x58, 0x25, + 0x3a, 0xc3, 0xc9, 0xbe, 0x76, 0x3c, 0xa6, 0xb5, 0xe7, 0xf6, 0xf7, 0xe6, 0x16, 0x8e, 0x59, 0x09, + 0x8f, 0xfb, 0x69, 0xe4, 0x2b, 0x23, 0x30, 0x1f, 0xd0, 0xcf, 0xf6, 0xdc, 0xa3, 0xb7, 0x86, 0x58, + 0xc6, 0xdb, 0x43, 0x6e, 0xf7, 0xc7, 0xe2, 0x59, 0xbb, 0xba, 0xbf, 0x37, 0x77, 0xcc, 0x3a, 0x78, + 0xcc, 0xef, 0xb2, 0xd7, 0xa0, 0x52, 0xed, 0xba, 0xa1, 0xfb, 0x00, 0xfd, 0x5e, 0x44, 0x8f, 0x60, + 0xd0, 0x98, 0x83, 0x62, 0xd0, 0x6b, 0x53, 0xb1, 0xc0, 0x94, 0x6b, 0x65, 0xb6, 0x2c, 0x23, 0x2b, + 0x40, 0x51, 0x6e, 0x7f, 0x91, 0x6d, 0x41, 0x9c, 0x64, 0xca, 0x94, 0x75, 0x0f, 0x8a, 0x01, 0x63, + 0x22, 0x47, 0xd6, 0xb0, 0xa7, 0xfe, 0x58, 0x6a, 0x29, 0x04, 0xfb, 0x89, 0x82, 0x85, 0xfd, 0x9d, + 0x11, 0xb8, 0x50, 0xed, 0x76, 0x57, 0x69, 0xb8, 0x95, 0x92, 0xe2, 0x97, 0x2d, 0x98, 0xdc, 0x71, + 0x83, 0xa8, 0xe7, 0xb4, 0x95, 0xb5, 0x52, 0xc8, 0x53, 0x1f, 0x56, 0x1e, 0xce, 0xed, 0xf5, 0x04, + 0xe9, 0x1a, 0xd9, 0xdf, 0x9b, 0x9b, 0x4c, 0x96, 0x61, 0x8a, 0x3d, 0xf9, 0x5b, 0x16, 0x4c, 0xcb, + 0xa2, 0x5b, 0x7e, 0x93, 0x9a, 0xd6, 0xf0, 0x3b, 0x79, 0xca, 0xa4, 0x89, 0x0b, 0x2b, 0x66, 0xba, + 0x14, 0xfb, 0x84, 0xb0, 0xff, 0xe7, 0x08, 0x3c, 0x36, 0x80, 0x06, 0xf9, 0x4d, 0x0b, 0xce, 0x0b, + 0x13, 0xba, 0x01, 0x42, 0xba, 0x29, 0x5b, 0xf3, 0x13, 0x79, 0x4b, 0x8e, 0x6c, 0x8a, 0x53, 0xaf, + 0x41, 0x6b, 0x33, 0x6c, 0x49, 0x5e, 0xcc, 0x60, 0x8d, 0x99, 0x02, 0x71, 0x49, 0x85, 0x51, 0x3d, + 0x25, 0xe9, 0xc8, 0x43, 0x91, 0xb4, 0x9e, 0xc1, 0x1a, 0x33, 0x05, 0xb2, 0xff, 0x1a, 0x3c, 0x71, + 0x00, 0xb9, 0xc3, 0x27, 0xa7, 0xfd, 0x86, 0x1e, 0xf5, 0xc9, 0x31, 0x77, 0x84, 0x79, 0x6d, 0xc3, + 0x18, 0x9f, 0x3a, 0x6a, 0x62, 0x03, 0xdb, 0x83, 0xf9, 0x9c, 0x0a, 0x51, 0x42, 0xec, 0xef, 0x58, + 0x50, 0x3a, 0x86, 0xed, 0x73, 0x2e, 0x69, 0xfb, 0x2c, 0xf7, 0xd9, 0x3d, 0xa3, 0x7e, 0xbb, 0xe7, + 0x2b, 0xc3, 0xf5, 0xc6, 0x51, 0xec, 0x9d, 0x3f, 0xb6, 0xe0, 0x6c, 0x9f, 0x7d, 0x94, 0x6c, 0xc1, + 0xf9, 0xae, 0xdf, 0x54, 0xdb, 0xe9, 0x0d, 0x27, 0xdc, 0xe2, 0x30, 0xf9, 0x79, 0xcf, 0xb3, 0x9e, + 0x5c, 0xcb, 0x80, 0xbf, 0xbb, 0x37, 0x37, 0xa3, 0x89, 0xa4, 0x10, 0x30, 0x93, 0x22, 0xe9, 0x42, + 0x69, 0xd3, 0xa5, 0xed, 0x66, 0x3c, 0x04, 0x87, 0xd4, 0xd2, 0xae, 0x4b, 0x6a, 0xe2, 0x6a, 0x40, + 0xfd, 0x43, 0xcd, 0xc5, 0xfe, 0x89, 0x05, 0x93, 0xd5, 0x5e, 0xb4, 0xc5, 0x74, 0x94, 0x06, 0xb7, + 0xc6, 0x11, 0x0f, 0x8a, 0xa1, 0xdb, 0xda, 0x79, 0x3e, 0x9f, 0xc5, 0xb8, 0xce, 0x48, 0xc9, 0x2b, + 0x12, 0xad, 0xac, 0xf3, 0x42, 0x14, 0x6c, 0x48, 0x00, 0x63, 0xbe, 0xd3, 0x8b, 0xb6, 0xae, 0xca, + 0x4f, 0x1e, 0xd2, 0x32, 0x71, 0x9b, 0x7d, 0xce, 0x55, 0xc9, 0x51, 0xab, 0x8c, 0xa2, 0x14, 0x25, + 0x27, 0xfb, 0xf3, 0x30, 0x99, 0xbc, 0x77, 0x3b, 0xc2, 0x98, 0xbd, 0x08, 0x05, 0x27, 0xf0, 0xe4, + 0x88, 0xad, 0x48, 0x84, 0x42, 0x15, 0x6f, 0x21, 0x2b, 0x27, 0xcf, 0x42, 0x69, 0xb3, 0xd7, 0x6e, + 0xf3, 0x73, 0x85, 0xb8, 0xe4, 0xd2, 0xc7, 0xa2, 0xeb, 0xb2, 0x1c, 0x35, 0x86, 0xfd, 0x7f, 0x46, + 0x61, 0xaa, 0xd6, 0xee, 0xd1, 0x57, 0x02, 0x4a, 0x95, 0x2d, 0xa8, 0x0a, 0x53, 0xdd, 0x80, 0xee, + 0xb8, 0xf4, 0x7e, 0x9d, 0xb6, 0x69, 0x23, 0xf2, 0x03, 0x29, 0xcd, 0x63, 0x92, 0xd0, 0xd4, 0x5a, + 0x12, 0x8c, 0x69, 0x7c, 0xf2, 0x32, 0x4c, 0x3a, 0x8d, 0xc8, 0xdd, 0xa1, 0x9a, 0x82, 0x10, 0xf7, + 0x51, 0x49, 0x61, 0xb2, 0x9a, 0x80, 0x62, 0x0a, 0x9b, 0x7c, 0x1a, 0x66, 0xc2, 0x86, 0xd3, 0xa6, + 0x77, 0xba, 0x92, 0xd5, 0xe2, 0x16, 0x6d, 0x6c, 0xaf, 0xf9, 0xae, 0x17, 0x49, 0xbb, 0xe3, 0x65, + 0x49, 0x69, 0xa6, 0x3e, 0x00, 0x0f, 0x07, 0x52, 0x20, 0xff, 0xca, 0x82, 0x8b, 0xdd, 0x80, 0xae, + 0x05, 0x7e, 0xc7, 0x67, 0x43, 0xad, 0xcf, 0x1c, 0x26, 0xcd, 0x42, 0xaf, 0x0f, 0xa9, 0x4b, 0x89, + 0x92, 0xfe, 0x3b, 0x9c, 0x0f, 0xec, 0xef, 0xcd, 0x5d, 0x5c, 0x3b, 0x48, 0x00, 0x3c, 0x58, 0x3e, + 0xf2, 0x6f, 0x2c, 0xb8, 0xd4, 0xf5, 0xc3, 0xe8, 0x80, 0x4f, 0x28, 0x9e, 0xea, 0x27, 0xd8, 0xfb, + 0x7b, 0x73, 0x97, 0xd6, 0x0e, 0x94, 0x00, 0x0f, 0x91, 0xd0, 0xde, 0xaf, 0xc0, 0x59, 0x63, 0xec, + 0x49, 0x63, 0xce, 0x4b, 0x70, 0x46, 0x0d, 0x86, 0x58, 0xf7, 0x29, 0xc7, 0xb6, 0xbd, 0xaa, 0x09, + 0xc4, 0x24, 0x2e, 0x1b, 0x77, 0x7a, 0x28, 0x8a, 0xda, 0xa9, 0x71, 0xb7, 0x96, 0x80, 0x62, 0x0a, + 0x9b, 0x2c, 0xc3, 0x39, 0x59, 0x82, 0xb4, 0xdb, 0x76, 0x1b, 0xce, 0xa2, 0xdf, 0x93, 0x43, 0xae, + 0x58, 0x7b, 0x6c, 0x7f, 0x6f, 0xee, 0xdc, 0x5a, 0x3f, 0x18, 0xb3, 0xea, 0x90, 0x15, 0x38, 0xef, + 0xf4, 0x22, 0x5f, 0x7f, 0xff, 0x35, 0x8f, 0x6d, 0xa7, 0x4d, 0x3e, 0xb4, 0x4a, 0x62, 0xdf, 0xad, + 0x66, 0xc0, 0x31, 0xb3, 0x16, 0x59, 0x4b, 0x51, 0xab, 0xd3, 0x86, 0xef, 0x35, 0x45, 0x2f, 0x17, + 0xe3, 0x63, 0x60, 0x35, 0x03, 0x07, 0x33, 0x6b, 0x92, 0x36, 0x4c, 0x76, 0x9c, 0x07, 0x77, 0x3c, + 0x67, 0xc7, 0x71, 0xdb, 0x8c, 0x89, 0xb4, 0x17, 0x0e, 0xb6, 0x32, 0xf5, 0x22, 0xb7, 0x3d, 0x2f, + 0xfc, 0x38, 0xe6, 0x97, 0xbd, 0xe8, 0x76, 0x50, 0x8f, 0x98, 0xa6, 0x2e, 0x34, 0xc8, 0xd5, 0x04, + 0x2d, 0x4c, 0xd1, 0x26, 0xb7, 0xe1, 0x02, 0x9f, 0x8e, 0x4b, 0xfe, 0x7d, 0x6f, 0x89, 0xb6, 0x9d, + 0x5d, 0xf5, 0x01, 0xe3, 0xfc, 0x03, 0x1e, 0xdf, 0xdf, 0x9b, 0xbb, 0x50, 0xcf, 0x42, 0xc0, 0xec, + 0x7a, 0xc4, 0x81, 0x27, 0x92, 0x00, 0xa4, 0x3b, 0x6e, 0xe8, 0xfa, 0x9e, 0x30, 0xcb, 0x95, 0x62, + 0xb3, 0x5c, 0x7d, 0x30, 0x1a, 0x1e, 0x44, 0x83, 0xfc, 0x5d, 0x0b, 0xce, 0x67, 0x4d, 0xc3, 0x99, + 0x72, 0x1e, 0xb7, 0xc9, 0xa9, 0xa9, 0x25, 0x46, 0x44, 0xe6, 0xa2, 0x90, 0x29, 0x04, 0x79, 0xdb, + 0x82, 0x09, 0xc7, 0x38, 0x41, 0xcf, 0x40, 0x1e, 0xbb, 0x96, 0x79, 0x26, 0xaf, 0x4d, 0xef, 0xef, + 0xcd, 0x25, 0x4e, 0xe9, 0x98, 0xe0, 0x48, 0xfe, 0xbe, 0x05, 0x17, 0x32, 0xe7, 0xf8, 0x4c, 0xe5, + 0x34, 0x5a, 0x88, 0x0f, 0x92, 0xec, 0x35, 0x27, 0x5b, 0x0c, 0xf2, 0x0d, 0x4b, 0x6f, 0x65, 0xea, + 0x82, 0x71, 0x66, 0x82, 0x8b, 0x36, 0xa4, 0xc1, 0xc3, 0x50, 0xa3, 0x14, 0xe1, 0xda, 0x39, 0x63, + 0x67, 0x54, 0x85, 0x98, 0x66, 0x4f, 0xbe, 0x6e, 0xa9, 0xad, 0x51, 0x4b, 0x74, 0xe6, 0xb4, 0x24, + 0x22, 0xf1, 0x4e, 0xab, 0x05, 0x4a, 0x31, 0x27, 0x3f, 0x07, 0xb3, 0xce, 0x86, 0x1f, 0x44, 0x99, + 0x93, 0x6f, 0x66, 0x92, 0x4f, 0xa3, 0x4b, 0xfb, 0x7b, 0x73, 0xb3, 0xd5, 0x81, 0x58, 0x78, 0x00, + 0x05, 0xfb, 0x7b, 0x63, 0x30, 0x21, 0x4e, 0x42, 0x72, 0xeb, 0xfa, 0x1d, 0x0b, 0x9e, 0x6c, 0xf4, + 0x82, 0x80, 0x7a, 0x51, 0x3d, 0xa2, 0xdd, 0xfe, 0x8d, 0xcb, 0x3a, 0xd5, 0x8d, 0xeb, 0xf2, 0xfe, + 0xde, 0xdc, 0x93, 0x8b, 0x07, 0xf0, 0xc7, 0x03, 0xa5, 0x23, 0xff, 0xc1, 0x02, 0x5b, 0x22, 0xd4, + 0x9c, 0xc6, 0x76, 0x2b, 0xf0, 0x7b, 0x5e, 0xb3, 0xff, 0x23, 0x46, 0x4e, 0xf5, 0x23, 0x9e, 0xde, + 0xdf, 0x9b, 0xb3, 0x17, 0x0f, 0x95, 0x02, 0x8f, 0x20, 0x29, 0x79, 0x05, 0xce, 0x4a, 0xac, 0x6b, + 0x0f, 0xba, 0x34, 0x70, 0xd9, 0x99, 0x43, 0x2a, 0x8e, 0xb1, 0x6f, 0x5a, 0x1a, 0x01, 0xfb, 0xeb, + 0x90, 0x10, 0xc6, 0xef, 0x53, 0xb7, 0xb5, 0x15, 0x29, 0xf5, 0x69, 0x48, 0x87, 0x34, 0x69, 0x15, + 0xb9, 0x2b, 0x68, 0xd6, 0x2a, 0xfb, 0x7b, 0x73, 0xe3, 0xf2, 0x0f, 0x2a, 0x4e, 0xe4, 0x16, 0x4c, + 0x8a, 0x73, 0xea, 0x9a, 0xeb, 0xb5, 0xd6, 0x7c, 0x4f, 0x78, 0x55, 0x95, 0x6b, 0x4f, 0xab, 0x0d, + 0xbf, 0x9e, 0x80, 0xbe, 0xbb, 0x37, 0x37, 0xa1, 0x7e, 0xaf, 0xef, 0x76, 0x29, 0xa6, 0x6a, 0x93, + 0xbf, 0x63, 0x01, 0x09, 0x23, 0xda, 0x5d, 0x6b, 0xf7, 0x5a, 0xae, 0x6c, 0x22, 0xe9, 0x1f, 0x95, + 0x83, 0xab, 0x56, 0x92, 0x6e, 0x6d, 0x56, 0x0a, 0x49, 0xea, 0x7d, 0x1c, 0x31, 0x43, 0x0a, 0xfb, + 0xdb, 0xe3, 0x00, 0x6a, 0x2e, 0xd1, 0x2e, 0xf9, 0x20, 0x94, 0x43, 0x1a, 0x89, 0x26, 0x91, 0xd7, + 0x5c, 0xe2, 0x72, 0x52, 0x15, 0x62, 0x0c, 0x27, 0xdb, 0x50, 0xec, 0x3a, 0xbd, 0x90, 0xe6, 0x73, + 0xb8, 0x91, 0x23, 0x73, 0x8d, 0x51, 0x14, 0xa7, 0x66, 0xfe, 0x13, 0x05, 0x0f, 0xf2, 0x25, 0x0b, + 0x80, 0x26, 0x47, 0xd3, 0xd0, 0xd6, 0x2b, 0xc9, 0x32, 0x1e, 0x70, 0xac, 0x0d, 0x6a, 0x93, 0xfb, + 0x7b, 0x73, 0x60, 0x8c, 0x4b, 0x83, 0x2d, 0xb9, 0x0f, 0x25, 0x47, 0x6d, 0x48, 0xa3, 0xa7, 0xb1, + 0x21, 0xf1, 0xc3, 0xac, 0x9e, 0x51, 0x9a, 0x19, 0xf9, 0x8a, 0x05, 0x93, 0x21, 0x8d, 0x64, 0x57, + 0xb1, 0x65, 0x51, 0x6a, 0xe3, 0x43, 0xce, 0x88, 0x7a, 0x82, 0xa6, 0x58, 0xde, 0x93, 0x65, 0x98, + 0xe2, 0xab, 0x44, 0xb9, 0x41, 0x9d, 0x26, 0x0d, 0xb8, 0xad, 0x44, 0xaa, 0x79, 0xc3, 0x8b, 0x62, + 0xd0, 0xd4, 0xa2, 0x18, 0x65, 0x98, 0xe2, 0xab, 0x44, 0x59, 0x75, 0x83, 0xc0, 0x97, 0xa2, 0x94, + 0x72, 0x12, 0xc5, 0xa0, 0xa9, 0x45, 0x31, 0xca, 0x30, 0xc5, 0x97, 0xb4, 0x61, 0xac, 0xcb, 0xa7, + 0x96, 0x54, 0xe5, 0x86, 0xbc, 0x23, 0x57, 0xd3, 0x94, 0x76, 0x85, 0x4d, 0x4a, 0xfc, 0x47, 0xc9, + 0xc3, 0xfe, 0xd6, 0x19, 0x98, 0x54, 0xd3, 0x36, 0x3e, 0xe4, 0x08, 0x43, 0xe0, 0x80, 0x43, 0xce, + 0xa2, 0x09, 0xc4, 0x24, 0x2e, 0xab, 0x2c, 0x56, 0xad, 0xe4, 0x19, 0x47, 0x57, 0xae, 0x9b, 0x40, + 0x4c, 0xe2, 0x92, 0x0e, 0x14, 0xd9, 0xca, 0xa2, 0xdc, 0x2f, 0x86, 0xfc, 0xf2, 0x78, 0x35, 0x32, + 0x8c, 0x2a, 0x8c, 0x3c, 0x0a, 0x2e, 0xdc, 0x96, 0x1d, 0x25, 0xcc, 0xdb, 0x72, 0x2a, 0xe6, 0xb3, + 0x1a, 0x24, 0x2d, 0xe7, 0xa2, 0xef, 0x93, 0x65, 0x98, 0x62, 0x9f, 0x71, 0xee, 0x29, 0x9e, 0xe2, + 0xb9, 0xe7, 0x93, 0x50, 0xea, 0x38, 0x0f, 0xea, 0xbd, 0xa0, 0x75, 0xf2, 0xf3, 0x95, 0x74, 0xa7, + 0x15, 0x54, 0x50, 0xd3, 0x23, 0x5f, 0xb0, 0x8c, 0x05, 0x4e, 0xf8, 0x5a, 0xdc, 0xcd, 0x77, 0x81, + 0xd3, 0x6a, 0xc3, 0xc0, 0xa5, 0xae, 0xef, 0x14, 0x52, 0x7a, 0xe8, 0xa7, 0x10, 0xa6, 0x51, 0x8b, + 0x09, 0xa2, 0x35, 0xea, 0xf2, 0xa9, 0x6a, 0xd4, 0x8b, 0x09, 0x66, 0x98, 0x62, 0xce, 0xe5, 0x11, + 0x73, 0x4e, 0xcb, 0x03, 0xa7, 0x2a, 0x4f, 0x3d, 0xc1, 0x0c, 0x53, 0xcc, 0x07, 0x1f, 0xbd, 0x2b, + 0xa7, 0x73, 0xf4, 0x9e, 0xc8, 0xe1, 0xe8, 0x7d, 0xf0, 0xa9, 0xe4, 0xcc, 0xb0, 0xa7, 0x12, 0x72, + 0x13, 0x48, 0x73, 0xd7, 0x73, 0x3a, 0x6e, 0x43, 0x2e, 0x96, 0x7c, 0x93, 0x9e, 0xe4, 0xa6, 0x19, + 0xad, 0x95, 0x2d, 0xf5, 0x61, 0x60, 0x46, 0x2d, 0x12, 0x41, 0xa9, 0xab, 0x94, 0xcf, 0xa9, 0x3c, + 0x46, 0xbf, 0x52, 0x46, 0x85, 0x0b, 0x0d, 0x9b, 0x78, 0xaa, 0x04, 0x35, 0x27, 0xb2, 0x02, 0xe7, + 0x3b, 0xae, 0xb7, 0xe6, 0x37, 0xc3, 0x35, 0x1a, 0x48, 0xc3, 0x53, 0x9d, 0x46, 0x33, 0xd3, 0xbc, + 0x6d, 0xb8, 0x31, 0x61, 0x35, 0x03, 0x8e, 0x99, 0xb5, 0xec, 0xff, 0x6d, 0xc1, 0xf4, 0x62, 0xdb, + 0xef, 0x35, 0xef, 0x3a, 0x51, 0x63, 0x4b, 0x78, 0x6c, 0x90, 0x97, 0xa1, 0xe4, 0x7a, 0x11, 0x0d, + 0x76, 0x9c, 0xb6, 0xdc, 0x9f, 0x6c, 0x65, 0x49, 0x5e, 0x96, 0xe5, 0xef, 0xee, 0xcd, 0x4d, 0x2e, + 0xf5, 0x02, 0x6e, 0xb0, 0x17, 0xab, 0x15, 0xea, 0x3a, 0xe4, 0x5b, 0x16, 0x9c, 0x15, 0x3e, 0x1f, + 0x4b, 0x4e, 0xe4, 0xbc, 0xd6, 0xa3, 0x81, 0x4b, 0x95, 0xd7, 0xc7, 0x90, 0x0b, 0x55, 0x5a, 0x56, + 0xc5, 0x60, 0x37, 0x3e, 0xb3, 0xac, 0xa6, 0x39, 0x63, 0xbf, 0x30, 0xf6, 0xaf, 0x16, 0xe0, 0xf1, + 0x81, 0xb4, 0xc8, 0x2c, 0x8c, 0xb8, 0x4d, 0xf9, 0xe9, 0x20, 0xe9, 0x8e, 0x2c, 0x37, 0x71, 0xc4, + 0x6d, 0x92, 0x79, 0xae, 0xe1, 0x06, 0x34, 0x0c, 0xd5, 0xdd, 0x7b, 0x59, 0x2b, 0xa3, 0xb2, 0x14, + 0x0d, 0x0c, 0x32, 0x07, 0x45, 0xee, 0x4a, 0x2d, 0x8f, 0x56, 0x5c, 0x67, 0xe6, 0x5e, 0xcb, 0x28, + 0xca, 0xc9, 0x17, 0x2d, 0x00, 0x21, 0x20, 0xd3, 0xf7, 0xe5, 0x2e, 0x89, 0xf9, 0x36, 0x13, 0xa3, + 0x2c, 0xa4, 0x8c, 0xff, 0xa3, 0xc1, 0x95, 0xac, 0xc3, 0x18, 0x53, 0x9f, 0xfd, 0xe6, 0x89, 0x37, + 0x45, 0xa1, 0x00, 0x71, 0x1a, 0x28, 0x69, 0xb1, 0xb6, 0x0a, 0x68, 0xd4, 0x0b, 0x3c, 0xd6, 0xb4, + 0x7c, 0x1b, 0x2c, 0x09, 0x29, 0x50, 0x97, 0xa2, 0x81, 0x61, 0xff, 0x8b, 0x11, 0x38, 0x9f, 0x25, + 0x3a, 0xdb, 0x6d, 0xc6, 0x84, 0xb4, 0xd2, 0x4a, 0xf0, 0xb3, 0xf9, 0xb7, 0x8f, 0x74, 0x5f, 0xd2, + 0x37, 0x36, 0xd2, 0x97, 0x54, 0xf2, 0x25, 0x3f, 0xab, 0x5b, 0x68, 0xe4, 0x84, 0x2d, 0xa4, 0x29, + 0xa7, 0x5a, 0xe9, 0x32, 0x8c, 0x86, 0xac, 0xe7, 0x0b, 0xc9, 0x9b, 0x1f, 0xde, 0x47, 0x1c, 0xc2, + 0x30, 0x7a, 0x9e, 0x1b, 0xc9, 0xf8, 0x23, 0x8d, 0x71, 0xc7, 0x73, 0x23, 0xe4, 0x10, 0xfb, 0x9b, + 0x23, 0x30, 0x3b, 0xf8, 0xa3, 0xc8, 0x37, 0x2d, 0x80, 0x26, 0x3b, 0x1c, 0x85, 0xdc, 0x89, 0x5f, + 0xb8, 0x7b, 0x39, 0xa7, 0xd5, 0x86, 0x4b, 0x8a, 0x53, 0xec, 0x87, 0xa8, 0x8b, 0x42, 0x34, 0x04, + 0x21, 0x57, 0xd5, 0xd0, 0xe7, 0xb7, 0x56, 0x62, 0x32, 0xe9, 0x3a, 0xab, 0x1a, 0x82, 0x06, 0x16, + 0x3b, 0xfd, 0x7a, 0x4e, 0x87, 0x86, 0x5d, 0x47, 0x47, 0x73, 0xf1, 0xd3, 0xef, 0x2d, 0x55, 0x88, + 0x31, 0xdc, 0x6e, 0xc3, 0x53, 0x47, 0x90, 0x33, 0xa7, 0x60, 0x19, 0xfb, 0x4f, 0x2c, 0x78, 0x4c, + 0x7a, 0xe2, 0xfd, 0xb9, 0x71, 0xeb, 0xfc, 0x53, 0x0b, 0x9e, 0x18, 0xf0, 0xcd, 0x0f, 0xc1, 0xbb, + 0xf3, 0xcd, 0xa4, 0x77, 0xe7, 0x9d, 0x61, 0x87, 0x74, 0xe6, 0x77, 0x0c, 0x70, 0xf2, 0xfc, 0x5e, + 0x01, 0xce, 0xb0, 0x65, 0xab, 0xe9, 0xb7, 0x72, 0xda, 0x38, 0x9f, 0x82, 0xe2, 0x67, 0xd9, 0x06, + 0x94, 0x1e, 0x64, 0x7c, 0x57, 0x42, 0x01, 0x23, 0x5f, 0xb2, 0x60, 0xfc, 0xb3, 0x72, 0x4f, 0x15, + 0x67, 0xb9, 0x21, 0x17, 0xc3, 0xc4, 0x37, 0xcc, 0xcb, 0x1d, 0x52, 0xc4, 0xe0, 0x68, 0x5f, 0x4e, + 0xb5, 0x95, 0x2a, 0xce, 0xe4, 0x19, 0x18, 0xdf, 0xf4, 0x83, 0x4e, 0xaf, 0xed, 0xa4, 0x03, 0x3f, + 0xaf, 0x8b, 0x62, 0x54, 0x70, 0x36, 0xc9, 0x9d, 0xae, 0xfb, 0x3a, 0x0d, 0x42, 0x11, 0x92, 0x91, + 0x98, 0xe4, 0x55, 0x0d, 0x41, 0x03, 0x8b, 0xd7, 0x69, 0xb5, 0x02, 0xda, 0x72, 0x22, 0x3f, 0xe0, + 0x3b, 0x87, 0x59, 0x47, 0x43, 0xd0, 0xc0, 0x9a, 0xfd, 0x18, 0x4c, 0x98, 0xc2, 0x1f, 0x2b, 0x9e, + 0xe7, 0xe3, 0x20, 0x9d, 0x3a, 0x53, 0x4b, 0x92, 0x75, 0x94, 0x25, 0xc9, 0xfe, 0x4f, 0x23, 0x60, + 0xd8, 0xa2, 0x1e, 0xc2, 0x54, 0xf7, 0x12, 0x53, 0x7d, 0x48, 0x3b, 0x8a, 0x61, 0x59, 0x1b, 0x14, + 0xdd, 0xb8, 0x93, 0x8a, 0x6e, 0xbc, 0x95, 0x1b, 0xc7, 0x83, 0x83, 0x1b, 0x7f, 0x68, 0xc1, 0x13, + 0x31, 0x72, 0xbf, 0x0d, 0xfb, 0xf0, 0x75, 0xfb, 0x05, 0xa8, 0x38, 0x71, 0x35, 0x39, 0xb1, 0x8c, + 0xd0, 0x32, 0x0d, 0x42, 0x13, 0x2f, 0x0e, 0x8b, 0x29, 0x9c, 0x30, 0x2c, 0x66, 0xf4, 0xe0, 0xb0, + 0x18, 0xfb, 0x27, 0x23, 0x70, 0xb1, 0xff, 0xcb, 0x4c, 0x5f, 0xf1, 0xc3, 0xbf, 0x2d, 0xed, 0x4d, + 0x3e, 0x72, 0x62, 0x6f, 0xf2, 0xc2, 0x51, 0xbd, 0xc9, 0xb5, 0x0f, 0xf7, 0xe8, 0xa9, 0xfb, 0x70, + 0xd7, 0xe1, 0x82, 0x72, 0x18, 0xbd, 0xee, 0x07, 0x32, 0x36, 0x44, 0xad, 0x20, 0xa5, 0xda, 0x45, + 0x59, 0xe5, 0x02, 0x66, 0x21, 0x61, 0x76, 0x5d, 0xfb, 0x87, 0x05, 0x38, 0x17, 0x37, 0xfb, 0xa2, + 0xef, 0x35, 0x5d, 0xee, 0x73, 0xf4, 0x12, 0x8c, 0x46, 0xbb, 0x5d, 0xd5, 0xd8, 0x7f, 0x59, 0x89, + 0xb3, 0xbe, 0xdb, 0x65, 0xbd, 0xfd, 0x58, 0x46, 0x15, 0x7e, 0x8b, 0xc0, 0x2b, 0x91, 0x15, 0x3d, + 0x3b, 0x44, 0x0f, 0x3c, 0x9f, 0x1c, 0xcd, 0xef, 0xee, 0xcd, 0x65, 0x64, 0x79, 0x98, 0xd7, 0x94, + 0x92, 0x63, 0x9e, 0xdc, 0x83, 0xc9, 0xb6, 0x13, 0x46, 0x77, 0xba, 0x4d, 0x27, 0xa2, 0xeb, 0xae, + 0xf4, 0xe6, 0x39, 0x5e, 0x38, 0x8d, 0x76, 0x7b, 0x58, 0x49, 0x50, 0xc2, 0x14, 0x65, 0xb2, 0x03, + 0x84, 0x95, 0xac, 0x07, 0x8e, 0x17, 0x8a, 0xaf, 0x62, 0xfc, 0x8e, 0x1f, 0x1b, 0xa5, 0x8f, 0xce, + 0x2b, 0x7d, 0xd4, 0x30, 0x83, 0x03, 0x79, 0x1a, 0xc6, 0x02, 0xea, 0x84, 0x7a, 0x3b, 0xd0, 0xf3, + 0x1f, 0x79, 0x29, 0x4a, 0xa8, 0x39, 0xa1, 0xc6, 0x0e, 0x99, 0x50, 0x7f, 0x60, 0xc1, 0x64, 0xdc, + 0x4d, 0x0f, 0x41, 0xf5, 0xe8, 0x24, 0x55, 0x8f, 0x1b, 0x79, 0x2d, 0x89, 0x03, 0xb4, 0x8d, 0x3f, + 0x1e, 0x37, 0xbf, 0x8f, 0x07, 0x70, 0x7c, 0xce, 0xf4, 0xe7, 0xb7, 0xf2, 0x88, 0xaa, 0x4b, 0x68, + 0x7b, 0x07, 0x3a, 0xf2, 0x33, 0x5d, 0xa7, 0x29, 0xf5, 0x18, 0x39, 0xec, 0xb5, 0xae, 0xa3, 0xf4, + 0x9b, 0x2c, 0x5d, 0x47, 0xd5, 0x21, 0x77, 0xe0, 0xb1, 0x6e, 0xe0, 0xf3, 0x3c, 0x03, 0x4b, 0xd4, + 0x69, 0xb6, 0x5d, 0x8f, 0x2a, 0x33, 0x8f, 0xf0, 0xba, 0x79, 0x62, 0x7f, 0x6f, 0xee, 0xb1, 0xb5, + 0x6c, 0x14, 0x1c, 0x54, 0x37, 0x19, 0xa9, 0x3a, 0x7a, 0x84, 0x48, 0xd5, 0x5f, 0xd2, 0xc6, 0x54, + 0x1d, 0x14, 0xf1, 0xa9, 0xbc, 0xba, 0x32, 0x2b, 0x3c, 0x42, 0x0f, 0xa9, 0xaa, 0x64, 0x8a, 0x9a, + 0xfd, 0x60, 0x8b, 0xdd, 0xd8, 0x09, 0x2d, 0x76, 0x71, 0x1c, 0xcc, 0xf8, 0x7b, 0x19, 0x07, 0x53, + 0x7a, 0x5f, 0xc5, 0xc1, 0x7c, 0xcb, 0x82, 0x73, 0x4e, 0x7f, 0x04, 0x7a, 0x3e, 0xc6, 0xe3, 0x8c, + 0xd0, 0xf6, 0xda, 0x13, 0x52, 0xc8, 0xac, 0x40, 0x7f, 0xcc, 0x12, 0xc5, 0x7e, 0xa7, 0x08, 0xd3, + 0x69, 0x25, 0xe9, 0xf4, 0x43, 0x75, 0x7f, 0xc5, 0x82, 0x69, 0x35, 0xc1, 0xf5, 0x0d, 0xb8, 0x38, + 0x62, 0xac, 0xe4, 0xb4, 0xae, 0x08, 0x75, 0x4f, 0x67, 0x50, 0x59, 0x4f, 0x71, 0xc3, 0x3e, 0xfe, + 0xe4, 0x0d, 0xa8, 0xe8, 0x5b, 0x95, 0x13, 0xc5, 0xed, 0xf2, 0xd0, 0xd2, 0x6a, 0x4c, 0x02, 0x4d, + 0x7a, 0xe4, 0x1d, 0x0b, 0xa0, 0xa1, 0x76, 0xe2, 0x9c, 0xa2, 0xa2, 0x32, 0xb4, 0x85, 0x58, 0x9f, + 0xd7, 0x45, 0x21, 0x1a, 0x8c, 0xc9, 0xaf, 0xf2, 0xfb, 0x14, 0x3d, 0x12, 0x94, 0xe7, 0xc1, 0x27, + 0xf2, 0x5e, 0x8a, 0x62, 0x5f, 0x12, 0xad, 0xed, 0x19, 0xa0, 0x10, 0x13, 0x42, 0xd8, 0x2f, 0x81, + 0xf6, 0xd9, 0x66, 0x2b, 0x2b, 0xf7, 0xda, 0x5e, 0x73, 0xa2, 0x2d, 0x39, 0x04, 0xf5, 0xca, 0x7a, + 0x5d, 0x01, 0x30, 0xc6, 0xb1, 0x3f, 0x03, 0x93, 0xaf, 0x04, 0x4e, 0x77, 0xcb, 0xe5, 0xf7, 0x16, + 0xec, 0x7c, 0xfc, 0x0c, 0x8c, 0x3b, 0xcd, 0x66, 0x56, 0xb2, 0x9f, 0xaa, 0x28, 0x46, 0x05, 0x3f, + 0xd2, 0x51, 0xd8, 0xfe, 0x77, 0x16, 0x90, 0xf8, 0xa6, 0xd9, 0xf5, 0x5a, 0xab, 0x4e, 0xd4, 0xd8, + 0x62, 0x47, 0xb8, 0x2d, 0x5e, 0x9a, 0x75, 0x84, 0xbb, 0xa1, 0x21, 0x68, 0x60, 0x91, 0xb7, 0xa0, + 0x22, 0xfe, 0xbd, 0xae, 0x0f, 0x88, 0xc3, 0xbb, 0x9e, 0xf3, 0x3d, 0x8f, 0xcb, 0x24, 0x46, 0xe1, + 0x8d, 0x98, 0x03, 0x9a, 0xec, 0x58, 0x53, 0x2d, 0x7b, 0x9b, 0xed, 0xde, 0x83, 0xe6, 0x46, 0xdc, + 0x54, 0xdd, 0xc0, 0xdf, 0x74, 0xdb, 0x34, 0xdd, 0x54, 0x6b, 0xa2, 0x18, 0x15, 0xfc, 0x68, 0x4d, + 0xf5, 0x6f, 0x2d, 0x38, 0xbf, 0x1c, 0x46, 0xae, 0xbf, 0x44, 0xc3, 0x88, 0xed, 0x7c, 0x6c, 0x7d, + 0xec, 0xb5, 0x8f, 0x12, 0x7e, 0xb1, 0x04, 0xd3, 0xf2, 0x1e, 0xba, 0xb7, 0x11, 0xd2, 0xc8, 0x38, + 0x6a, 0xe8, 0x79, 0xbc, 0x98, 0x82, 0x63, 0x5f, 0x0d, 0x46, 0x45, 0x5e, 0x48, 0xc7, 0x54, 0x0a, + 0x49, 0x2a, 0xf5, 0x14, 0x1c, 0xfb, 0x6a, 0xd8, 0x3f, 0x28, 0xc0, 0x39, 0xfe, 0x19, 0xa9, 0xd0, + 0xa9, 0xaf, 0x0f, 0x0a, 0x9d, 0x1a, 0x72, 0x2a, 0x73, 0x5e, 0x27, 0x08, 0x9c, 0xfa, 0x9b, 0x16, + 0x4c, 0x35, 0x93, 0x2d, 0x9d, 0x8f, 0x5d, 0x2e, 0xab, 0x0f, 0x85, 0x07, 0x62, 0xaa, 0x10, 0xd3, + 0xfc, 0xc9, 0xaf, 0x59, 0x30, 0x95, 0x14, 0x53, 0xad, 0xee, 0xa7, 0xd0, 0x48, 0x3a, 0x64, 0x20, + 0x59, 0x1e, 0x62, 0x5a, 0x04, 0xfb, 0xfb, 0x23, 0xb2, 0x4b, 0x4f, 0x23, 0x2e, 0x88, 0xdc, 0x87, + 0x72, 0xd4, 0x0e, 0x45, 0xa1, 0xfc, 0xda, 0x21, 0x0f, 0xad, 0xeb, 0x2b, 0x75, 0xe1, 0x70, 0x12, + 0xeb, 0x95, 0xb2, 0x84, 0xe9, 0xc7, 0x8a, 0x17, 0x67, 0xdc, 0xe8, 0x4a, 0xc6, 0xb9, 0x9c, 0x96, + 0xd7, 0x17, 0xd7, 0xd2, 0x8c, 0x65, 0x09, 0x63, 0xac, 0x78, 0xd9, 0xbf, 0x65, 0x41, 0xf9, 0xa6, + 0xaf, 0xd6, 0x91, 0x9f, 0xcb, 0xc1, 0x16, 0xa5, 0x55, 0x56, 0xad, 0xb4, 0xc4, 0xa7, 0xa0, 0x97, + 0x13, 0x96, 0xa8, 0x27, 0x0d, 0xda, 0xf3, 0x3c, 0xe7, 0x21, 0x23, 0x75, 0xd3, 0xdf, 0x18, 0x68, + 0x3e, 0xfe, 0xf5, 0x22, 0x9c, 0x79, 0xd5, 0xd9, 0xa5, 0x5e, 0xe4, 0x1c, 0x7f, 0x93, 0x78, 0x01, + 0x2a, 0x4e, 0x97, 0xdf, 0x65, 0x1a, 0xc7, 0x90, 0xd8, 0xb8, 0x13, 0x83, 0xd0, 0xc4, 0x8b, 0x17, + 0x34, 0x11, 0xa4, 0x93, 0xb5, 0x14, 0x2d, 0xa6, 0xe0, 0xd8, 0x57, 0x83, 0xdc, 0x04, 0x22, 0x03, + 0xdb, 0xab, 0x8d, 0x86, 0xdf, 0xf3, 0xc4, 0x92, 0x26, 0xec, 0x3e, 0xfa, 0x3c, 0xbc, 0xda, 0x87, + 0x81, 0x19, 0xb5, 0xc8, 0xa7, 0x61, 0xa6, 0xc1, 0x29, 0xcb, 0xd3, 0x91, 0x49, 0x51, 0x9c, 0x90, + 0x75, 0xd8, 0xcb, 0xe2, 0x00, 0x3c, 0x1c, 0x48, 0x81, 0x49, 0x1a, 0x46, 0x7e, 0xe0, 0xb4, 0xa8, + 0x49, 0x77, 0x2c, 0x29, 0x69, 0xbd, 0x0f, 0x03, 0x33, 0x6a, 0x91, 0xcf, 0x43, 0x39, 0xda, 0x0a, + 0x68, 0xb8, 0xe5, 0xb7, 0x9b, 0xd2, 0xf7, 0x64, 0x48, 0x63, 0xa0, 0xec, 0xfd, 0x75, 0x45, 0xd5, + 0x18, 0xde, 0xaa, 0x08, 0x63, 0x9e, 0x24, 0x80, 0xb1, 0xb0, 0xe1, 0x77, 0x69, 0x28, 0x4f, 0x15, + 0x37, 0x73, 0xe1, 0xce, 0x8d, 0x5b, 0x86, 0x19, 0x92, 0x73, 0x40, 0xc9, 0xc9, 0xfe, 0xdd, 0x11, + 0x98, 0x30, 0x11, 0x8f, 0xb0, 0x36, 0x7d, 0xc9, 0x82, 0x89, 0x86, 0xef, 0x45, 0x81, 0xdf, 0x8e, + 0x13, 0x36, 0x0c, 0xaf, 0x51, 0x30, 0x52, 0x4b, 0x34, 0x72, 0xdc, 0xb6, 0x61, 0xad, 0x33, 0xd8, + 0x60, 0x82, 0x29, 0xf9, 0x9a, 0x05, 0x53, 0xb1, 0x63, 0x64, 0x6c, 0xeb, 0xcb, 0x55, 0x10, 0xbd, + 0xd4, 0x5f, 0x4b, 0x72, 0xc2, 0x34, 0x6b, 0x7b, 0x03, 0xa6, 0xd3, 0xbd, 0xcd, 0x9a, 0xb2, 0xeb, + 0xc8, 0xb9, 0x5e, 0x88, 0x9b, 0x72, 0xcd, 0x09, 0x43, 0xe4, 0x10, 0xf2, 0x2c, 0x94, 0x3a, 0x4e, + 0xd0, 0x72, 0x3d, 0xa7, 0xcd, 0x5b, 0xb1, 0x60, 0x2c, 0x48, 0xb2, 0x1c, 0x35, 0x86, 0xfd, 0x61, + 0x98, 0x58, 0x75, 0xbc, 0x16, 0x6d, 0xca, 0x75, 0xf8, 0xf0, 0xc8, 0xd4, 0x3f, 0x1a, 0x85, 0x8a, + 0x71, 0x7c, 0x3c, 0xfd, 0x73, 0x56, 0x22, 0x11, 0x51, 0x21, 0xc7, 0x44, 0x44, 0x9f, 0x04, 0xd8, + 0x74, 0x3d, 0x37, 0xdc, 0x3a, 0x61, 0x8a, 0x23, 0x7e, 0x37, 0x7f, 0x5d, 0x53, 0x40, 0x83, 0x5a, + 0x7c, 0x01, 0x5a, 0x3c, 0x20, 0x5b, 0xe0, 0x3b, 0x96, 0xb1, 0xdd, 0x8c, 0xe5, 0xe1, 0xf0, 0x61, + 0x74, 0xcc, 0xbc, 0xda, 0x7e, 0xc4, 0xdd, 0xd4, 0x41, 0xbb, 0xd2, 0x3a, 0x94, 0x02, 0x1a, 0xf6, + 0x3a, 0xf4, 0x44, 0xc9, 0x88, 0xb8, 0xeb, 0x0d, 0xca, 0xfa, 0xa8, 0x29, 0xcd, 0xbe, 0x04, 0x67, + 0x12, 0x22, 0x1c, 0xeb, 0x86, 0xc9, 0x87, 0x4c, 0x1b, 0xc5, 0x49, 0xee, 0x9b, 0x58, 0x5f, 0xb4, + 0x8d, 0x24, 0x44, 0xba, 0x2f, 0x84, 0x83, 0x95, 0x80, 0xd9, 0x3f, 0x19, 0x03, 0xe9, 0xc3, 0x70, + 0x84, 0xe5, 0xca, 0xbc, 0xb9, 0x1c, 0x39, 0xc1, 0xcd, 0xe5, 0x4d, 0x98, 0x70, 0x3d, 0x37, 0x72, + 0x9d, 0x36, 0xb7, 0x3f, 0xc9, 0xed, 0x54, 0x39, 0xe3, 0x4f, 0x2c, 0x1b, 0xb0, 0x0c, 0x3a, 0x89, + 0xba, 0xe4, 0x35, 0x28, 0xf2, 0xfd, 0x46, 0x0e, 0xe0, 0xe3, 0x3b, 0x5a, 0x70, 0x1f, 0x1b, 0x11, + 0xa1, 0x27, 0x28, 0xf1, 0xc3, 0x87, 0xc8, 0xc2, 0xa4, 0x8f, 0xdf, 0x72, 0x1c, 0xc7, 0x87, 0x8f, + 0x14, 0x1c, 0xfb, 0x6a, 0x30, 0x2a, 0x9b, 0x8e, 0xdb, 0xee, 0x05, 0x34, 0xa6, 0x32, 0x96, 0xa4, + 0x72, 0x3d, 0x05, 0xc7, 0xbe, 0x1a, 0x64, 0x13, 0x26, 0x64, 0x99, 0x70, 0x9b, 0x1b, 0x3f, 0xe1, + 0x57, 0x72, 0xf7, 0xc8, 0xeb, 0x06, 0x25, 0x4c, 0xd0, 0x25, 0x3d, 0x38, 0xeb, 0x7a, 0x0d, 0xdf, + 0x6b, 0xb4, 0x7b, 0xa1, 0xbb, 0x43, 0xe3, 0xf0, 0xb8, 0x93, 0x30, 0xbb, 0xb0, 0xbf, 0x37, 0x77, + 0x76, 0x39, 0x4d, 0x0e, 0xfb, 0x39, 0x90, 0x2f, 0x58, 0x70, 0xa1, 0xe1, 0x7b, 0x21, 0xcf, 0xe2, + 0xb1, 0x43, 0xaf, 0x05, 0x81, 0x1f, 0x08, 0xde, 0xe5, 0x13, 0xf2, 0xe6, 0x66, 0xcf, 0xc5, 0x2c, + 0x92, 0x98, 0xcd, 0x89, 0xbc, 0x09, 0xa5, 0x6e, 0xe0, 0xef, 0xb8, 0x4d, 0x1a, 0x48, 0x17, 0xcc, + 0x95, 0x3c, 0x52, 0x1b, 0xad, 0x49, 0x9a, 0xf1, 0xd2, 0xa3, 0x4a, 0x50, 0xf3, 0xb3, 0xff, 0x6f, + 0x05, 0x26, 0x93, 0xe8, 0xe4, 0x17, 0x00, 0xba, 0x81, 0xdf, 0xa1, 0xd1, 0x16, 0xd5, 0x61, 0x4e, + 0xb7, 0x86, 0x4d, 0x5e, 0xa3, 0xe8, 0x29, 0xb7, 0x25, 0xb6, 0x5c, 0xc4, 0xa5, 0x68, 0x70, 0x24, + 0x01, 0x8c, 0x6f, 0x8b, 0x6d, 0x57, 0x6a, 0x21, 0xaf, 0xe6, 0xa2, 0x33, 0x49, 0xce, 0x3c, 0x3e, + 0x47, 0x16, 0xa1, 0x62, 0x44, 0x36, 0xa0, 0x70, 0x9f, 0x6e, 0xe4, 0x93, 0x39, 0xe1, 0x2e, 0x95, + 0xa7, 0x99, 0xda, 0xf8, 0xfe, 0xde, 0x5c, 0xe1, 0x2e, 0xdd, 0x40, 0x46, 0x9c, 0x7d, 0x57, 0x53, + 0xf8, 0x2e, 0xc8, 0xa5, 0xe2, 0xd5, 0x1c, 0x1d, 0x21, 0xc4, 0x77, 0xc9, 0x22, 0x54, 0x8c, 0xc8, + 0x9b, 0x50, 0xbe, 0xef, 0xec, 0xd0, 0xcd, 0xc0, 0xf7, 0x22, 0xe9, 0x2b, 0x37, 0x64, 0x70, 0xc9, + 0x5d, 0x45, 0x4e, 0xf2, 0xe5, 0xdb, 0xbb, 0x2e, 0xc4, 0x98, 0x1d, 0xd9, 0x81, 0x92, 0x47, 0xef, + 0x23, 0x6d, 0xbb, 0x8d, 0x7c, 0x82, 0x39, 0x6e, 0x49, 0x6a, 0x92, 0x33, 0xdf, 0xf7, 0x54, 0x19, + 0x6a, 0x5e, 0xac, 0x2f, 0xef, 0xf9, 0x1b, 0x72, 0xa1, 0x1a, 0xb2, 0x2f, 0xf5, 0xc9, 0x54, 0xf4, + 0xe5, 0x4d, 0x7f, 0x03, 0x19, 0x71, 0x36, 0x47, 0x1a, 0xda, 0x51, 0x4b, 0x2e, 0x53, 0xb7, 0xf2, + 0x75, 0x50, 0x13, 0x73, 0x24, 0x2e, 0x45, 0x83, 0x23, 0x6b, 0xdb, 0x96, 0x34, 0x56, 0xca, 0x85, + 0x6a, 0xc8, 0xb6, 0x4d, 0x9a, 0x3e, 0x45, 0xdb, 0xaa, 0x32, 0xd4, 0xbc, 0x18, 0x5f, 0x57, 0x5a, + 0xfe, 0xf2, 0x59, 0xaa, 0x92, 0x76, 0x44, 0xc1, 0x57, 0x95, 0xa1, 0xe6, 0xc5, 0xda, 0x3b, 0xdc, + 0xde, 0xbd, 0xef, 0xb4, 0xb7, 0x5d, 0xaf, 0x25, 0xc3, 0x76, 0x87, 0x0d, 0x73, 0xdb, 0xde, 0xbd, + 0x2b, 0xe8, 0x99, 0xed, 0x1d, 0x97, 0xa2, 0xc1, 0x91, 0xfc, 0x3d, 0x4b, 0x87, 0xe2, 0x4c, 0xe4, + 0xe1, 0xc4, 0x94, 0x5c, 0x72, 0x65, 0x64, 0x8e, 0x50, 0x14, 0x7f, 0x5a, 0xfb, 0x5d, 0xf2, 0xc2, + 0xaf, 0xfe, 0xe1, 0xdc, 0x0c, 0xf5, 0x1a, 0x7e, 0xd3, 0xf5, 0x5a, 0x0b, 0xf7, 0x42, 0xdf, 0x9b, + 0x47, 0xe7, 0xbe, 0xd2, 0xd1, 0xa5, 0x4c, 0xb3, 0x1f, 0x85, 0x8a, 0x41, 0xe2, 0x30, 0x45, 0x6f, + 0xc2, 0x54, 0xf4, 0x7e, 0x6b, 0x0c, 0x26, 0xcc, 0x3c, 0xa4, 0x47, 0xd0, 0xbe, 0xf4, 0x89, 0x63, + 0xe4, 0x38, 0x27, 0x0e, 0x76, 0xc4, 0x34, 0x2e, 0xb8, 0x94, 0x79, 0x6b, 0x39, 0x37, 0x85, 0x3b, + 0x3e, 0x62, 0x1a, 0x85, 0x21, 0x26, 0x98, 0x1e, 0xc3, 0xe7, 0x85, 0xa9, 0xad, 0x42, 0xb1, 0x2b, + 0x26, 0xd5, 0xd6, 0x84, 0xaa, 0x76, 0x15, 0x20, 0x4e, 0x98, 0x29, 0x2f, 0x3e, 0xb5, 0x3e, 0x6c, + 0x24, 0xf2, 0x34, 0xb0, 0xc8, 0xd3, 0x30, 0xc6, 0x54, 0x1f, 0xda, 0x94, 0x59, 0x05, 0xf4, 0x39, + 0xfe, 0x3a, 0x2f, 0x45, 0x09, 0x25, 0x2f, 0x32, 0x2d, 0x35, 0x56, 0x58, 0x64, 0xb2, 0x80, 0xf3, + 0xb1, 0x96, 0x1a, 0xc3, 0x30, 0x81, 0xc9, 0x44, 0xa7, 0x4c, 0xbf, 0xe0, 0x6b, 0x83, 0x21, 0x3a, + 0x57, 0x3a, 0x50, 0xc0, 0xb8, 0x5d, 0x29, 0xa5, 0x8f, 0xf0, 0x39, 0x5d, 0x34, 0xec, 0x4a, 0x29, + 0x38, 0xf6, 0xd5, 0x60, 0x1f, 0x23, 0xef, 0x6c, 0x2b, 0xc2, 0x61, 0x7a, 0xc0, 0x6d, 0xeb, 0x2f, + 0x9a, 0x67, 0xad, 0x1c, 0xe7, 0x90, 0x18, 0xb5, 0x47, 0x3f, 0x6c, 0x0d, 0x77, 0x2c, 0xfa, 0xb2, + 0x05, 0x93, 0xc9, 0x6d, 0x28, 0xef, 0xab, 0x0f, 0xf2, 0x97, 0x60, 0x3c, 0x72, 0x3b, 0xd4, 0xef, + 0x89, 0xc3, 0x76, 0x41, 0xec, 0xec, 0xeb, 0xa2, 0x08, 0x15, 0xcc, 0xfe, 0x87, 0x63, 0x70, 0xee, + 0x56, 0xcb, 0xf5, 0xd2, 0xb9, 0xe1, 0xb2, 0x1e, 0x82, 0xb0, 0x8e, 0xfd, 0x10, 0x84, 0x8e, 0xdd, + 0x93, 0xcf, 0x2c, 0x64, 0xc7, 0xee, 0xa9, 0x37, 0x2f, 0x92, 0xb8, 0xe4, 0x0f, 0x2c, 0x78, 0xd2, + 0x69, 0x8a, 0xf3, 0x83, 0xd3, 0x96, 0xa5, 0x46, 0xfe, 0x72, 0x39, 0xf3, 0xc3, 0x21, 0xb5, 0x81, + 0xfe, 0x8f, 0x9f, 0xaf, 0x1e, 0xc0, 0x55, 0x8c, 0x8c, 0x9f, 0x92, 0x5f, 0xf0, 0xe4, 0x41, 0xa8, + 0x78, 0xa0, 0xf8, 0xe4, 0xaf, 0xc2, 0x54, 0xe2, 0x83, 0xa5, 0xc5, 0xbc, 0x2c, 0x2e, 0x36, 0xea, + 0x49, 0x10, 0xa6, 0x71, 0xc9, 0xf7, 0x2d, 0x98, 0x11, 0xe6, 0xd9, 0x8c, 0xa6, 0x11, 0x37, 0xba, + 0x7e, 0xfe, 0x4d, 0xb3, 0x38, 0x80, 0xa3, 0x68, 0x96, 0xd8, 0x5e, 0x3b, 0x00, 0x0d, 0x07, 0x8a, + 0x3c, 0x7b, 0x1b, 0x3e, 0x70, 0x68, 0xbb, 0x1f, 0x2b, 0xdb, 0xfd, 0xab, 0x70, 0xf1, 0x40, 0x69, + 0x8f, 0x35, 0x63, 0xbf, 0x6b, 0xc1, 0x84, 0x99, 0xe3, 0x8a, 0x3c, 0x0b, 0xa5, 0xc8, 0xdf, 0xa6, + 0xde, 0x9d, 0x40, 0x79, 0x3d, 0xeb, 0xd5, 0x62, 0x9d, 0x97, 0xe3, 0x0a, 0x6a, 0x0c, 0x86, 0xdd, + 0x68, 0xbb, 0xd4, 0x8b, 0x96, 0x9b, 0x72, 0x0e, 0x68, 0xec, 0x45, 0x51, 0xbe, 0x84, 0x1a, 0x43, + 0x38, 0x2a, 0xb2, 0xdf, 0x75, 0xda, 0x08, 0xa8, 0x8a, 0x91, 0x30, 0x1c, 0x15, 0x63, 0x18, 0x26, + 0x30, 0x89, 0xad, 0xed, 0xc4, 0xa3, 0xf1, 0xe5, 0x50, 0xca, 0xae, 0xfb, 0x6d, 0x0b, 0xca, 0xe2, + 0x9e, 0x03, 0xe9, 0x66, 0xca, 0x4f, 0x39, 0x65, 0x89, 0xa9, 0xae, 0x2d, 0x67, 0xf9, 0x29, 0x5f, + 0x86, 0xd1, 0x6d, 0xd7, 0x53, 0x5f, 0xa2, 0xf7, 0xf6, 0x57, 0x5d, 0xaf, 0x89, 0x1c, 0xa2, 0x77, + 0xff, 0xc2, 0xc0, 0xdd, 0x7f, 0x01, 0xca, 0xda, 0x7b, 0x47, 0xee, 0xa1, 0xda, 0x04, 0xae, 0xbd, + 0x7d, 0x30, 0xc6, 0xb1, 0x7f, 0xc3, 0x82, 0x49, 0x1e, 0x76, 0x1f, 0x1b, 0x15, 0x5e, 0xd0, 0x0e, + 0x75, 0x42, 0xee, 0x8b, 0x49, 0x87, 0xba, 0x77, 0xf7, 0xe6, 0x2a, 0x22, 0x50, 0x3f, 0xe9, 0x5f, + 0xf7, 0x29, 0x69, 0x89, 0xe4, 0x6e, 0x7f, 0x23, 0xc7, 0x36, 0x94, 0xc5, 0x62, 0x2a, 0x22, 0x18, + 0xd3, 0xb3, 0xdf, 0x82, 0x09, 0x33, 0xa2, 0x8d, 0xbc, 0x00, 0x95, 0xae, 0xeb, 0xb5, 0x92, 0x91, + 0xcf, 0xfa, 0xb6, 0x66, 0x2d, 0x06, 0xa1, 0x89, 0xc7, 0xab, 0xf9, 0x71, 0xb5, 0xd4, 0x25, 0xcf, + 0x9a, 0x6f, 0x56, 0x8b, 0xff, 0xd8, 0x1e, 0x40, 0x1c, 0x9e, 0x7d, 0x24, 0x0b, 0xd8, 0x98, 0xb8, + 0x40, 0x11, 0x1a, 0x1d, 0x4f, 0xb5, 0x31, 0x26, 0x46, 0xf8, 0xbb, 0x7b, 0x07, 0x69, 0x8c, 0xa2, + 0x16, 0x7f, 0xc8, 0x23, 0x23, 0x52, 0x33, 0xf7, 0x87, 0x3c, 0x32, 0x78, 0xbc, 0x77, 0x0f, 0x79, + 0x64, 0x09, 0xf3, 0x67, 0xeb, 0x21, 0x8f, 0x4f, 0xc0, 0x71, 0x73, 0xfa, 0x32, 0x05, 0xed, 0xbe, + 0x99, 0x7b, 0x43, 0xb7, 0xb8, 0x4c, 0xbe, 0x21, 0xa1, 0xf6, 0xf7, 0x46, 0x61, 0x3a, 0x6d, 0xa7, + 0xc9, 0xdb, 0x05, 0x86, 0x7c, 0xcd, 0x82, 0x49, 0x27, 0x91, 0x3f, 0x31, 0xa7, 0x57, 0xc1, 0x12, + 0x34, 0x8d, 0xfc, 0x7d, 0x89, 0x72, 0x4c, 0xf1, 0x36, 0x75, 0xad, 0xd1, 0xc1, 0xba, 0x16, 0xdb, + 0x04, 0x5c, 0xae, 0xf6, 0x06, 0x54, 0xba, 0x73, 0x4f, 0xc7, 0xe6, 0x66, 0x51, 0x8e, 0x1a, 0x83, + 0x3c, 0x80, 0x71, 0xe1, 0x2c, 0xa3, 0xbc, 0xa2, 0x56, 0x73, 0xb2, 0x27, 0x09, 0x7f, 0x9c, 0xb8, + 0x0b, 0xc4, 0xff, 0x10, 0x15, 0x3b, 0xa6, 0x63, 0x43, 0xe0, 0x78, 0x2d, 0xca, 0xdb, 0x5c, 0x5a, + 0x40, 0x5e, 0xcf, 0xcb, 0x74, 0x87, 0x9a, 0x72, 0x35, 0x68, 0x85, 0x32, 0x32, 0x52, 0x97, 0xa1, + 0xc1, 0xd9, 0xfe, 0x15, 0x0b, 0x66, 0x06, 0x55, 0x64, 0x03, 0x85, 0xaf, 0xba, 0x72, 0x44, 0x19, + 0x09, 0x19, 0x9c, 0x20, 0x42, 0x01, 0x23, 0x17, 0xa1, 0x40, 0xf5, 0x46, 0xa5, 0xb3, 0x47, 0x5e, + 0xf3, 0x9a, 0xc8, 0xca, 0xc9, 0x55, 0x18, 0x0d, 0x23, 0xda, 0x4d, 0xc5, 0x3b, 0x8c, 0xb2, 0xc5, + 0x33, 0xc3, 0x60, 0xcf, 0x71, 0xed, 0x0f, 0xc3, 0x31, 0x53, 0x40, 0xdb, 0xd7, 0x80, 0xa0, 0xdf, + 0x6e, 0x6f, 0x38, 0x8d, 0xed, 0xbb, 0xae, 0xd7, 0xf4, 0xef, 0xf3, 0x8d, 0x61, 0x01, 0xca, 0x81, + 0x8c, 0x02, 0x0f, 0xe5, 0x9c, 0xd2, 0x3b, 0x8b, 0x0a, 0x0f, 0x0f, 0x31, 0xc6, 0xb1, 0xbf, 0x3f, + 0x02, 0xe3, 0x32, 0x65, 0xc1, 0x43, 0x08, 0xb6, 0xd9, 0x4e, 0xb8, 0x38, 0x2c, 0xe7, 0x92, 0x69, + 0x61, 0x60, 0xa4, 0x4d, 0x98, 0x8a, 0xb4, 0x79, 0x35, 0x1f, 0x76, 0x07, 0x87, 0xd9, 0x7c, 0xa7, + 0x08, 0x53, 0xa9, 0x14, 0x10, 0xa9, 0x6c, 0xf1, 0xd6, 0x7b, 0x92, 0x2d, 0x9e, 0x84, 0x89, 0x17, + 0x03, 0xf2, 0x73, 0xcd, 0xfd, 0x8b, 0xc7, 0x03, 0xf2, 0x72, 0x9a, 0x2e, 0xbe, 0x7f, 0x9c, 0xa6, + 0xff, 0x9b, 0x05, 0x8f, 0x0f, 0x4c, 0x64, 0xc2, 0x53, 0x02, 0x06, 0x49, 0xa8, 0x5c, 0x2f, 0x72, + 0x4e, 0x0e, 0xa5, 0xdd, 0x21, 0xd2, 0x59, 0xdc, 0xd2, 0xec, 0xc9, 0xf3, 0x30, 0xc1, 0xd7, 0x66, + 0xb6, 0x72, 0xb2, 0xb5, 0x57, 0xdc, 0xe6, 0xf2, 0x7b, 0xbd, 0xba, 0x51, 0x8e, 0x09, 0x2c, 0xfb, + 0x5b, 0x16, 0xcc, 0x0c, 0x4a, 0x10, 0x77, 0x04, 0x3d, 0xf7, 0xaf, 0xa4, 0x82, 0x95, 0xe6, 0xfa, + 0x82, 0x95, 0x52, 0xd6, 0x46, 0x15, 0x97, 0x64, 0x18, 0xfa, 0x0a, 0x87, 0xc4, 0xe2, 0xfc, 0x5e, + 0x01, 0xa6, 0xa5, 0x88, 0xf1, 0x11, 0xe5, 0xc5, 0x44, 0x88, 0xd5, 0x4f, 0xa5, 0x42, 0xac, 0xce, + 0xa7, 0xf1, 0xff, 0x22, 0xbe, 0xea, 0xfd, 0x15, 0x5f, 0xf5, 0xd5, 0x22, 0x5c, 0xc8, 0x4c, 0xc5, + 0x46, 0xbe, 0x92, 0xb1, 0x53, 0xdc, 0xcd, 0x39, 0xe7, 0x9b, 0x0e, 0xc5, 0x3e, 0xdd, 0xa0, 0xa4, + 0x5f, 0x33, 0x83, 0x81, 0xc4, 0xea, 0xbf, 0x79, 0x0a, 0xd9, 0xeb, 0x8e, 0x1b, 0x17, 0xf4, 0x70, + 0x5f, 0xd3, 0xfb, 0x33, 0xb0, 0xd4, 0x7f, 0xb5, 0x00, 0x57, 0x8e, 0xda, 0xb2, 0xef, 0xd3, 0x40, + 0xda, 0x30, 0x11, 0x48, 0xfb, 0x90, 0x54, 0x9b, 0x53, 0x89, 0xa9, 0xfd, 0x07, 0xa3, 0x7a, 0xdf, + 0xed, 0x9f, 0xb0, 0x47, 0xb2, 0xbc, 0x8c, 0x33, 0xd5, 0x57, 0xbd, 0x39, 0x10, 0xef, 0x0d, 0xe3, + 0x75, 0x51, 0xfc, 0xee, 0xde, 0xdc, 0xd9, 0x38, 0x67, 0x91, 0x2c, 0x44, 0x55, 0x89, 0x5c, 0x81, + 0x52, 0x20, 0xa0, 0x2a, 0x74, 0x50, 0x3a, 0x70, 0x89, 0x32, 0xd4, 0x50, 0xf2, 0x79, 0xe3, 0xac, + 0x30, 0x7a, 0x5a, 0xa9, 0xb9, 0x0e, 0xf2, 0x4b, 0x7b, 0x03, 0x4a, 0xa1, 0x4a, 0x8c, 0x2f, 0xa6, + 0xd3, 0x73, 0x47, 0x8c, 0x48, 0x75, 0x36, 0x68, 0x5b, 0x65, 0xc9, 0x17, 0xdf, 0xa7, 0x73, 0xe8, + 0x6b, 0x92, 0xc4, 0xd6, 0x96, 0x09, 0x71, 0x6f, 0x06, 0xfd, 0x56, 0x09, 0x12, 0xc1, 0xb8, 0x7c, + 0x1d, 0x5b, 0x1e, 0x67, 0x57, 0x73, 0x0a, 0xed, 0x92, 0x8e, 0xff, 0xfc, 0xc0, 0xaf, 0x2c, 0x72, + 0x8a, 0x95, 0xfd, 0x43, 0x0b, 0x2a, 0x72, 0x8c, 0x3c, 0x84, 0xd0, 0xdc, 0x7b, 0xc9, 0xd0, 0xdc, + 0x6b, 0xb9, 0x2c, 0xe1, 0x03, 0xe2, 0x72, 0xef, 0xc1, 0x84, 0x99, 0x14, 0x95, 0x7c, 0xd2, 0xd8, + 0x82, 0xac, 0x61, 0x12, 0xff, 0xa9, 0x4d, 0x2a, 0xde, 0x9e, 0xec, 0x7f, 0x5a, 0xd6, 0xad, 0xc8, + 0x0f, 0xce, 0xe6, 0xc8, 0xb7, 0x0e, 0x1c, 0xf9, 0xe6, 0xc0, 0x1b, 0xc9, 0x7f, 0xe0, 0xbd, 0x06, + 0x25, 0xb5, 0x2c, 0x4a, 0x6d, 0xea, 0x29, 0x33, 0x12, 0x80, 0xa9, 0x64, 0x8c, 0x98, 0x31, 0x5d, + 0xf8, 0x01, 0x38, 0xbe, 0x27, 0x50, 0xcb, 0xb5, 0x26, 0x43, 0xde, 0x84, 0xca, 0x7d, 0x3f, 0xd8, + 0x6e, 0xfb, 0x0e, 0x7f, 0x8d, 0x04, 0xf2, 0x70, 0x3e, 0xd1, 0xb6, 0x7e, 0x11, 0x8e, 0x75, 0x37, + 0xa6, 0x8f, 0x26, 0x33, 0x52, 0x85, 0xa9, 0x8e, 0xeb, 0x21, 0x75, 0x9a, 0x3a, 0x02, 0x77, 0x54, + 0xbc, 0x04, 0xa0, 0x74, 0xfb, 0xd5, 0x24, 0x18, 0xd3, 0xf8, 0xdc, 0x2e, 0x17, 0x24, 0x4c, 0x1d, + 0x32, 0xdd, 0xf7, 0xda, 0xf0, 0x83, 0x31, 0x69, 0x3e, 0x11, 0xf1, 0x48, 0xc9, 0x72, 0x4c, 0xf1, + 0x26, 0x9f, 0x83, 0x52, 0xa8, 0xde, 0x9d, 0x2d, 0xe6, 0x78, 0xea, 0xd1, 0x6f, 0xcf, 0xea, 0xae, + 0xd4, 0x8f, 0xcf, 0x6a, 0x86, 0x64, 0x05, 0xce, 0x2b, 0xdb, 0x4d, 0xe2, 0x09, 0xcd, 0xb1, 0x38, + 0x65, 0x1d, 0x66, 0xc0, 0x31, 0xb3, 0x16, 0xd3, 0x6d, 0x79, 0xb2, 0x61, 0x71, 0xd9, 0x6f, 0xdc, + 0x8f, 0xf3, 0xf9, 0xd7, 0x44, 0x09, 0x3d, 0x28, 0xc0, 0xbc, 0x34, 0x44, 0x80, 0x79, 0x1d, 0x2e, + 0xa4, 0x41, 0x3c, 0x17, 0x21, 0x4f, 0x7f, 0x68, 0x6c, 0xa1, 0x6b, 0x59, 0x48, 0x98, 0x5d, 0x97, + 0xdc, 0x85, 0x72, 0x40, 0xf9, 0x29, 0xaf, 0xaa, 0xfc, 0x24, 0x8f, 0xed, 0x11, 0x8e, 0x8a, 0x00, + 0xc6, 0xb4, 0x58, 0xbf, 0x3b, 0xc9, 0xdc, 0xfc, 0xaf, 0xe5, 0xf8, 0x30, 0xbd, 0xec, 0xfb, 0x01, + 0x39, 0x42, 0xed, 0x7f, 0x3f, 0x05, 0x67, 0x12, 0x06, 0x28, 0xf2, 0x14, 0x14, 0x79, 0x72, 0x46, + 0xbe, 0x5a, 0x95, 0xe2, 0x15, 0x55, 0x34, 0x8e, 0x80, 0x91, 0x5f, 0xb6, 0x60, 0xaa, 0x9b, 0xb8, + 0xde, 0x52, 0x0b, 0xf9, 0x90, 0x36, 0xed, 0xe4, 0x9d, 0x99, 0xf1, 0xaa, 0x4d, 0x92, 0x19, 0xa6, + 0xb9, 0xb3, 0xf5, 0x40, 0x86, 0x55, 0xb4, 0x69, 0xc0, 0xb1, 0xa5, 0xa2, 0xa7, 0x49, 0x2c, 0x26, + 0xc1, 0x98, 0xc6, 0x67, 0x3d, 0xcc, 0xbf, 0x6e, 0x98, 0xc7, 0x87, 0xab, 0x8a, 0x00, 0xc6, 0xb4, + 0xc8, 0xcb, 0x30, 0x29, 0x53, 0xb2, 0xaf, 0xf9, 0xcd, 0x1b, 0x4e, 0xb8, 0x25, 0x8f, 0x7c, 0xfa, + 0x88, 0xba, 0x98, 0x80, 0x62, 0x0a, 0x9b, 0x7f, 0x5b, 0x9c, 0xf7, 0x9e, 0x13, 0x18, 0x4b, 0x3e, + 0xfa, 0xb3, 0x98, 0x04, 0x63, 0x1a, 0x9f, 0x3c, 0x6b, 0x6c, 0x43, 0xc2, 0x01, 0x47, 0xaf, 0x06, + 0x19, 0x5b, 0x51, 0x15, 0xa6, 0x7a, 0xfc, 0x84, 0xdc, 0x54, 0x40, 0x39, 0x1f, 0x35, 0xc3, 0x3b, + 0x49, 0x30, 0xa6, 0xf1, 0xc9, 0x4b, 0x70, 0x26, 0x60, 0x8b, 0xad, 0x26, 0x20, 0xbc, 0x72, 0xb4, + 0x33, 0x05, 0x9a, 0x40, 0x4c, 0xe2, 0x92, 0x57, 0xe0, 0x6c, 0x9c, 0xb6, 0x57, 0x11, 0x10, 0x6e, + 0x3a, 0x3a, 0x87, 0x64, 0x35, 0x8d, 0x80, 0xfd, 0x75, 0xc8, 0x5f, 0x87, 0x69, 0xa3, 0x25, 0x96, + 0xbd, 0x26, 0x7d, 0x20, 0x53, 0xab, 0xf2, 0x47, 0xec, 0x16, 0x53, 0x30, 0xec, 0xc3, 0x26, 0x1f, + 0x83, 0xc9, 0x86, 0xdf, 0x6e, 0xf3, 0x35, 0x4e, 0x3c, 0x38, 0x23, 0x72, 0xa8, 0x8a, 0x6c, 0xb3, + 0x09, 0x08, 0xa6, 0x30, 0xc9, 0x4d, 0x20, 0xfe, 0x06, 0x53, 0xaf, 0x68, 0xf3, 0x15, 0xea, 0x51, + 0xa9, 0x71, 0x9c, 0x49, 0x06, 0x75, 0xdd, 0xee, 0xc3, 0xc0, 0x8c, 0x5a, 0x3c, 0x05, 0xa5, 0x11, + 0x04, 0x3f, 0x99, 0x47, 0xd2, 0xfb, 0xb4, 0x3d, 0xe7, 0xd0, 0x08, 0xf8, 0x00, 0xc6, 0x84, 0x47, + 0x44, 0x3e, 0xc9, 0x54, 0xcd, 0xb7, 0x27, 0xe2, 0x3d, 0x42, 0x94, 0xa2, 0xe4, 0x44, 0x7e, 0x01, + 0xca, 0x1b, 0xea, 0x21, 0x22, 0x9e, 0x41, 0x75, 0xe8, 0x7d, 0x31, 0xf5, 0xa6, 0x56, 0x6c, 0xaf, + 0xd0, 0x00, 0x8c, 0x59, 0x92, 0xa7, 0xa1, 0x72, 0x63, 0xad, 0xaa, 0x47, 0xe1, 0x59, 0xde, 0xfb, + 0xa3, 0xac, 0x0a, 0x9a, 0x00, 0x36, 0xc3, 0xb4, 0xfa, 0x46, 0x92, 0x4e, 0x13, 0x19, 0xda, 0x18, + 0xc3, 0xe6, 0x2e, 0x32, 0x58, 0x9f, 0x39, 0x97, 0xc2, 0x96, 0xe5, 0xa8, 0x31, 0xc8, 0x1b, 0x50, + 0x91, 0xfb, 0x05, 0x5f, 0x9b, 0xce, 0x9f, 0x2c, 0xc1, 0x02, 0xc6, 0x24, 0xd0, 0xa4, 0xc7, 0xaf, + 0xef, 0xf9, 0xfb, 0x2c, 0xf4, 0x7a, 0xaf, 0xdd, 0x9e, 0xb9, 0xc0, 0xd7, 0xcd, 0xf8, 0xfa, 0x3e, + 0x06, 0xa1, 0x89, 0x47, 0x9e, 0x53, 0x2e, 0x91, 0x8f, 0x26, 0xfc, 0x19, 0xb4, 0x4b, 0xa4, 0x56, + 0xba, 0x07, 0xc4, 0x60, 0x3d, 0x76, 0x88, 0x2f, 0xe2, 0x06, 0xcc, 0x2a, 0x8d, 0xaf, 0x7f, 0x92, + 0xcc, 0xcc, 0x24, 0x6c, 0x47, 0xb3, 0x77, 0x07, 0x62, 0xe2, 0x01, 0x54, 0xc8, 0x06, 0x14, 0x9c, + 0xf6, 0xc6, 0xcc, 0xe3, 0x79, 0xa8, 0xae, 0xd5, 0x95, 0x9a, 0x1c, 0x51, 0xdc, 0x6f, 0xba, 0xba, + 0x52, 0x43, 0x46, 0x9c, 0xb8, 0x30, 0xea, 0xb4, 0x37, 0xc2, 0x99, 0x59, 0x3e, 0x67, 0x73, 0x63, + 0x12, 0x1b, 0x0f, 0x56, 0x6a, 0x21, 0x72, 0x16, 0xf6, 0x17, 0x46, 0xf4, 0x2d, 0x91, 0xce, 0x67, + 0xff, 0x96, 0x39, 0x81, 0xc4, 0x71, 0xe7, 0x76, 0x6e, 0x13, 0x48, 0xaa, 0x17, 0x67, 0x06, 0x4e, + 0x9f, 0xae, 0x5e, 0x32, 0x72, 0x49, 0x84, 0x97, 0xcc, 0xd5, 0x2f, 0x4e, 0xcf, 0xc9, 0x05, 0xc3, + 0xfe, 0x62, 0x45, 0x5b, 0x41, 0x53, 0x6e, 0x82, 0x01, 0x14, 0xdd, 0x30, 0x72, 0xfd, 0x1c, 0xf3, + 0x0e, 0xa4, 0x92, 0xdc, 0xf3, 0xb0, 0x26, 0x0e, 0x40, 0xc1, 0x8a, 0xf1, 0xf4, 0x5a, 0xae, 0xf7, + 0x40, 0x7e, 0xfe, 0x6b, 0xb9, 0x3b, 0xb9, 0x09, 0x9e, 0x1c, 0x80, 0x82, 0x15, 0xb9, 0x27, 0x06, + 0x75, 0x21, 0x8f, 0xbe, 0xae, 0xae, 0xd4, 0x52, 0xfc, 0x92, 0x83, 0xfb, 0x1e, 0x14, 0xc2, 0x8e, + 0x2b, 0xd5, 0xa5, 0x21, 0x79, 0xd5, 0x57, 0x97, 0xb3, 0x78, 0xd5, 0x57, 0x97, 0x91, 0x31, 0xe1, + 0x57, 0xfd, 0x4e, 0x67, 0xc3, 0x09, 0x43, 0xa7, 0xa9, 0xad, 0x33, 0x43, 0x5e, 0xf5, 0x57, 0x35, + 0xbd, 0x14, 0x6b, 0x7e, 0xd5, 0x1f, 0x43, 0xd1, 0xe0, 0x4c, 0xde, 0x84, 0x71, 0x47, 0x3c, 0x94, + 0x2a, 0x83, 0x3c, 0xf2, 0x79, 0xfd, 0x37, 0x25, 0x01, 0x37, 0xd3, 0x48, 0x10, 0x2a, 0x86, 0x8c, + 0x77, 0x14, 0x38, 0x74, 0xd3, 0xdd, 0x96, 0xc6, 0xa1, 0xfa, 0xd0, 0x4f, 0xf9, 0x30, 0x62, 0x59, + 0xbc, 0x25, 0x08, 0x15, 0x43, 0xf2, 0x65, 0x0b, 0xce, 0x74, 0x1c, 0xcf, 0xd1, 0xa1, 0xbb, 0xf9, + 0x04, 0x78, 0x9b, 0xc1, 0xc0, 0xb1, 0x86, 0xb8, 0x6a, 0x32, 0xc2, 0x24, 0x5f, 0xb2, 0x03, 0x63, + 0x0e, 0x7f, 0xc2, 0x59, 0x1e, 0xc5, 0x30, 0x8f, 0xe7, 0xa0, 0x53, 0x6d, 0xc0, 0x17, 0x17, 0xf9, + 0x50, 0xb4, 0xe4, 0x46, 0x7e, 0xd3, 0x82, 0x71, 0x11, 0x7f, 0xc0, 0x14, 0x52, 0xf6, 0xed, 0x9f, + 0x39, 0x85, 0xc7, 0x32, 0x64, 0x6c, 0x84, 0x74, 0xce, 0xfa, 0xa0, 0xf6, 0xad, 0x16, 0xa5, 0x07, + 0x46, 0x47, 0x28, 0xe9, 0x98, 0xea, 0xdb, 0x71, 0x1e, 0x24, 0x1e, 0x6a, 0x32, 0x55, 0xdf, 0xd5, + 0x14, 0x0c, 0xfb, 0xb0, 0x67, 0x3f, 0x06, 0x13, 0xa6, 0x1c, 0xc7, 0x8a, 0xb0, 0xf8, 0x71, 0x01, + 0x80, 0x77, 0x95, 0x48, 0xf7, 0xd3, 0xe1, 0xb9, 0xc1, 0xb7, 0xfc, 0x66, 0x4e, 0x0f, 0xc6, 0x1a, + 0x59, 0x7b, 0x40, 0x26, 0x02, 0xdf, 0xf2, 0x9b, 0x28, 0x99, 0x90, 0x16, 0x8c, 0x76, 0x9d, 0x68, + 0x2b, 0xff, 0x14, 0x41, 0x25, 0x11, 0xf7, 0x1e, 0x6d, 0x21, 0x67, 0x40, 0xde, 0xb6, 0x62, 0xbf, + 0xa7, 0x42, 0x1e, 0xe9, 0x8d, 0xe3, 0x36, 0x9b, 0x97, 0x9e, 0x4e, 0xa9, 0x2c, 0xbf, 0x69, 0xff, + 0xa7, 0xd9, 0x77, 0x2c, 0x98, 0x30, 0x51, 0x33, 0xba, 0xe9, 0xe7, 0xcd, 0x6e, 0xca, 0xb3, 0x3d, + 0xcc, 0x1e, 0xff, 0x1f, 0x16, 0x00, 0xf6, 0xbc, 0x7a, 0xaf, 0xd3, 0x61, 0x6a, 0xbb, 0x0e, 0x24, + 0xb1, 0x8e, 0x1c, 0x48, 0x32, 0x72, 0xcc, 0x40, 0x92, 0xc2, 0xb1, 0x02, 0x49, 0x46, 0x8f, 0x1f, + 0x48, 0x52, 0x1c, 0x1c, 0x48, 0x62, 0x7f, 0xc3, 0x82, 0xb3, 0x7d, 0xfb, 0x15, 0xd3, 0xa4, 0x03, + 0xdf, 0x8f, 0x06, 0xf8, 0xcf, 0x62, 0x0c, 0x42, 0x13, 0x8f, 0x2c, 0xc1, 0xb4, 0x7c, 0x09, 0xa7, + 0xde, 0x6d, 0xbb, 0x99, 0xe9, 0x9b, 0xd6, 0x53, 0x70, 0xec, 0xab, 0x61, 0xff, 0x6b, 0x0b, 0x2a, + 0x46, 0xd2, 0x07, 0xee, 0x73, 0xc6, 0x6f, 0xbc, 0xd2, 0x3e, 0x67, 0xfc, 0xaa, 0x4b, 0xc0, 0xc4, + 0x35, 0x74, 0xcb, 0x78, 0x27, 0x21, 0xbe, 0x86, 0x66, 0xa5, 0x28, 0xa1, 0x22, 0x03, 0xbe, 0x74, + 0x3e, 0x2b, 0x98, 0x19, 0xf0, 0x69, 0x57, 0xb8, 0x9a, 0xc5, 0x2e, 0x6e, 0xa3, 0x87, 0xbb, 0xb8, + 0x15, 0xb3, 0x5d, 0xdc, 0xec, 0xdb, 0x30, 0x21, 0x7c, 0xc3, 0x5f, 0xa5, 0xbb, 0x47, 0x7e, 0x71, + 0x99, 0x8d, 0xf6, 0x94, 0xcf, 0x1c, 0xab, 0xce, 0xca, 0xed, 0x7f, 0x62, 0x41, 0xea, 0x19, 0x2e, + 0xe3, 0x06, 0xc6, 0x1a, 0x78, 0x03, 0x63, 0x5a, 0xed, 0x47, 0x0e, 0xb4, 0xda, 0xdf, 0x04, 0xd2, + 0x61, 0x53, 0x21, 0xb9, 0xd0, 0x16, 0x92, 0xaf, 0x95, 0xac, 0xf6, 0x61, 0x60, 0x46, 0x2d, 0xfb, + 0x1f, 0x0b, 0x61, 0xcd, 0x87, 0xb9, 0x0e, 0x6f, 0x80, 0x1e, 0x14, 0x39, 0x29, 0x69, 0x7f, 0x1b, + 0xd2, 0x76, 0xdd, 0x9f, 0xaa, 0x2d, 0xee, 0x48, 0x39, 0xe5, 0x39, 0x37, 0xfb, 0xf7, 0x84, 0xac, + 0xe6, 0xcb, 0x5d, 0x87, 0xcb, 0xda, 0x49, 0xca, 0x7a, 0x23, 0xaf, 0xb5, 0x32, 0x5b, 0x46, 0x32, + 0x0f, 0xd0, 0xa5, 0x41, 0x83, 0x7a, 0x91, 0x0a, 0x7d, 0x2b, 0xca, 0x20, 0x6c, 0x5d, 0x8a, 0x06, + 0x86, 0xfd, 0x75, 0x36, 0x81, 0xe2, 0xb7, 0xc8, 0xc9, 0x95, 0xb4, 0x23, 0x70, 0x7a, 0x72, 0x68, + 0x3f, 0x60, 0x23, 0x1e, 0x6a, 0xe4, 0x90, 0x78, 0xa8, 0x67, 0x60, 0x3c, 0xf0, 0xdb, 0xb4, 0x1a, + 0x78, 0x69, 0x1f, 0x1d, 0x64, 0xc5, 0x78, 0x0b, 0x15, 0xdc, 0xfe, 0x75, 0x0b, 0xa6, 0xd3, 0x11, + 0x9b, 0xb9, 0x7b, 0x27, 0x9b, 0x69, 0x25, 0x0a, 0xc7, 0x4f, 0x2b, 0x61, 0xff, 0x49, 0x11, 0xa6, + 0xd3, 0x6f, 0x24, 0x32, 0xce, 0x2e, 0x37, 0xb6, 0xa5, 0x56, 0x7f, 0x61, 0x65, 0x13, 0x30, 0x3d, + 0x5e, 0x46, 0x06, 0x8e, 0x97, 0xeb, 0x50, 0xf6, 0xbb, 0xea, 0xc0, 0x2f, 0x84, 0xbb, 0xa2, 0x8c, + 0x35, 0xb7, 0x15, 0xe0, 0xdd, 0xbd, 0xb9, 0x73, 0xb1, 0x00, 0xba, 0x18, 0xe3, 0xaa, 0xe4, 0x67, + 0x94, 0xa5, 0x62, 0x34, 0x91, 0xa8, 0x49, 0x5b, 0x2a, 0xa6, 0xe2, 0xfa, 0x83, 0x8c, 0x15, 0xc5, + 0xe3, 0x24, 0x8c, 0x19, 0xcb, 0x31, 0x61, 0xcc, 0x5d, 0x28, 0x4b, 0xdb, 0xea, 0x89, 0x12, 0xa5, + 0x70, 0xc2, 0x77, 0x14, 0x01, 0x8c, 0x69, 0xa5, 0x32, 0xd1, 0x94, 0x72, 0xcd, 0x44, 0xf3, 0x12, + 0x8c, 0x6f, 0x38, 0x8d, 0x6d, 0x7f, 0x73, 0x93, 0xeb, 0xe7, 0xe5, 0xda, 0x07, 0x54, 0xc3, 0xd5, + 0x44, 0x71, 0xc6, 0x90, 0x52, 0x35, 0x98, 0x56, 0x40, 0x95, 0x3b, 0xb2, 0x32, 0xfb, 0x6a, 0xad, + 0x40, 0x3b, 0x2a, 0x87, 0x68, 0x60, 0x91, 0x67, 0xa1, 0xd4, 0x74, 0x43, 0xf1, 0x8a, 0x77, 0x25, + 0xe9, 0xad, 0xbe, 0x24, 0xcb, 0x51, 0x63, 0x90, 0x97, 0xb5, 0xb7, 0xda, 0x44, 0x1c, 0x48, 0xa2, + 0x3d, 0xd5, 0x0e, 0x08, 0x24, 0x91, 0xce, 0xb8, 0x6f, 0xb3, 0x89, 0x19, 0xb9, 0x8d, 0x6d, 0xd7, + 0x13, 0xd9, 0x47, 0xd8, 0x6a, 0xf1, 0x0c, 0x8c, 0x53, 0xf9, 0x8e, 0xb8, 0xb8, 0x3a, 0xd1, 0x83, + 0x45, 0x3d, 0x1f, 0xae, 0xe0, 0xa4, 0x0a, 0x53, 0xea, 0xc2, 0x58, 0xdd, 0x77, 0x89, 0xac, 0x49, + 0xda, 0xbe, 0xbe, 0x94, 0x04, 0x63, 0x1a, 0xdf, 0xfe, 0x3c, 0x54, 0x0c, 0x45, 0x8c, 0xeb, 0x2c, + 0x0f, 0x9c, 0x46, 0x9f, 0x7f, 0xf9, 0x35, 0x56, 0x88, 0x02, 0xc6, 0xaf, 0xe5, 0x44, 0x70, 0x64, + 0x6a, 0xaf, 0x97, 0x21, 0x91, 0x12, 0xca, 0x88, 0x05, 0xb4, 0x45, 0x1f, 0xa8, 0xa7, 0x5b, 0x14, + 0x31, 0x64, 0x85, 0x28, 0x60, 0xf6, 0xb3, 0x50, 0x52, 0xb9, 0xed, 0x78, 0x82, 0x28, 0x75, 0x65, + 0x64, 0x26, 0x88, 0xf2, 0x83, 0x08, 0x39, 0xc4, 0x7e, 0x1d, 0x4a, 0x2a, 0x05, 0xdf, 0xe1, 0xd8, + 0x6c, 0xfb, 0x0d, 0x3d, 0xf7, 0x86, 0x1f, 0x46, 0x2a, 0x6f, 0xa0, 0xb8, 0xd5, 0xbe, 0xb5, 0xcc, + 0xcb, 0x50, 0x43, 0xed, 0x3f, 0xb5, 0xa0, 0xb2, 0xbe, 0xbe, 0xa2, 0x8d, 0x5d, 0x08, 0x8f, 0x86, + 0xa2, 0x85, 0xaa, 0x9b, 0x11, 0x35, 0xdd, 0x67, 0xc4, 0x4a, 0x34, 0xbb, 0xbf, 0x37, 0xf7, 0x68, + 0x3d, 0x13, 0x03, 0x07, 0xd4, 0x24, 0xcb, 0x70, 0xce, 0x84, 0xc8, 0x7c, 0x2e, 0x52, 0x2f, 0xe0, + 0x0f, 0xcf, 0xd7, 0xfb, 0xc1, 0x98, 0x55, 0x27, 0x4d, 0x4a, 0xaa, 0xb8, 0xe6, 0x1b, 0xf6, 0xf5, + 0x7e, 0x30, 0x66, 0xd5, 0xb1, 0x9f, 0x83, 0xa9, 0x94, 0x5f, 0xc7, 0x11, 0xf2, 0x68, 0xfd, 0x6e, + 0x01, 0x26, 0xcc, 0xeb, 0xfd, 0x23, 0xec, 0xd9, 0x47, 0x57, 0x85, 0x32, 0xae, 0xe4, 0x0b, 0xc7, + 0xbc, 0x92, 0x37, 0x7d, 0x20, 0x46, 0x4f, 0xd7, 0x07, 0xa2, 0x98, 0x8f, 0x0f, 0x84, 0xe1, 0xab, + 0x33, 0xf6, 0xf0, 0x7c, 0x75, 0x7e, 0xa7, 0x08, 0x93, 0xc9, 0xc4, 0xcc, 0x47, 0xe8, 0xc9, 0x67, + 0xfb, 0x7a, 0xf2, 0x98, 0x77, 0x80, 0x85, 0x61, 0xef, 0x00, 0x47, 0x87, 0xbd, 0x03, 0x2c, 0x9e, + 0xe0, 0x0e, 0xb0, 0xff, 0x06, 0x6f, 0xec, 0xc8, 0x37, 0x78, 0x1f, 0xd7, 0x1b, 0xc5, 0x78, 0xc2, + 0xed, 0x2d, 0xde, 0x2c, 0x48, 0xb2, 0x1b, 0x16, 0xfd, 0x66, 0xa6, 0x3b, 0x76, 0xe9, 0x10, 0xf5, + 0x21, 0xc8, 0xf4, 0x42, 0x3e, 0xbe, 0x9b, 0xc1, 0xa3, 0xc7, 0xf0, 0x40, 0x7e, 0x01, 0x2a, 0x72, + 0x3c, 0xf1, 0x03, 0x27, 0x24, 0x0f, 0xab, 0xf5, 0x18, 0x84, 0x26, 0x1e, 0x1b, 0x18, 0xdd, 0x78, + 0x82, 0xf0, 0xdb, 0xe8, 0x4a, 0xf2, 0x36, 0x7a, 0x2d, 0x09, 0xc6, 0x34, 0xbe, 0xfd, 0x39, 0xb8, + 0x90, 0x69, 0x76, 0xe4, 0x57, 0x3e, 0xfc, 0x2c, 0x44, 0x9b, 0x12, 0xc1, 0x10, 0x23, 0xf5, 0x5e, + 0xd3, 0xec, 0xdd, 0x81, 0x98, 0x78, 0x00, 0x15, 0xfb, 0xb7, 0x0b, 0x30, 0x99, 0x7c, 0xbf, 0x9c, + 0xdc, 0xd7, 0x97, 0x14, 0xb9, 0xdc, 0x8f, 0x08, 0xb2, 0x46, 0xb2, 0xdf, 0x81, 0x97, 0x9b, 0xf7, + 0xf9, 0xf8, 0xda, 0xd0, 0x99, 0x87, 0x4f, 0x8f, 0xb1, 0xbc, 0x55, 0x94, 0xec, 0xf8, 0x2b, 0xe0, + 0x71, 0xbc, 0xbf, 0xb4, 0x5d, 0xe5, 0xce, 0x3d, 0x0e, 0xcd, 0xd6, 0xac, 0xd0, 0x60, 0xcb, 0xf6, + 0x96, 0x1d, 0x1a, 0xb8, 0x9b, 0x2e, 0x6d, 0xca, 0x87, 0x20, 0xf8, 0xca, 0xfd, 0xba, 0x2c, 0x43, + 0x0d, 0xb5, 0xdf, 0x1e, 0x81, 0x32, 0x4f, 0x63, 0x78, 0x3d, 0xf0, 0x3b, 0xfc, 0x65, 0xdb, 0xd0, + 0xb0, 0x13, 0xc8, 0x6e, 0xbb, 0x39, 0xec, 0x63, 0xd5, 0x31, 0x45, 0x19, 0xe2, 0x61, 0x94, 0x60, + 0x82, 0x23, 0xe9, 0x42, 0x69, 0x53, 0xa6, 0x5d, 0x97, 0x7d, 0x37, 0x64, 0xea, 0x60, 0x95, 0xc4, + 0x5d, 0x34, 0x81, 0xfa, 0x87, 0x9a, 0x8b, 0xed, 0xc0, 0x54, 0x2a, 0x0f, 0x55, 0xee, 0xc9, 0xda, + 0xff, 0xd7, 0x28, 0x94, 0x75, 0xe4, 0x25, 0xf9, 0x68, 0xc2, 0x68, 0x1b, 0xeb, 0xf0, 0xd2, 0xda, + 0xca, 0xce, 0x4d, 0x1a, 0x39, 0x65, 0x80, 0xbd, 0x08, 0x85, 0x5e, 0xd0, 0x4e, 0x5b, 0x65, 0xee, + 0xe0, 0x0a, 0xb2, 0x72, 0x33, 0x5a, 0xb4, 0xf0, 0x70, 0xa3, 0x45, 0x2f, 0xc3, 0xe8, 0x86, 0xdf, + 0xdc, 0x4d, 0x3f, 0xd3, 0x58, 0xf3, 0x9b, 0xbb, 0xc8, 0x21, 0xe4, 0x65, 0x98, 0x94, 0x21, 0xb0, + 0x4a, 0x89, 0x29, 0x72, 0x3d, 0x55, 0x3b, 0xeb, 0xac, 0x27, 0xa0, 0x98, 0xc2, 0x66, 0xbb, 0x2c, + 0x3b, 0x36, 0xf0, 0x14, 0xfc, 0x63, 0xc9, 0x9b, 0xfd, 0x9b, 0xf5, 0xdb, 0xb7, 0xb8, 0xf1, 0x58, + 0x63, 0x24, 0xa2, 0x6c, 0xc7, 0x0f, 0x8d, 0xb2, 0x5d, 0x12, 0xb4, 0x99, 0xb4, 0x7c, 0x47, 0x99, + 0xa8, 0x5d, 0x51, 0x74, 0x59, 0xd9, 0x81, 0x67, 0x17, 0x5d, 0x33, 0x2b, 0x1e, 0xb9, 0xfc, 0xde, + 0xc5, 0x23, 0xdb, 0x77, 0x60, 0x2a, 0xd5, 0x7f, 0xca, 0xa8, 0x67, 0x65, 0x1b, 0xf5, 0x8e, 0xf6, + 0xd0, 0xe3, 0x3f, 0xb7, 0xe0, 0x6c, 0xdf, 0x8a, 0x74, 0xd4, 0xc0, 0xf0, 0xf4, 0xde, 0x38, 0x72, + 0xf2, 0xbd, 0xb1, 0x70, 0xbc, 0xbd, 0xb1, 0xb6, 0xf1, 0xdd, 0x1f, 0x5d, 0x7a, 0xe4, 0x07, 0x3f, + 0xba, 0xf4, 0xc8, 0xef, 0xff, 0xe8, 0xd2, 0x23, 0x6f, 0xef, 0x5f, 0xb2, 0xbe, 0xbb, 0x7f, 0xc9, + 0xfa, 0xc1, 0xfe, 0x25, 0xeb, 0xf7, 0xf7, 0x2f, 0x59, 0xff, 0x75, 0xff, 0x92, 0xf5, 0x8d, 0x3f, + 0xba, 0xf4, 0xc8, 0x27, 0x3f, 0x1e, 0xf7, 0xd4, 0x82, 0xea, 0x29, 0xfe, 0xe3, 0x43, 0xaa, 0x5f, + 0x16, 0xba, 0xdb, 0xad, 0x05, 0xd6, 0x53, 0x0b, 0xba, 0x44, 0xf5, 0xd4, 0xff, 0x0b, 0x00, 0x00, + 0xff, 0xff, 0x4e, 0x36, 0xf6, 0x90, 0xb2, 0xad, 0x00, 0x00, } func (m *ALBStatus) Marshal() (dAtA []byte, err error) { @@ -7801,6 +7801,11 @@ func (m *NewRelicMetric) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Timeout != nil { + i = encodeVarintGenerated(dAtA, i, uint64(*m.Timeout)) + i-- + dAtA[i] = 0x18 + } i -= len(m.Query) copy(dAtA[i:], m.Query) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Query))) @@ -12163,6 +12168,9 @@ func (m *NewRelicMetric) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = len(m.Query) n += 1 + l + sovGenerated(uint64(l)) + if m.Timeout != nil { + n += 1 + sovGenerated(uint64(*m.Timeout)) + } return n } @@ -14300,6 +14308,7 @@ func (this *NewRelicMetric) String() string { s := strings.Join([]string{`&NewRelicMetric{`, `Profile:` + fmt.Sprintf("%v", this.Profile) + `,`, `Query:` + fmt.Sprintf("%v", this.Query) + `,`, + `Timeout:` + valueToStringGenerated(this.Timeout) + `,`, `}`, }, "") return s @@ -27128,6 +27137,26 @@ func (m *NewRelicMetric) Unmarshal(dAtA []byte) error { } m.Query = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Timeout", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Timeout = &v default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/rollouts/v1alpha1/generated.proto b/pkg/apis/rollouts/v1alpha1/generated.proto index 624c985c21..1f69804e81 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.proto +++ b/pkg/apis/rollouts/v1alpha1/generated.proto @@ -1118,6 +1118,10 @@ message NewRelicMetric { // Query is a raw newrelic NRQL query to perform optional string query = 2; + + // Timeout represents the duration limit in seconds that will apply to the NRQL query + // +optional + optional int64 timeout = 3; } // NginxTrafficRouting configuration for Nginx ingress controller to control traffic routing diff --git a/pkg/apis/rollouts/v1alpha1/openapi_generated.go b/pkg/apis/rollouts/v1alpha1/openapi_generated.go index 5ba707c6ac..cc82d6bac0 100644 --- a/pkg/apis/rollouts/v1alpha1/openapi_generated.go +++ b/pkg/apis/rollouts/v1alpha1/openapi_generated.go @@ -3321,6 +3321,13 @@ func schema_pkg_apis_rollouts_v1alpha1_NewRelicMetric(ref common.ReferenceCallba Format: "", }, }, + "timeout": { + SchemaProps: spec.SchemaProps{ + Description: "Timeout represents the duration limit in seconds that will apply to the NRQL query", + Type: []string{"integer"}, + Format: "int64", + }, + }, }, Required: []string{"query"}, }, diff --git a/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go index f2497499fd..ab36a4b653 100644 --- a/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go @@ -1744,7 +1744,7 @@ func (in *MetricProvider) DeepCopyInto(out *MetricProvider) { if in.NewRelic != nil { in, out := &in.NewRelic, &out.NewRelic *out = new(NewRelicMetric) - **out = **in + (*in).DeepCopyInto(*out) } if in.Job != nil { in, out := &in.Job, &out.Job @@ -1832,6 +1832,11 @@ func (in *MetricResult) DeepCopy() *MetricResult { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *NewRelicMetric) DeepCopyInto(out *NewRelicMetric) { *out = *in + if in.Timeout != nil { + in, out := &in.Timeout, &out.Timeout + *out = new(int64) + **out = **in + } return } diff --git a/ui/src/models/rollout/generated/api.ts b/ui/src/models/rollout/generated/api.ts index 9159d1afd3..135408898b 100755 --- a/ui/src/models/rollout/generated/api.ts +++ b/ui/src/models/rollout/generated/api.ts @@ -1662,6 +1662,12 @@ export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1NewRelicMet * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1NewRelicMetric */ query?: string; + /** + * + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1NewRelicMetric + */ + timeout?: string; } /** * From c1ffa8e1ab59107364fea31bf827d31b733c4fc6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Aug 2024 15:54:45 -0500 Subject: [PATCH 120/219] chore(deps): bump docker/build-push-action from 6.6.1 to 6.7.0 (#3791) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.6.1 to 6.7.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/16ebe778df0e7752d2cfcbd924afdbbd89c1a755...5cd11c3a4ced054e52742c5fd54dca954e0edd85) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 4221462cef..7ebb3fbbf4 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@16ebe778df0e7752d2cfcbd924afdbbd89c1a755 #v6.6.1 + uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 #v6.7.0 with: context: . platforms: ${{ inputs.platforms }} From 463b63e6ac0323ed3ecd17f8132df0f9013757a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Aug 2024 08:31:41 -0500 Subject: [PATCH 121/219] chore(deps): bump github.com/aws/smithy-go from 1.20.3 to 1.20.4 (#3794) Bumps [github.com/aws/smithy-go](https://github.com/aws/smithy-go) from 1.20.3 to 1.20.4. - [Release notes](https://github.com/aws/smithy-go/releases) - [Changelog](https://github.com/aws/smithy-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/aws/smithy-go/compare/v1.20.3...v1.20.4) --- updated-dependencies: - dependency-name: github.com/aws/smithy-go dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a847dfa6bd..58b42e573b 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/aws/aws-sdk-go-v2/config v1.27.27 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.3 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 - github.com/aws/smithy-go v1.20.3 + github.com/aws/smithy-go v1.20.4 github.com/blang/semver v3.5.1+incompatible github.com/bombsimon/logrusr/v4 v4.1.0 github.com/evanphx/json-patch/v5 v5.9.0 diff --git a/go.sum b/go.sum index 4d384dc5e1..259d8a867e 100644 --- a/go.sum +++ b/go.sum @@ -126,8 +126,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrA github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw= github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE= github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ= -github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= -github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= +github.com/aws/smithy-go v1.20.4 h1:2HK1zBdPgRbjFOHlfeQZfpC4r72MOb9bZkiFwggKO+4= +github.com/aws/smithy-go v1.20.4/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= From a38748ba7161e0dc4c5f7cee14ea12fb1b689dc8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Aug 2024 08:31:59 -0500 Subject: [PATCH 122/219] chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.41.2 to 2.43.1 (#3793) chore(deps): bump github.com/newrelic/newrelic-client-go/v2 Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.41.2 to 2.43.1. - [Release notes](https://github.com/newrelic/newrelic-client-go/releases) - [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.41.2...v2.43.1) --- updated-dependencies: - dependency-name: github.com/newrelic/newrelic-client-go/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 58b42e573b..5e1cd15cbe 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/juju/ansiterm v1.0.0 github.com/machinebox/graphql v0.2.2 github.com/mitchellh/mapstructure v1.5.0 - github.com/newrelic/newrelic-client-go/v2 v2.41.2 + github.com/newrelic/newrelic-client-go/v2 v2.43.1 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.18.0 github.com/prometheus/client_model v0.6.1 diff --git a/go.sum b/go.sum index 259d8a867e..f6205ba55c 100644 --- a/go.sum +++ b/go.sum @@ -556,8 +556,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/newrelic/newrelic-client-go/v2 v2.41.2 h1:5YkFRSU19a9CoOkF8qgWoNRXVbL6qh0nZYaWbQjFppA= -github.com/newrelic/newrelic-client-go/v2 v2.41.2/go.mod h1:pDFY24/6iIMEbPIdowTRrRn9YYwkXc3j+B+XpTb4oF4= +github.com/newrelic/newrelic-client-go/v2 v2.43.1 h1:ewnyHowf77wq3Of5zlwq7NxY02vzHKENipc6et2y5AA= +github.com/newrelic/newrelic-client-go/v2 v2.43.1/go.mod h1:pDFY24/6iIMEbPIdowTRrRn9YYwkXc3j+B+XpTb4oF4= github.com/nlopes/slack v0.5.0/go.mod h1:jVI4BBK3lSktibKahxBF74txcK2vyvkza1z/+rRnVAM= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oapi-codegen/runtime v1.0.0 h1:P4rqFX5fMFWqRzY9M/3YF9+aPSPPB06IzP2P7oOxrWo= From 80fff8e89c22c12a9c5af97eb9b5db9648bd26e9 Mon Sep 17 00:00:00 2001 From: Thomas Martin Date: Thu, 22 Aug 2024 19:27:51 +0200 Subject: [PATCH 123/219] fix(dashboard): parse analysis values with JSON5 to handle NaN. Fixes #2758 (#3801) fix(ui analysis-modal): parse analysis values with JSON5 to handle NaN Signed-off-by: AppliNH --- ui/src/app/components/analysis-modal/transforms.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ui/src/app/components/analysis-modal/transforms.ts b/ui/src/app/components/analysis-modal/transforms.ts index a655dda1c4..6d869328ae 100644 --- a/ui/src/app/components/analysis-modal/transforms.ts +++ b/ui/src/app/components/analysis-modal/transforms.ts @@ -1,4 +1,5 @@ // eslint-disable-file @typescript-eslint/ban-ts-comment +import JSON5 from 'json5' import * as moment from 'moment'; import { @@ -617,7 +618,7 @@ const transformMeasurementValue = (conditionKeys: string[], value?: string): Mea }; } - const parsedValue = JSON.parse(value); + const parsedValue = JSON5.parse(value); // single number measurement value if (isFiniteNumber(parsedValue)) { From 7938e84db626d49d72d553ec6c1e33887fbf1ebb Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Mon, 26 Aug 2024 18:45:50 +0200 Subject: [PATCH 124/219] chore: move ReplicaSet creation and Rollout validation earlier during the reconciliation process. (#3657) refactor replicaset creation Signed-off-by: Zach Aller --- rollout/analysis_test.go | 8 +- rollout/bluegreen.go | 2 +- rollout/bluegreen_test.go | 2 + rollout/canary.go | 11 +- rollout/canary_test.go | 72 ++----- rollout/context.go | 22 +- rollout/controller.go | 32 +++ rollout/controller_test.go | 372 +++++++++++++++++++++++++++------ rollout/replicaset_test.go | 11 +- rollout/service.go | 18 +- rollout/service_test.go | 109 ++++------ rollout/sync.go | 15 +- rollout/trafficrouting_test.go | 64 +++++- test/e2e/canary_test.go | 1 + test/e2e/functional_test.go | 91 ++++++-- test/e2e/istio_test.go | 1 + utils/replicaset/replicaset.go | 1 + 17 files changed, 577 insertions(+), 255 deletions(-) diff --git a/rollout/analysis_test.go b/rollout/analysis_test.go index fa7fdc5b96..e9526cb75f 100644 --- a/rollout/analysis_test.go +++ b/rollout/analysis_test.go @@ -406,7 +406,7 @@ func TestInvalidSpecMissingClusterTemplatesBackgroundAnalysis(t *testing.T) { f.objects = append(f.objects, r) patchIndex := f.expectPatchRolloutAction(r) - f.run(getKey(r, t)) + f.runExpectError(getKey(r, t), true) expectedPatchWithoutSub := `{ "status": { @@ -961,7 +961,7 @@ func TestFailCreateStepAnalysisRunIfInvalidTemplateRef(t *testing.T) { f.objects = append(f.objects, r, at) patchIndex := f.expectPatchRolloutAction(r) - f.run(getKey(r, t)) + f.runExpectError(getKey(r, t), true) expectedPatchWithoutSub := `{ "status": { @@ -1006,7 +1006,7 @@ func TestFailCreateBackgroundAnalysisRunIfInvalidTemplateRef(t *testing.T) { f.objects = append(f.objects, r, at) patchIndex := f.expectPatchRolloutAction(r) - f.run(getKey(r, t)) + f.runExpectError(getKey(r, t), true) expectedPatchWithoutSub := `{ "status": { @@ -1055,7 +1055,7 @@ func TestFailCreateBackgroundAnalysisRunIfMetricRepeated(t *testing.T) { f.objects = append(f.objects, r, at, at2) patchIndex := f.expectPatchRolloutAction(r) - f.run(getKey(r, t)) + f.runExpectError(getKey(r, t), true) expectedPatchWithoutSub := `{ "status": { diff --git a/rollout/bluegreen.go b/rollout/bluegreen.go index 7613852470..cf6cbc6ac7 100644 --- a/rollout/bluegreen.go +++ b/rollout/bluegreen.go @@ -21,7 +21,7 @@ func (c *rolloutContext) rolloutBlueGreen() error { if err != nil { return err } - c.newRS, err = c.getAllReplicaSetsAndSyncRevision(true) + c.newRS, err = c.getAllReplicaSetsAndSyncRevision() if err != nil { return fmt.Errorf("failed to getAllReplicaSetsAndSyncRevision in rolloutBlueGreen create true: %w", err) } diff --git a/rollout/bluegreen_test.go b/rollout/bluegreen_test.go index b78ed8704d..f8abaa9fcc 100644 --- a/rollout/bluegreen_test.go +++ b/rollout/bluegreen_test.go @@ -950,8 +950,10 @@ func TestBlueGreenRolloutStatusHPAStatusFieldsNoActiveSelector(t *testing.T) { f := newFixture(t) defer f.Close() f.objects = append(f.objects, ro) + f.kubeobjects = append(f.kubeobjects, activeSvc) f.rolloutLister = append(f.rolloutLister, ro) f.replicaSetLister = append(f.replicaSetLister, rs) + f.serviceLister = append(f.serviceLister, activeSvc) ctrl, _, _ := f.newController(noResyncPeriodFunc) roCtx, err := ctrl.newRolloutContext(ro) diff --git a/rollout/canary.go b/rollout/canary.go index 422ed3644d..0d3e74fcf7 100644 --- a/rollout/canary.go +++ b/rollout/canary.go @@ -20,14 +20,14 @@ import ( func (c *rolloutContext) rolloutCanary() error { var err error if replicasetutil.PodTemplateOrStepsChanged(c.rollout, c.newRS) { - c.newRS, err = c.getAllReplicaSetsAndSyncRevision(false) + c.newRS, err = c.getAllReplicaSetsAndSyncRevision() if err != nil { return fmt.Errorf("failed to getAllReplicaSetsAndSyncRevision in rolloutCanary with PodTemplateOrStepsChanged: %w", err) } return c.syncRolloutStatusCanary() } - c.newRS, err = c.getAllReplicaSetsAndSyncRevision(true) + c.newRS, err = c.getAllReplicaSetsAndSyncRevision() if err != nil { return fmt.Errorf("failed to getAllReplicaSetsAndSyncRevision in rolloutCanary create true: %w", err) } @@ -448,13 +448,6 @@ func (c *rolloutContext) reconcileCanaryReplicaSets() (bool, error) { return true, nil } - // If we have updated both the replica count and the pod template hash c.newRS will be nil we want to reconcile the newRS so we look at the - // rollout status to get the newRS to reconcile it. - if c.newRS == nil && c.rollout.Status.CurrentPodHash != c.rollout.Status.StableRS { - rs, _ := replicasetutil.GetReplicaSetByTemplateHash(c.allRSs, c.rollout.Status.CurrentPodHash) - c.newRS = rs - } - scaledNewRS, err := c.reconcileNewReplicaSet() if err != nil { return false, err diff --git a/rollout/canary_test.go b/rollout/canary_test.go index 3d1eec9d14..ad3d9b4267 100644 --- a/rollout/canary_test.go +++ b/rollout/canary_test.go @@ -1,7 +1,6 @@ package rollout import ( - "context" "encoding/json" "fmt" "os" @@ -421,8 +420,11 @@ func TestResetCurrentStepIndexOnStepChange(t *testing.T) { f.rolloutLister = append(f.rolloutLister, r2) f.objects = append(f.objects, r2) + f.expectUpdateRolloutStatusAction(r2) patchIndex := f.expectPatchRolloutAction(r2) + createRSIndex := f.expectCreateReplicaSetAction(rs1) f.run(getKey(r2, t)) + createdRS := f.getCreatedReplicaSet(createRSIndex) patch := f.getPatchedRollout(patchIndex) expectedPatchWithoutPodHash := `{ @@ -433,7 +435,7 @@ func TestResetCurrentStepIndexOnStepChange(t *testing.T) { "conditions": %s } }` - newConditions := generateConditionsPatch(true, conditions.ReplicaSetUpdatedReason, r2, false, "", false) + newConditions := generateConditionsPatch(true, conditions.ReplicaSetUpdatedReason, createdRS, false, "", false) expectedPatch := fmt.Sprintf(expectedPatchWithoutPodHash, expectedCurrentPodHash, expectedCurrentStepHash, newConditions) assert.JSONEq(t, calculatePatch(r2, expectedPatch), patch) } @@ -462,10 +464,15 @@ func TestResetCurrentStepIndexOnPodSpecChange(t *testing.T) { f.rolloutLister = append(f.rolloutLister, r2) f.objects = append(f.objects, r2) + f.expectUpdateRolloutStatusAction(r2) patchIndex := f.expectPatchRolloutAction(r2) + createdRSIndex := f.expectCreateReplicaSetAction(rs1) + f.run(getKey(r2, t)) patch := f.getPatchedRollout(patchIndex) + updatedRS := f.getUpdatedReplicaSet(createdRSIndex) + expectedPatchWithoutPodHash := `{ "status": { "currentStepIndex":0, @@ -473,7 +480,7 @@ func TestResetCurrentStepIndexOnPodSpecChange(t *testing.T) { "conditions": %s } }` - newConditions := generateConditionsPatch(true, conditions.ReplicaSetUpdatedReason, r2, false, "", false) + newConditions := generateConditionsPatch(true, conditions.ReplicaSetUpdatedReason, updatedRS, false, "", false) expectedPatch := fmt.Sprintf(expectedPatchWithoutPodHash, expectedCurrentPodHash, newConditions) assert.JSONEq(t, calculatePatch(r2, expectedPatch), patch) @@ -1564,7 +1571,7 @@ func TestCanaryRolloutWithInvalidCanaryServiceName(t *testing.T) { f.kubeobjects = append(f.kubeobjects, rs) patchIndex := f.expectPatchRolloutAction(rollout) - f.run(getKey(rollout, t)) + f.runExpectError(getKey(rollout, t), true) patch := make(map[string]any) patchData := f.getPatchedRollout(patchIndex) @@ -1616,7 +1623,7 @@ func TestCanaryRolloutWithInvalidStableServiceName(t *testing.T) { f.kubeobjects = append(f.kubeobjects, rs) patchIndex := f.expectPatchRolloutAction(rollout) - f.run(getKey(rollout, t)) + f.runExpectError(getKey(rollout, t), true) patch := make(map[string]any) patchData := f.getPatchedRollout(patchIndex) @@ -1665,7 +1672,7 @@ func TestCanaryRolloutWithInvalidPingServiceName(t *testing.T) { f.objects = append(f.objects, r) patchIndex := f.expectPatchRolloutAction(r) - f.run(getKey(r, t)) + f.runExpectError(getKey(r, t), true) patch := make(map[string]any) patchData := f.getPatchedRollout(patchIndex) @@ -1697,7 +1704,7 @@ func TestCanaryRolloutWithInvalidPongServiceName(t *testing.T) { f.serviceLister = append(f.serviceLister, pingSvc) patchIndex := f.expectPatchRolloutAction(r) - f.run(getKey(r, t)) + f.runExpectError(getKey(r, t), true) patch := make(map[string]any) patchData := f.getPatchedRollout(patchIndex) @@ -1896,8 +1903,14 @@ func TestHandleNilNewRSOnScaleAndImageChange(t *testing.T) { f.rolloutLister = append(f.rolloutLister, r2) f.objects = append(f.objects, r2) - f.expectUpdateReplicaSetAction(rs1) + f.expectUpdateRolloutStatusAction(r2) + f.expectPatchRolloutAction(r2) patchIndex := f.expectPatchRolloutAction(r2) + + f.expectCreateReplicaSetAction(rs1) + f.expectUpdateReplicaSetAction(rs1) + f.expectUpdateReplicaSetAction(rs1) + f.run(getKey(r2, t)) patch := f.getPatchedRollout(patchIndex) assert.JSONEq(t, calculatePatch(r2, OnlyObservedGenerationPatch), patch) @@ -2105,49 +2118,6 @@ func TestIsDynamicallyRollingBackToStable(t *testing.T) { } } -func TestCanaryReplicaAndSpecChangedTogether(t *testing.T) { - f := newFixture(t) - defer f.Close() - - originReplicas := 3 - r1 := newCanaryRollout("foo", originReplicas, nil, nil, nil, intstr.FromInt(1), intstr.FromInt(0)) - canarySVCName := "canary" - stableSVCName := "stable" - r1.Spec.Strategy.Canary.CanaryService = canarySVCName - r1.Spec.Strategy.Canary.StableService = stableSVCName - - stableRS := newReplicaSetWithStatus(r1, originReplicas, originReplicas) - stableSVC := newService(stableSVCName, 80, - map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: stableRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, r1) - - r2 := bumpVersion(r1) - canaryRS := newReplicaSetWithStatus(r2, originReplicas, originReplicas) - canarySVC := newService(canarySVCName, 80, - map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: canaryRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, r2) - - f.replicaSetLister = append(f.replicaSetLister, canaryRS, stableRS) - f.serviceLister = append(f.serviceLister, canarySVC, stableSVC) - - r3 := bumpVersion(r2) - r3.Spec.Replicas = pointer.Int32(int32(originReplicas) + 5) - r3.Status.StableRS = stableRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] - r3.Status.CurrentPodHash = canaryRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] - - f.rolloutLister = append(f.rolloutLister, r3) - f.kubeobjects = append(f.kubeobjects, canaryRS, stableRS, canarySVC, stableSVC) - f.objects = append(f.objects, r3) - - ctrl, _, _ := f.newController(noResyncPeriodFunc) - roCtx, err := ctrl.newRolloutContext(r3) - assert.NoError(t, err) - err = roCtx.reconcile() - assert.NoError(t, err) - updated, err := f.kubeclient.AppsV1().ReplicaSets(r3.Namespace).Get(context.Background(), canaryRS.Name, metav1.GetOptions{}) - assert.NoError(t, err) - // check the canary one is updated - assert.NotEqual(t, originReplicas, int(*updated.Spec.Replicas)) -} - func TestSyncRolloutWithConflictInScaleReplicaSet(t *testing.T) { os.Setenv("ARGO_ROLLOUTS_LOG_RS_DIFF_CONFLICT", "true") defer os.Unsetenv("ARGO_ROLLOUTS_LOG_RS_DIFF_CONFLICT") diff --git a/rollout/context.go b/rollout/context.go index c595a5718b..75949da4e3 100644 --- a/rollout/context.go +++ b/rollout/context.go @@ -1,14 +1,10 @@ package rollout import ( - "time" - - log "github.com/sirupsen/logrus" - appsv1 "k8s.io/api/apps/v1" - "k8s.io/apimachinery/pkg/util/validation/field" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" analysisutil "github.com/argoproj/argo-rollouts/utils/analysis" + log "github.com/sirupsen/logrus" + appsv1 "k8s.io/api/apps/v1" ) type rolloutContext struct { @@ -53,19 +49,7 @@ type rolloutContext struct { } func (c *rolloutContext) reconcile() error { - // Get Rollout Validation errors - err := c.getRolloutValidationErrors() - if err != nil { - if vErr, ok := err.(*field.Error); ok { - // We want to frequently requeue rollouts with InvalidSpec errors, because the error - // condition might be timing related (e.g. the Rollout was applied before the Service). - c.enqueueRolloutAfter(c.rollout, 20*time.Second) - return c.createInvalidRolloutCondition(vErr, c.rollout) - } - return err - } - - err = c.checkPausedConditions() + err := c.checkPausedConditions() if err != nil { return err } diff --git a/rollout/controller.go b/rollout/controller.go index 50e7b3e215..06dd8312bf 100644 --- a/rollout/controller.go +++ b/rollout/controller.go @@ -534,6 +534,38 @@ func (c *Controller) newRolloutContext(rollout *v1alpha1.Rollout) (*rolloutConte }, reconcilerBase: c.reconcilerBase, } + + // Get Rollout Validation errors + err = roCtx.getRolloutValidationErrors() + if err != nil { + if vErr, ok := err.(*field.Error); ok { + // We want to frequently requeue rollouts with InvalidSpec errors, because the error + // condition might be timing related (e.g. the Rollout was applied before the Service). + c.enqueueRolloutAfter(roCtx.rollout, 20*time.Second) + err := roCtx.createInvalidRolloutCondition(vErr, roCtx.rollout) + if err != nil { + return nil, err + } + return nil, vErr + } + return nil, err + } + + if roCtx.newRS == nil { + roCtx.newRS, err = roCtx.createDesiredReplicaSet() + if err != nil { + return nil, err + } + roCtx.olderRSs = replicasetutil.FindOldReplicaSets(roCtx.rollout, rsList, roCtx.newRS) + roCtx.stableRS = replicasetutil.GetStableRS(roCtx.rollout, roCtx.newRS, roCtx.olderRSs) + roCtx.otherRSs = replicasetutil.GetOtherRSs(roCtx.rollout, roCtx.newRS, roCtx.stableRS, rsList) + roCtx.allRSs = append(rsList, roCtx.newRS) + err := roCtx.replicaSetInformer.GetIndexer().Add(roCtx.newRS) + if err != nil { + return nil, err + } + } + if rolloututil.IsFullyPromoted(rollout) && roCtx.pauseContext.IsAborted() { logCtx.Warnf("Removing abort condition from fully promoted rollout") roCtx.pauseContext.RemoveAbort() diff --git a/rollout/controller_test.go b/rollout/controller_test.go index e38fca79c5..2e848212fa 100644 --- a/rollout/controller_test.go +++ b/rollout/controller_test.go @@ -95,6 +95,7 @@ type fixture struct { replicaSetLister []*appsv1.ReplicaSet serviceLister []*corev1.Service ingressLister []*ingressutil.Ingress + virtualServiceLister []*unstructured.Unstructured // Actions expected to happen on the client. kubeactions []core.Action actions []core.Action @@ -662,6 +663,9 @@ func (f *fixture) newController(resync resyncFunc) (*Controller, informers.Share for _, ar := range f.analysisRunLister { i.Argoproj().V1alpha1().AnalysisRuns().Informer().GetIndexer().Add(ar) } + for _, vs := range f.virtualServiceLister { + c.IstioController.VirtualServiceInformer.GetIndexer().Add(vs) + } return c, i, k8sI } @@ -1203,11 +1207,17 @@ func TestDontSyncRolloutsWithEmptyPodSelector(t *testing.T) { f := newFixture(t) defer f.Close() - r := newBlueGreenRollout("foo", 1, nil, "", "") + r := newBlueGreenRollout("foo", 1, nil, "active", "") + activeSvc := newService("active", 80, nil, r) f.rolloutLister = append(f.rolloutLister, r) + f.serviceLister = append(f.serviceLister, activeSvc) f.objects = append(f.objects, r) + f.kubeobjects = append(f.kubeobjects, activeSvc) + f.expectUpdateRolloutStatusAction(r) f.expectPatchRolloutAction(r) + f.expectCreateReplicaSetAction(&appsv1.ReplicaSet{}) + f.expectUpdateReplicaSetAction(&appsv1.ReplicaSet{}) f.run(getKey(r, t)) } @@ -1240,13 +1250,12 @@ func TestAdoptReplicaSet(t *testing.T) { } func TestRequeueStuckRollout(t *testing.T) { + //t.Skip("broken in the refactor") rollout := func(progressingConditionReason string, rolloutCompleted bool, rolloutPaused bool, progressDeadlineSeconds *int32) *v1alpha1.Rollout { - r := &v1alpha1.Rollout{ - Spec: v1alpha1.RolloutSpec{ - Replicas: pointer.Int32Ptr(0), - ProgressDeadlineSeconds: progressDeadlineSeconds, - }, - } + r := newCanaryRollout("foo", 0, nil, nil, nil, intstr.FromInt(0), intstr.FromInt(1)) + r.Status.Conditions = nil + r.Spec.ProgressDeadlineSeconds = progressDeadlineSeconds + //r.Spec.Strategy.BlueGreen = &v1alpha1.BlueGreenStrategy{} r.Generation = 123 if rolloutPaused { r.Status.PauseConditions = []v1alpha1.PauseCondition{{ @@ -1255,6 +1264,8 @@ func TestRequeueStuckRollout(t *testing.T) { } if rolloutCompleted { r.Status.ObservedGeneration = strconv.Itoa(int(r.Generation)) + r.Status.StableRS = "fakesha" + r.Status.CurrentPodHash = "fakesha" } if progressingConditionReason != "" { @@ -1310,9 +1321,14 @@ func TestRequeueStuckRollout(t *testing.T) { for i := range tests { test := tests[i] t.Run(test.name, func(t *testing.T) { + savedRollout := test.rollout.DeepCopy() f := newFixture(t) defer f.Close() c, _, _ := f.newController(noResyncPeriodFunc) + f.client.PrependReactor("*", "rollouts", func(action core.Action) (bool, runtime.Object, error) { + savedRollout.DeepCopyInto(test.rollout) + return true, savedRollout, nil + }) roCtx, err := c.newRolloutContext(test.rollout) assert.NoError(t, err) duration := roCtx.requeueStuckRollout(test.rollout.Status) @@ -1336,7 +1352,10 @@ func TestSetReplicaToDefault(t *testing.T) { f.rolloutLister = append(f.rolloutLister, r) f.objects = append(f.objects, r) + //updateIndex := f.expectUpdateRolloutAction(r) + f.expectUpdateRolloutStatusAction(r) updateIndex := f.expectUpdateRolloutAction(r) + f.expectCreateReplicaSetAction(&appsv1.ReplicaSet{}) f.run(getKey(r, t)) updatedRollout := f.getUpdatedRollout(updateIndex) assert.Equal(t, defaults.DefaultReplicas, *updatedRollout.Spec.Replicas) @@ -1347,7 +1366,8 @@ func TestSwitchInvalidSpecMessage(t *testing.T) { f := newFixture(t) defer f.Close() - r := newBlueGreenRollout("foo", 1, nil, "", "") + r := newBlueGreenRollout("foo", 1, nil, "active", "") + activeSvc := newService("active", 80, nil, r) r.Spec.Selector = &metav1.LabelSelector{} cond := conditions.NewRolloutCondition(v1alpha1.InvalidSpec, corev1.ConditionTrue, conditions.InvalidSpecReason, conditions.RolloutSelectAllMessage) conditions.SetRolloutCondition(&r.Status, *cond) @@ -1356,9 +1376,12 @@ func TestSwitchInvalidSpecMessage(t *testing.T) { r.Spec.Selector = nil f.rolloutLister = append(f.rolloutLister, r) f.objects = append(f.objects, r) + f.kubeobjects = append(f.kubeobjects, activeSvc) + f.serviceLister = append(f.serviceLister, activeSvc) patchIndex := f.expectPatchRolloutAction(r) - f.run(getKey(r, t)) + //f.run(getKey(r, t)) + f.runExpectError(getKey(r, t), true) expectedPatchWithoutSub := `{ "status": { @@ -1602,8 +1625,7 @@ func newInvalidSpecCondition(reason string, resourceObj runtime.Object, optional } func TestGetReferencedAnalyses(t *testing.T) { - f := newFixture(t) - defer f.Close() + //f := newFixture(t) rolloutAnalysisFail := v1alpha1.RolloutAnalysis{ Templates: []v1alpha1.AnalysisTemplateRef{{ @@ -1613,53 +1635,81 @@ func TestGetReferencedAnalyses(t *testing.T) { } t.Run("blueGreen pre-promotion analysis - fail", func(t *testing.T) { + f := newFixture(t) + defer f.Close() r := newBlueGreenRollout("rollout", 1, nil, "active-service", "preview-service") + activeSvc := newService("active-service", 80, nil, r) + previewSvc := newService("preview-service", 80, nil, r) + f.objects = append(f.objects, r) + f.kubeobjects = append(f.kubeobjects, activeSvc, previewSvc) + f.rolloutLister = append(f.rolloutLister, r) + f.serviceLister = append(f.serviceLister, activeSvc, previewSvc) r.Spec.Strategy.BlueGreen.PrePromotionAnalysis = &rolloutAnalysisFail c, _, _ := f.newController(noResyncPeriodFunc) roCtx, err := c.newRolloutContext(r) - assert.NoError(t, err) - _, err = roCtx.getReferencedRolloutAnalyses() assert.NotNil(t, err) + assert.Nil(t, roCtx) msg := "spec.strategy.blueGreen.prePromotionAnalysis.templates: Invalid value: \"does-not-exist\": AnalysisTemplate 'does-not-exist' not found" assert.Equal(t, msg, err.Error()) }) t.Run("blueGreen post-promotion analysis - fail", func(t *testing.T) { + f := newFixture(t) + defer f.Close() r := newBlueGreenRollout("rollout", 1, nil, "active-service", "preview-service") + activeSvc := newService("active-service", 80, nil, r) + previewSvc := newService("preview-service", 80, nil, r) + f.objects = append(f.objects, r) + f.kubeobjects = append(f.kubeobjects, activeSvc, previewSvc) + f.rolloutLister = append(f.rolloutLister, r) + f.serviceLister = append(f.serviceLister, activeSvc, previewSvc) r.Spec.Strategy.BlueGreen.PostPromotionAnalysis = &rolloutAnalysisFail c, _, _ := f.newController(noResyncPeriodFunc) roCtx, err := c.newRolloutContext(r) - assert.NoError(t, err) - _, err = roCtx.getReferencedRolloutAnalyses() assert.NotNil(t, err) + assert.Nil(t, roCtx) msg := "spec.strategy.blueGreen.postPromotionAnalysis.templates: Invalid value: \"does-not-exist\": AnalysisTemplate 'does-not-exist' not found" assert.Equal(t, msg, err.Error()) }) t.Run("canary analysis - fail", func(t *testing.T) { + f := newFixture(t) + defer f.Close() r := newCanaryRollout("rollout-canary", 1, nil, nil, int32Ptr(0), intstr.FromInt(0), intstr.FromInt(1)) + activeSvc := newService("active-service", 80, nil, r) + previewSvc := newService("preview-service", 80, nil, r) + f.objects = append(f.objects, r) + f.kubeobjects = append(f.kubeobjects, activeSvc, previewSvc) + f.rolloutLister = append(f.rolloutLister, r) + f.serviceLister = append(f.serviceLister, activeSvc, previewSvc) r.Spec.Strategy.Canary.Analysis = &v1alpha1.RolloutAnalysisBackground{ RolloutAnalysis: rolloutAnalysisFail, } c, _, _ := f.newController(noResyncPeriodFunc) roCtx, err := c.newRolloutContext(r) - assert.NoError(t, err) - _, err = roCtx.getReferencedRolloutAnalyses() assert.NotNil(t, err) + assert.Nil(t, roCtx) msg := "spec.strategy.canary.analysis.templates: Invalid value: \"does-not-exist\": AnalysisTemplate 'does-not-exist' not found" assert.Equal(t, msg, err.Error()) }) t.Run("canary step analysis - fail", func(t *testing.T) { + f := newFixture(t) + defer f.Close() canarySteps := []v1alpha1.CanaryStep{{ Analysis: &rolloutAnalysisFail, }} r := newCanaryRollout("rollout-canary", 1, nil, canarySteps, int32Ptr(0), intstr.FromInt(0), intstr.FromInt(1)) + activeSvc := newService("active-service", 80, nil, r) + previewSvc := newService("preview-service", 80, nil, r) + f.objects = append(f.objects, r) + f.kubeobjects = append(f.kubeobjects, activeSvc, previewSvc) + f.rolloutLister = append(f.rolloutLister, r) + f.serviceLister = append(f.serviceLister, activeSvc, previewSvc) c, _, _ := f.newController(noResyncPeriodFunc) roCtx, err := c.newRolloutContext(r) - assert.NoError(t, err) - _, err = roCtx.getReferencedRolloutAnalyses() assert.NotNil(t, err) + assert.Nil(t, roCtx) msg := "spec.strategy.canary.steps[0].analysis.templates: Invalid value: \"does-not-exist\": AnalysisTemplate 'does-not-exist' not found" assert.Equal(t, msg, err.Error()) }) @@ -1675,6 +1725,12 @@ func TestGetReferencedClusterAnalysisTemplate(t *testing.T) { ClusterScope: true, }}, } + activeSvc := newService("active-service", 80, nil, r) + previewSvc := newService("preview-service", 80, nil, r) + f.rolloutLister = append(f.rolloutLister, r) + f.objects = append(f.objects, r) + f.kubeobjects = append(f.kubeobjects, activeSvc, previewSvc) + f.serviceLister = append(f.serviceLister, activeSvc, previewSvc) t.Run("get referenced analysisTemplate - fail", func(t *testing.T) { c, _, _ := f.newController(noResyncPeriodFunc) @@ -1706,6 +1762,12 @@ func TestGetInnerReferencedAnalysisTemplate(t *testing.T) { }}, } f.clusterAnalysisTemplateLister = append(f.clusterAnalysisTemplateLister, clusterAnalysisTemplateWithAnalysisRefs("first-cluster-analysis-template-name", "second-cluster-analysis-template-name", "third-cluster-analysis-template-name")) + activeSvc := newService("active-service", 80, nil, r) + previewSvc := newService("preview-service", 80, nil, r) + f.kubeobjects = append(f.kubeobjects, activeSvc, previewSvc) + f.serviceLister = append(f.serviceLister, activeSvc, previewSvc) + f.objects = append(f.objects, r) + f.rolloutLister = append(f.rolloutLister, r) t.Run("get inner referenced analysisTemplate - fail", func(t *testing.T) { c, _, _ := f.newController(noResyncPeriodFunc) @@ -1751,14 +1813,19 @@ func TestGetReferencedIngressesALB(t *testing.T) { }, } r.Namespace = metav1.NamespaceDefault + stableSvc := newService("stable", 80, nil, r) + canarySvc := newService("canary", 80, nil, r) + r.Spec.Strategy.Canary.StableService = stableSvc.Name + r.Spec.Strategy.Canary.CanaryService = canarySvc.Name + f.kubeobjects = append(f.kubeobjects, stableSvc, canarySvc) + f.serviceLister = append(f.serviceLister, stableSvc, canarySvc) + f.objects = append(f.objects, r) + f.rolloutLister = append(f.rolloutLister, r) t.Run("get referenced ALB ingress - fail", func(t *testing.T) { c, _, _ := f.newController(noResyncPeriodFunc) - roCtx, err := c.newRolloutContext(r) - assert.NoError(t, err) - _, err = roCtx.getReferencedIngresses() - expectedErr := field.Invalid(field.NewPath("spec", "strategy", "canary", "trafficRouting", "alb", "ingress"), "alb-ingress-name", "ingress.extensions \"alb-ingress-name\" not found") - assert.Equal(t, expectedErr.Error(), err.Error()) + _, err := c.newRolloutContext(r) + assert.Error(t, err) }) t.Run("get referenced ALB ingress - success", func(t *testing.T) { @@ -1767,6 +1834,31 @@ func TestGetReferencedIngressesALB(t *testing.T) { Name: "alb-ingress-name", Namespace: metav1.NamespaceDefault, }, + Spec: extensionsv1beta1.IngressSpec{ + IngressClassName: pointer.StringPtr("alb"), + Backend: &extensionsv1beta1.IngressBackend{ + ServiceName: "active-service", + ServicePort: intstr.IntOrString{IntVal: 80}, + }, + Rules: []extensionsv1beta1.IngressRule{ + { + Host: "example.com", + IngressRuleValue: extensionsv1beta1.IngressRuleValue{ + HTTP: &extensionsv1beta1.HTTPIngressRuleValue{ + Paths: []extensionsv1beta1.HTTPIngressPath{{ + Path: "", + PathType: nil, + Backend: extensionsv1beta1.IngressBackend{ + ServiceName: "stable", + ServicePort: intstr.IntOrString{IntVal: 80}, + }, + }, + }, + }, + }, + }, + }, + }, } f.ingressLister = append(f.ingressLister, ingressutil.NewLegacyIngress(ingress)) c, _, _ := f.newController(noResyncPeriodFunc) @@ -1829,6 +1921,7 @@ func TestGetReferencedIngressesALBMultiIngress(t *testing.T) { }, } + //TODO: cleanup expectedErr for _, test := range tests { t.Run(test.name, func(t *testing.T) { // clear fixture @@ -1837,10 +1930,10 @@ func TestGetReferencedIngressesALBMultiIngress(t *testing.T) { f.ingressLister = append(f.ingressLister, ing) } c, _, _ := f.newController(noResyncPeriodFunc) - roCtx, err := c.newRolloutContext(r) - assert.NoError(t, err) - _, err = roCtx.getReferencedIngresses() - assert.Equal(t, test.expectedErr.Error(), err.Error()) + _, err := c.newRolloutContext(r) + assert.Error(t, err) + //_, err = roCtx.getReferencedIngresses() + //assert.Equal(t, test.expectedErr.Error(), err.Error()) }) } @@ -1852,15 +1945,78 @@ func TestGetReferencedIngressesALBMultiIngress(t *testing.T) { Name: primaryIngress, Namespace: metav1.NamespaceDefault, }, + Spec: extensionsv1beta1.IngressSpec{ + IngressClassName: pointer.StringPtr("alb"), + Backend: &extensionsv1beta1.IngressBackend{ + ServiceName: "active-service", + ServicePort: intstr.IntOrString{IntVal: 80}, + }, + Rules: []extensionsv1beta1.IngressRule{ + { + Host: "example.com", + IngressRuleValue: extensionsv1beta1.IngressRuleValue{ + HTTP: &extensionsv1beta1.HTTPIngressRuleValue{ + Paths: []extensionsv1beta1.HTTPIngressPath{{ + Path: "", + PathType: nil, + Backend: extensionsv1beta1.IngressBackend{ + ServiceName: "active-service", + ServicePort: intstr.IntOrString{IntVal: 80}, + }, + }, + }, + }, + }, + }, + }, + }, } ingressAdditional := &extensionsv1beta1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Name: addIngress, Namespace: metav1.NamespaceDefault, }, + Spec: extensionsv1beta1.IngressSpec{ + IngressClassName: pointer.StringPtr("alb"), + Backend: &extensionsv1beta1.IngressBackend{ + ServiceName: "active-service", + ServicePort: intstr.IntOrString{IntVal: 80}, + }, + Rules: []extensionsv1beta1.IngressRule{ + { + Host: "example.com", + IngressRuleValue: extensionsv1beta1.IngressRuleValue{ + HTTP: &extensionsv1beta1.HTTPIngressRuleValue{ + Paths: []extensionsv1beta1.HTTPIngressPath{{ + Path: "", + PathType: nil, + Backend: extensionsv1beta1.IngressBackend{ + ServiceName: "active-service", + ServicePort: intstr.IntOrString{IntVal: 80}, + }, + }, + }, + }, + }, + }, + }, + }, } f.ingressLister = append(f.ingressLister, ingressutil.NewLegacyIngress(ingress)) f.ingressLister = append(f.ingressLister, ingressutil.NewLegacyIngress(ingressAdditional)) + f.kubeobjects = append(f.objects, ingress, ingressAdditional) + + activeSvc := newService("active-service", 80, nil, r) + previewSvc := newService("preview-service", 80, nil, r) + f.kubeobjects = append(f.kubeobjects, activeSvc, previewSvc) + f.serviceLister = append(f.serviceLister, activeSvc, previewSvc) + + r.Spec.Strategy.Canary.CanaryService = previewSvc.Name + r.Spec.Strategy.Canary.StableService = activeSvc.Name + + f.rolloutLister = append(f.rolloutLister, r) + f.objects = append(f.objects, r) + c, _, _ := f.newController(noResyncPeriodFunc) roCtx, err := c.newRolloutContext(r) assert.NoError(t, err) @@ -1887,11 +2043,8 @@ func TestGetReferencedIngressesNginx(t *testing.T) { // clear fixture f.ingressLister = []*ingressutil.Ingress{} c, _, _ := f.newController(noResyncPeriodFunc) - roCtx, err := c.newRolloutContext(r) - assert.NoError(t, err) - _, err = roCtx.getReferencedIngresses() - expectedErr := field.Invalid(field.NewPath("spec", "strategy", "canary", "trafficRouting", "nginx", "stableIngress"), primaryIngress, fmt.Sprintf("ingress.extensions \"%s\" not found", primaryIngress)) - assert.Equal(t, expectedErr.Error(), err.Error()) + _, err := c.newRolloutContext(r) + assert.Error(t, err) }) t.Run("get referenced Nginx ingress - success", func(t *testing.T) { @@ -1902,8 +2055,46 @@ func TestGetReferencedIngressesNginx(t *testing.T) { Name: primaryIngress, Namespace: metav1.NamespaceDefault, }, + Spec: extensionsv1beta1.IngressSpec{ + IngressClassName: pointer.StringPtr("alb"), + Backend: &extensionsv1beta1.IngressBackend{ + ServiceName: "active-service", + ServicePort: intstr.IntOrString{IntVal: 80}, + }, + Rules: []extensionsv1beta1.IngressRule{ + { + Host: "example.com", + IngressRuleValue: extensionsv1beta1.IngressRuleValue{ + HTTP: &extensionsv1beta1.HTTPIngressRuleValue{ + Paths: []extensionsv1beta1.HTTPIngressPath{{ + Path: "", + PathType: nil, + Backend: extensionsv1beta1.IngressBackend{ + ServiceName: "active-service", + ServicePort: intstr.IntOrString{IntVal: 80}, + }, + }, + }, + }, + }, + }, + }, + }, } f.ingressLister = append(f.ingressLister, ingressutil.NewLegacyIngress(ingress)) + f.kubeobjects = append(f.kubeobjects, ingress) + + activeSvc := newService("active-service", 80, nil, r) + previewSvc := newService("preview-service", 80, nil, r) + f.kubeobjects = append(f.kubeobjects, activeSvc, previewSvc) + f.serviceLister = append(f.serviceLister, activeSvc, previewSvc) + + r.Spec.Strategy.Canary.CanaryService = previewSvc.Name + r.Spec.Strategy.Canary.StableService = activeSvc.Name + + f.rolloutLister = append(f.rolloutLister, r) + f.objects = append(f.objects, r) + c, _, _ := f.newController(noResyncPeriodFunc) roCtx, err := c.newRolloutContext(r) assert.NoError(t, err) @@ -1970,10 +2161,8 @@ func TestGetReferencedIngressesNginxMultiIngress(t *testing.T) { f.ingressLister = append(f.ingressLister, ing) } c, _, _ := f.newController(noResyncPeriodFunc) - roCtx, err := c.newRolloutContext(r) - assert.NoError(t, err) - _, err = roCtx.getReferencedIngresses() - assert.Equal(t, test.expectedErr.Error(), err.Error()) + _, err := c.newRolloutContext(r) + assert.Error(t, err) }) } @@ -1985,15 +2174,77 @@ func TestGetReferencedIngressesNginxMultiIngress(t *testing.T) { Name: primaryIngress, Namespace: metav1.NamespaceDefault, }, + Spec: extensionsv1beta1.IngressSpec{ + IngressClassName: pointer.StringPtr("alb"), + Backend: &extensionsv1beta1.IngressBackend{ + ServiceName: "active-service", + ServicePort: intstr.IntOrString{IntVal: 80}, + }, + Rules: []extensionsv1beta1.IngressRule{ + { + Host: "example.com", + IngressRuleValue: extensionsv1beta1.IngressRuleValue{ + HTTP: &extensionsv1beta1.HTTPIngressRuleValue{ + Paths: []extensionsv1beta1.HTTPIngressPath{{ + Path: "", + PathType: nil, + Backend: extensionsv1beta1.IngressBackend{ + ServiceName: "active-service", + ServicePort: intstr.IntOrString{IntVal: 80}, + }, + }, + }, + }, + }, + }, + }, + }, } ingressAdditional := &extensionsv1beta1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Name: addIngress, Namespace: metav1.NamespaceDefault, }, + Spec: extensionsv1beta1.IngressSpec{ + IngressClassName: pointer.StringPtr("alb"), + Backend: &extensionsv1beta1.IngressBackend{ + ServiceName: "active-service", + ServicePort: intstr.IntOrString{IntVal: 80}, + }, + Rules: []extensionsv1beta1.IngressRule{ + { + Host: "example.com", + IngressRuleValue: extensionsv1beta1.IngressRuleValue{ + HTTP: &extensionsv1beta1.HTTPIngressRuleValue{ + Paths: []extensionsv1beta1.HTTPIngressPath{{ + Path: "", + PathType: nil, + Backend: extensionsv1beta1.IngressBackend{ + ServiceName: "active-service", + ServicePort: intstr.IntOrString{IntVal: 80}, + }, + }, + }, + }, + }, + }, + }, + }, } f.ingressLister = append(f.ingressLister, ingressutil.NewLegacyIngress(ingress)) f.ingressLister = append(f.ingressLister, ingressutil.NewLegacyIngress(ingressAdditional)) + f.kubeobjects = append(f.kubeobjects, ingress, ingressAdditional) + + activeSvc := newService("active-service", 80, nil, r) + previewSvc := newService("preview-service", 80, nil, r) + f.kubeobjects = append(f.kubeobjects, activeSvc, previewSvc) + f.serviceLister = append(f.serviceLister, activeSvc, previewSvc) + + r.Spec.Strategy.Canary.CanaryService = previewSvc.Name + r.Spec.Strategy.Canary.StableService = activeSvc.Name + + f.objects = append(f.objects, r) + c, _, _ := f.newController(noResyncPeriodFunc) roCtx, err := c.newRolloutContext(r) assert.NoError(t, err) @@ -2030,11 +2281,8 @@ func TestGetReferencedAppMeshResources(t *testing.T) { c, _, _ := f.newController(noResyncPeriodFunc) rCopy := r.DeepCopy() rCopy.Spec.Strategy.Canary.TrafficRouting.AppMesh.VirtualService = nil - roCtx, err := c.newRolloutContext(rCopy) - assert.NoError(t, err) - _, err = roCtx.getRolloutReferencedResources() - expectedErr := field.Invalid(field.NewPath("spec", "strategy", "canary", "trafficRouting", "appmesh", "virtualService"), "null", "must provide virtual-service") - assert.Equal(t, expectedErr.Error(), err.Error()) + _, err := c.newRolloutContext(rCopy) + assert.Error(t, err) }) t.Run("should return error when virtual-service is not-found", func(t *testing.T) { @@ -2042,11 +2290,8 @@ func TestGetReferencedAppMeshResources(t *testing.T) { defer f.Close() c, _, _ := f.newController(noResyncPeriodFunc) - roCtx, err := c.newRolloutContext(r) - assert.NoError(t, err) - _, err = roCtx.getRolloutReferencedResources() - expectedErr := field.Invalid(field.NewPath("spec", "strategy", "canary", "trafficRouting", "appmesh", "virtualService"), "mysvc.default", "virtualservices.appmesh.k8s.aws \"mysvc\" not found") - assert.Equal(t, expectedErr.Error(), err.Error()) + _, err := c.newRolloutContext(r) + assert.Error(t, err) }) t.Run("should return error when virtual-router is not-found", func(t *testing.T) { @@ -2068,11 +2313,8 @@ spec: uVsvc := unstructuredutil.StrToUnstructuredUnsafe(vsvc) f.objects = append(f.objects, uVsvc) c, _, _ := f.newController(noResyncPeriodFunc) - roCtx, err := c.newRolloutContext(r) - assert.NoError(t, err) - _, err = roCtx.getRolloutReferencedResources() - expectedErr := field.Invalid(field.NewPath("spec", "strategy", "canary", "trafficRouting", "appmesh", "virtualService"), "mysvc.default", "virtualrouters.appmesh.k8s.aws \"mysvc-vrouter\" not found") - assert.Equal(t, expectedErr.Error(), err.Error()) + _, err := c.newRolloutContext(r) + assert.Error(t, err) }) t.Run("get referenced App Mesh - success", func(t *testing.T) { @@ -2117,10 +2359,20 @@ spec: name: mysvc-stable-vn weight: 100 ` + r := r.DeepCopy() + activeSvc := newService("active-service", 80, nil, r) + previewSvc := newService("preview-service", 80, nil, r) + f.kubeobjects = append(f.kubeobjects, activeSvc, previewSvc) + f.serviceLister = append(f.serviceLister, activeSvc, previewSvc) + + r.Spec.Strategy.Canary.CanaryService = previewSvc.Name + r.Spec.Strategy.Canary.StableService = activeSvc.Name uVsvc := unstructuredutil.StrToUnstructuredUnsafe(vsvc) uVrouter := unstructuredutil.StrToUnstructuredUnsafe(vrouter) f.objects = append(f.objects, uVsvc, uVrouter) + f.rolloutLister = append(f.rolloutLister, r) + f.objects = append(f.objects, r) c, _, _ := f.newController(noResyncPeriodFunc) roCtx, err := c.newRolloutContext(r) assert.NoError(t, err) @@ -2149,14 +2401,14 @@ func TestGetAmbassadorMappings(t *testing.T) { }, } r.Namespace = metav1.NamespaceDefault - roCtx, err := c.newRolloutContext(r) - assert.NoError(t, err) - - // when - _, err = roCtx.getAmbassadorMappings() - - // then + _, err := c.newRolloutContext(r) assert.Error(t, err) + + //// when + //_, err = roCtx.getAmbassadorMappings() + // + //// then + //assert.Error(t, err) }) } @@ -2178,7 +2430,7 @@ func TestRolloutStrategyNotSet(t *testing.T) { f.serviceLister = append(f.serviceLister, previewSvc, activeSvc) patchIndex := f.expectPatchRolloutAction(r) - f.run(getKey(r, t)) + f.runExpectError(getKey(r, t), true) patchedRollout := f.getPatchedRollout(patchIndex) assert.Contains(t, patchedRollout, `Rollout has missing field '.spec.strategy.canary or .spec.strategy.blueGreen'`) } diff --git a/rollout/replicaset_test.go b/rollout/replicaset_test.go index 2e61606c37..bf185a1c2c 100644 --- a/rollout/replicaset_test.go +++ b/rollout/replicaset_test.go @@ -365,14 +365,21 @@ func TestReconcileOldReplicaSet(t *testing.T) { oldRS := rs("foo-old", test.oldReplicas, oldSelector, noTimestamp, nil) oldRS.Annotations = map[string]string{annotations.DesiredReplicasAnnotation: strconv.Itoa(test.oldReplicas)} oldRS.Status.AvailableReplicas = int32(test.readyPodsFromOldRS) - rollout := newBlueGreenRollout("foo", test.rolloutReplicas, nil, "", "") + + rollout := newBlueGreenRollout("foo", test.rolloutReplicas, nil, "active-service", "preview-service") rollout.Spec.Strategy.BlueGreen.ScaleDownDelayRevisionLimit = pointer.Int32Ptr(0) rollout.Spec.Selector = &metav1.LabelSelector{MatchLabels: newSelector} + + activeService := newService("active-service", 80, nil, nil) + previewService := newService("preview-service", 80, nil, nil) + rollout.Spec.Template.Labels["foo"] = "new" + f := newFixture(t) defer f.Close() f.objects = append(f.objects, rollout) f.replicaSetLister = append(f.replicaSetLister, oldRS, newRS) - f.kubeobjects = append(f.kubeobjects, oldRS, newRS) + f.serviceLister = append(f.serviceLister, activeService, previewService) + f.kubeobjects = append(f.kubeobjects, oldRS, newRS, activeService, previewService) c, informers, _ := f.newController(noResyncPeriodFunc) stopCh := make(chan struct{}) informers.Start(stopCh) diff --git a/rollout/service.go b/rollout/service.go index c0904ffd23..0ed9ffbb4b 100644 --- a/rollout/service.go +++ b/rollout/service.go @@ -130,7 +130,7 @@ func (c *rolloutContext) areTargetsVerified() bool { // by an ALB Ingress, which can be determined if there exists a TargetGroupBinding object in the // namespace that references the given service func (c *rolloutContext) awsVerifyTargetGroups(svc *corev1.Service) error { - if !c.shouldVerifyTargetGroup(svc) { + if !shouldVerifyTargetGroup(c.rollout, c.newRS, svc) { return nil } logCtx := c.log.WithField(logutil.ServiceKey, svc.Name) @@ -182,14 +182,14 @@ func (c *rolloutContext) awsVerifyTargetGroups(svc *corev1.Service) error { } // shouldVerifyTargetGroup returns whether or not we should verify the target group -func (c *rolloutContext) shouldVerifyTargetGroup(svc *corev1.Service) bool { +func shouldVerifyTargetGroup(rollout *v1alpha1.Rollout, newRS *appsv1.ReplicaSet, svc *corev1.Service) bool { if !defaults.VerifyTargetGroup() { // feature is disabled return false } - desiredPodHash := c.newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] - if c.rollout.Spec.Strategy.BlueGreen != nil { - if c.rollout.Status.StableRS == desiredPodHash { + desiredPodHash := newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + if rollout.Spec.Strategy.BlueGreen != nil { + if rollout.Status.StableRS == desiredPodHash { // for blue-green, we only verify targets right after switching active service. So if // we are fully promoted, then there is no need to verify targets. // NOTE: this is the opposite of canary, where we only verify targets if stable == desired @@ -200,17 +200,17 @@ func (c *rolloutContext) shouldVerifyTargetGroup(svc *corev1.Service) bool { // we have not yet switched service selector return false } - if c.rollout.Status.BlueGreen.PostPromotionAnalysisRunStatus != nil { + if rollout.Status.BlueGreen.PostPromotionAnalysisRunStatus != nil { // we already started post-promotion analysis, so verification already occurred return false } return true - } else if c.rollout.Spec.Strategy.Canary != nil { - if c.rollout.Spec.Strategy.Canary.TrafficRouting == nil || c.rollout.Spec.Strategy.Canary.TrafficRouting.ALB == nil { + } else if rollout.Spec.Strategy.Canary != nil { + if rollout.Spec.Strategy.Canary.TrafficRouting == nil || rollout.Spec.Strategy.Canary.TrafficRouting.ALB == nil { // not ALB canary, so no need to verify targets return false } - if c.rollout.Status.StableRS != desiredPodHash { + if rollout.Status.StableRS != desiredPodHash { // for canary, we only verify targets right after switching stable service, which happens // after the update. So if stable != desired, we are still in the middle of an update // and there is no need to verify targets. diff --git a/rollout/service_test.go b/rollout/service_test.go index 0466634bde..21e7401653 100644 --- a/rollout/service_test.go +++ b/rollout/service_test.go @@ -13,7 +13,6 @@ import ( "github.com/stretchr/testify/mock" corev1 "k8s.io/api/core/v1" extensionsv1beta1 "k8s.io/api/extensions/v1beta1" - "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/util/intstr" @@ -53,7 +52,6 @@ func newService(name string, port int, selector map[string]string, ro *v1alpha1. } func TestGetPreviewAndActiveServices(t *testing.T) { - f := newFixture(t) defer f.Close() expActive := newService("active", 80, nil, nil) @@ -66,19 +64,16 @@ func TestGetPreviewAndActiveServices(t *testing.T) { otherRoSvc := newService("other-svc", 80, nil, otherRo) f.kubeobjects = append(f.kubeobjects, expActive, expPreview, otherRoSvc) f.serviceLister = append(f.serviceLister, expActive, expPreview, otherRoSvc) - rollout := &v1alpha1.Rollout{ - ObjectMeta: metav1.ObjectMeta{ - Namespace: metav1.NamespaceDefault, - }, - Spec: v1alpha1.RolloutSpec{ - Strategy: v1alpha1.RolloutStrategy{ - BlueGreen: &v1alpha1.BlueGreenStrategy{ - PreviewService: "preview", - ActiveService: "active", - }, - }, + rollout := newRollout("foo", 1, nil, map[string]string{"foo": "bar"}) + rollout.Spec.Strategy = v1alpha1.RolloutStrategy{ + BlueGreen: &v1alpha1.BlueGreenStrategy{ + PreviewService: "preview", + ActiveService: "active", }, } + f.rolloutLister = append(f.rolloutLister, rollout) + f.objects = append(f.objects, rollout) + c, _, _ := f.newController(noResyncPeriodFunc) t.Run("Get Both", func(t *testing.T) { roCtx, err := c.newRolloutContext(rollout) @@ -91,20 +86,14 @@ func TestGetPreviewAndActiveServices(t *testing.T) { t.Run("Preview not found", func(t *testing.T) { noPreviewSvcRollout := rollout.DeepCopy() noPreviewSvcRollout.Spec.Strategy.BlueGreen.PreviewService = "not-preview" - roCtx, err := c.newRolloutContext(noPreviewSvcRollout) - assert.NoError(t, err) - _, _, err = roCtx.getPreviewAndActiveServices() - assert.NotNil(t, err) - assert.True(t, errors.IsNotFound(err)) + _, err := c.newRolloutContext(noPreviewSvcRollout) + assert.Error(t, err) }) t.Run("Active not found", func(t *testing.T) { noActiveSvcRollout := rollout.DeepCopy() noActiveSvcRollout.Spec.Strategy.BlueGreen.ActiveService = "not-active" - roCtx, err := c.newRolloutContext(noActiveSvcRollout) - assert.NoError(t, err) - _, _, err = roCtx.getPreviewAndActiveServices() - assert.NotNil(t, err) - assert.True(t, errors.IsNotFound(err)) + _, err := c.newRolloutContext(noActiveSvcRollout) + assert.Error(t, err) }) t.Run("Invalid Spec: No Active Svc", func(t *testing.T) { @@ -132,7 +121,7 @@ func TestActiveServiceNotFound(t *testing.T) { f.serviceLister = append(f.serviceLister, previewSvc) patchIndex := f.expectPatchRolloutAction(r) - f.run(getKey(r, t)) + f.runExpectError(getKey(r, t), true) patch := f.getPatchedRollout(patchIndex) errmsg := "The Rollout \"foo\" is invalid: spec.strategy.blueGreen.activeService: Invalid value: \"active-svc\": service \"active-svc\" not found" @@ -160,7 +149,7 @@ func TestPreviewServiceNotFound(t *testing.T) { f.kubeobjects = append(f.kubeobjects, activeSvc) patchIndex := f.expectPatchRolloutAction(r) - f.run(getKey(r, t)) + f.runExpectError(getKey(r, t), true) patch := f.getPatchedRollout(patchIndex) errmsg := "The Rollout \"foo\" is invalid: spec.strategy.blueGreen.previewService: Invalid value: \"preview-svc\": service \"preview-svc\" not found" @@ -679,17 +668,12 @@ func TestShouldVerifyTargetGroups(t *testing.T) { defaults.SetVerifyTargetGroup(true) defer defaults.SetVerifyTargetGroup(false) - f := newFixture(t) - defer f.Close() - ctrl, _, _ := f.newController(noResyncPeriodFunc) - t.Run("CanaryNotUsingTrafficRouting", func(t *testing.T) { ro := newCanaryRollout("foo", 3, nil, nil, nil, intstr.FromString("25%"), intstr.FromString("25%")) - roCtx, err := ctrl.newRolloutContext(ro) - roCtx.newRS = newReplicaSetWithStatus(ro, 3, 3) - stableSvc := newService("stable", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: roCtx.newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, ro) - assert.NoError(t, err) - assert.False(t, roCtx.shouldVerifyTargetGroup(stableSvc)) + + newRS := newReplicaSetWithStatus(ro, 3, 3) + stableSvc := newService("stable", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, ro) + assert.False(t, shouldVerifyTargetGroup(ro, newRS, stableSvc)) }) t.Run("CanaryNotFullyPromoted", func(t *testing.T) { ro := newCanaryRollout("foo", 3, nil, nil, nil, intstr.FromString("25%"), intstr.FromString("25%")) @@ -698,12 +682,10 @@ func TestShouldVerifyTargetGroups(t *testing.T) { Ingress: "ingress", }, } - roCtx, err := ctrl.newRolloutContext(ro) - roCtx.newRS = newReplicaSetWithStatus(ro, 3, 3) - stableSvc := newService("stable", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: roCtx.newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, ro) + newRS := newReplicaSetWithStatus(ro, 3, 3) + stableSvc := newService("stable", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, ro) ro.Status.StableRS = "somethingelse" - assert.NoError(t, err) - assert.False(t, roCtx.shouldVerifyTargetGroup(stableSvc)) + assert.False(t, shouldVerifyTargetGroup(ro, newRS, stableSvc)) }) t.Run("CanaryFullyPromoted", func(t *testing.T) { ro := newCanaryRollout("foo", 3, nil, nil, nil, intstr.FromString("25%"), intstr.FromString("25%")) @@ -712,49 +694,40 @@ func TestShouldVerifyTargetGroups(t *testing.T) { Ingress: "ingress", }, } - roCtx, err := ctrl.newRolloutContext(ro) - roCtx.newRS = newReplicaSetWithStatus(ro, 3, 3) - stableSvc := newService("stable", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: roCtx.newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, ro) - ro.Status.StableRS = roCtx.newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] - assert.NoError(t, err) - assert.True(t, roCtx.shouldVerifyTargetGroup(stableSvc)) + newRS := newReplicaSetWithStatus(ro, 3, 3) + stableSvc := newService("stable", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, ro) + ro.Status.StableRS = newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + assert.True(t, shouldVerifyTargetGroup(ro, newRS, stableSvc)) }) t.Run("BlueGreenFullyPromoted", func(t *testing.T) { ro := newBlueGreenRollout("foo", 3, nil, "active-svc", "") - roCtx, err := ctrl.newRolloutContext(ro) - roCtx.newRS = newReplicaSetWithStatus(ro, 3, 3) - activeSvc := newService("active-svc", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: roCtx.newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, ro) - ro.Status.StableRS = roCtx.newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] - assert.NoError(t, err) - assert.False(t, roCtx.shouldVerifyTargetGroup(activeSvc)) + + newRS := newReplicaSetWithStatus(ro, 3, 3) + activeSvc := newService("active-svc", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, ro) + ro.Status.StableRS = newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + assert.False(t, shouldVerifyTargetGroup(ro, newRS, activeSvc)) }) t.Run("BlueGreenBeforePromotion", func(t *testing.T) { ro := newBlueGreenRollout("foo", 3, nil, "active-svc", "") - roCtx, err := ctrl.newRolloutContext(ro) - roCtx.newRS = newReplicaSetWithStatus(ro, 3, 3) + newRS := newReplicaSetWithStatus(ro, 3, 3) activeSvc := newService("active-svc", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: "oldrshash"}, ro) ro.Status.StableRS = "oldrshash" - assert.NoError(t, err) - assert.False(t, roCtx.shouldVerifyTargetGroup(activeSvc)) + assert.False(t, shouldVerifyTargetGroup(ro, newRS, activeSvc)) }) t.Run("BlueGreenAfterPromotionAfterPromotionAnalysisStarted", func(t *testing.T) { ro := newBlueGreenRollout("foo", 3, nil, "active-svc", "") - roCtx, err := ctrl.newRolloutContext(ro) - roCtx.newRS = newReplicaSetWithStatus(ro, 3, 3) - activeSvc := newService("active-svc", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: roCtx.newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, ro) + newRS := newReplicaSetWithStatus(ro, 3, 3) + activeSvc := newService("active-svc", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, ro) ro.Status.StableRS = "oldrshash" ro.Status.BlueGreen.PostPromotionAnalysisRunStatus = &v1alpha1.RolloutAnalysisRunStatus{} - assert.NoError(t, err) - assert.False(t, roCtx.shouldVerifyTargetGroup(activeSvc)) + assert.False(t, shouldVerifyTargetGroup(ro, newRS, activeSvc)) }) t.Run("BlueGreenAfterPromotion", func(t *testing.T) { ro := newBlueGreenRollout("foo", 3, nil, "active-svc", "") - roCtx, err := ctrl.newRolloutContext(ro) - roCtx.newRS = newReplicaSetWithStatus(ro, 3, 3) - activeSvc := newService("active-svc", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: roCtx.newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, ro) + newRS := newReplicaSetWithStatus(ro, 3, 3) + activeSvc := newService("active-svc", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: newRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]}, ro) ro.Status.StableRS = "oldrshash" - assert.NoError(t, err) - assert.True(t, roCtx.shouldVerifyTargetGroup(activeSvc)) + assert.True(t, shouldVerifyTargetGroup(ro, newRS, activeSvc)) }) } @@ -773,6 +746,9 @@ func TestDelayCanaryStableServiceLabelInjection(t *testing.T) { f.kubeobjects = append(f.kubeobjects, canarySvc, stableSvc) f.serviceLister = append(f.serviceLister, canarySvc, stableSvc) + f.objects = append(f.objects, ro2) + f.rolloutLister = append(f.rolloutLister, ro2) + { // first ensure we don't update service because new/stable are both not available ctrl, _, _ := f.newController(noResyncPeriodFunc) @@ -840,6 +816,9 @@ func TestDelayCanaryStableServiceDelayOnAdoptedService(t *testing.T) { f.kubeobjects = append(f.kubeobjects, canarySvc, stableSvc) f.serviceLister = append(f.serviceLister, canarySvc, stableSvc) + f.objects = append(f.objects, ro2) + f.rolloutLister = append(f.rolloutLister, ro2) + t.Run("AdoptedService No Availability", func(t *testing.T) { // first ensure we don't update service because new/stable are both not available ctrl, _, _ := f.newController(noResyncPeriodFunc) diff --git a/rollout/sync.go b/rollout/sync.go index a2d4a0d1e7..541657ff17 100644 --- a/rollout/sync.go +++ b/rollout/sync.go @@ -42,18 +42,13 @@ import ( // // Note that currently the rollout controller is using caches to avoid querying the server for reads. // This may lead to stale reads of replica sets, thus incorrect v status. -func (c *rolloutContext) getAllReplicaSetsAndSyncRevision(createIfNotExisted bool) (*appsv1.ReplicaSet, error) { +func (c *rolloutContext) getAllReplicaSetsAndSyncRevision() (*appsv1.ReplicaSet, error) { // Get new replica set with the updated revision number newRS, err := c.syncReplicaSetRevision() if err != nil { return nil, err } - if newRS == nil && createIfNotExisted { - newRS, err = c.createDesiredReplicaSet() - if err != nil { - return nil, err - } - } + return newRS, nil } @@ -277,7 +272,7 @@ func (c *rolloutContext) createDesiredReplicaSet() (*appsv1.ReplicaSet, error) { func (c *rolloutContext) syncReplicasOnly() error { c.log.Infof("Syncing replicas only due to scaling event") var err error - c.newRS, err = c.getAllReplicaSetsAndSyncRevision(false) + c.newRS, err = c.getAllReplicaSetsAndSyncRevision() if err != nil { return fmt.Errorf("failed to getAllReplicaSetsAndSyncRevision in syncReplicasOnly: %w", err) } @@ -324,7 +319,7 @@ func (c *rolloutContext) syncReplicasOnly() error { // rsList should come from getReplicaSetsForRollout(r). func (c *rolloutContext) isScalingEvent() (bool, error) { var err error - c.newRS, err = c.getAllReplicaSetsAndSyncRevision(false) + c.newRS, err = c.getAllReplicaSetsAndSyncRevision() if err != nil { return false, fmt.Errorf("failed to getAllReplicaSetsAndSyncRevision in isScalingEvent: %w", err) } @@ -729,7 +724,7 @@ func (c *rolloutContext) calculateRolloutConditions(newStatus v1alpha1.RolloutSt if conditions.SetRolloutCondition(&newStatus, *updateCompletedCond) { revision, _ := replicasetutil.Revision(c.rollout) c.recorder.Eventf(c.rollout, record.EventOptions{EventReason: conditions.RolloutNotCompletedReason}, - conditions.RolloutNotCompletedMessage, revision+1, newStatus.CurrentPodHash) + conditions.RolloutNotCompletedMessage, revision, newStatus.CurrentPodHash) } } diff --git a/rollout/trafficrouting_test.go b/rollout/trafficrouting_test.go index f358a18f64..bc8a0a7672 100644 --- a/rollout/trafficrouting_test.go +++ b/rollout/trafficrouting_test.go @@ -7,6 +7,10 @@ import ( "testing" "time" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "github.com/argoproj/argo-rollouts/rollout/trafficrouting/apisix" "github.com/stretchr/testify/assert" @@ -1132,6 +1136,34 @@ func TestRolloutReplicaIsAvailableAndGenerationNotBeModifiedShouldModifyVirtualS }, } r1 := newCanaryRollout("foo", 1, nil, steps, pointer.Int32(1), intstr.FromInt(1), intstr.FromInt(1)) + vs := istio.VirtualService{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test", + Namespace: r1.Namespace, + }, + Spec: istio.VirtualServiceSpec{ + HTTP: []istio.VirtualServiceHTTPRoute{{ + Name: "primary", + Route: []istio.VirtualServiceRouteDestination{{ + Destination: istio.VirtualServiceDestination{ + Host: "stable", + //Port: &istio.Port{ + // Number: 80, + //}, + }, + Weight: 100, + }, { + Destination: istio.VirtualServiceDestination{ + Host: "canary", + //Port: &istio.Port{ + // Number: 80, + //}, + }, + Weight: 0, + }}, + }}, + }, + } r1.Spec.Strategy.Canary.TrafficRouting = &v1alpha1.RolloutTrafficRouting{ Istio: &v1alpha1.IstioTrafficRouting{ VirtualService: &v1alpha1.IstioVirtualService{ @@ -1140,11 +1172,6 @@ func TestRolloutReplicaIsAvailableAndGenerationNotBeModifiedShouldModifyVirtualS "primary", }, }, - DestinationRule: &v1alpha1.IstioDestinationRule{ - Name: "test", - StableSubsetName: "stable", - CanarySubsetName: "canary", - }, }, ManagedRoutes: []v1alpha1.MangedRoutes{ { @@ -1157,8 +1184,14 @@ func TestRolloutReplicaIsAvailableAndGenerationNotBeModifiedShouldModifyVirtualS APIVersion: "apps/v1", Kind: "Deployment", } - r1.Spec.SelectorResolvedFromRef = true + r1.Spec.SelectorResolvedFromRef = false r1.Spec.TemplateResolvedFromRef = true + r1.Spec.Strategy.Canary.CanaryService = "canary" + r1.Spec.Strategy.Canary.StableService = "stable" + r1.Spec.Selector = &metav1.LabelSelector{ + MatchLabels: map[string]string{"app": "test"}, + } + r1.Labels = map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: "testsha"} r2 := bumpVersion(r1) // if set WorkloadRef it does not change the generation @@ -1185,13 +1218,26 @@ func TestRolloutReplicaIsAvailableAndGenerationNotBeModifiedShouldModifyVirtualS PodTemplateHash: rs1PodHash, }, } + + mapObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&vs) + assert.Nil(t, err) + + unstructuredObj := &unstructured.Unstructured{Object: mapObj} + unstructuredObj.SetGroupVersionKind(schema.GroupVersionKind{ + Group: istioutil.GetIstioVirtualServiceGVR().Group, + Version: istioutil.GetIstioVirtualServiceGVR().Version, + Kind: "VirtualService", + }) + f.kubeobjects = append(f.kubeobjects, rs1, rs2, canarySvc, stableSvc) + f.serviceLister = append(f.serviceLister, canarySvc, stableSvc) f.replicaSetLister = append(f.replicaSetLister, rs1, rs2) f.rolloutLister = append(f.rolloutLister, r2) - f.objects = append(f.objects, r2) + f.objects = append(f.objects, r2, unstructuredObj) + f.expectUpdateRolloutAction(r2) + f.expectUpdateRolloutStatusAction(r2) f.expectPatchRolloutAction(r2) - f.expectPatchReplicaSetAction(rs1) - f.expectPatchReplicaSetAction(rs2) + f.expectCreateReplicaSetAction(rs2) f.fakeTrafficRouting = newUnmockedFakeTrafficRoutingReconciler() f.fakeTrafficRouting.On("SetHeaderRoute", &v1alpha1.SetHeaderRoute{ Name: "test-header", diff --git a/test/e2e/canary_test.go b/test/e2e/canary_test.go index 7bf3af22c8..7c39f6e3bd 100644 --- a/test/e2e/canary_test.go +++ b/test/e2e/canary_test.go @@ -604,6 +604,7 @@ func (s *CanarySuite) TestCanaryWithPausedRollout() { WaitForRolloutStatus("Paused"). UpdateSpec(). // update to revision 3 WaitForRolloutStatus("Paused"). + Sleep(1*time.Second). Then(). ExpectRevisionPodCount("1", 3). ExpectRevisionPodCount("2", 0). diff --git a/test/e2e/functional_test.go b/test/e2e/functional_test.go index 668c75bb0c..8cc95f9914 100644 --- a/test/e2e/functional_test.go +++ b/test/e2e/functional_test.go @@ -91,26 +91,26 @@ spec: ExpectRevisionPodCount("2", 1). ExpectRolloutEvents([]string{ "RolloutAddedToInformer", // Rollout added to informer cache - "RolloutNotCompleted", // Rollout not completed, started update to revision 0 (7fd9b5545c) "RolloutUpdated", // Rollout updated to revision 1 "NewReplicaSetCreated", // Created ReplicaSet abort-retry-promote-698fbfb9dc (revision 1) + "RolloutNotCompleted", // Rollout not completed, started update to revision 2 (7fd9b5545c) "ScalingReplicaSet", // Scaled up ReplicaSet abort-retry-promote-698fbfb9dc (revision 1) from 0 to 1 "RolloutCompleted", // Rollout completed update to revision 1 (698fbfb9dc): Initial deploy - "RolloutNotCompleted", - "RolloutUpdated", // Rollout updated to revision 2 - "NewReplicaSetCreated", // Created ReplicaSet abort-retry-promote-75dcb5ddd6 (revision 2) - "ScalingReplicaSet", // Scaled up ReplicaSet abort-retry-promote-75dcb5ddd6 (revision 2) from 0 to 1 - "RolloutStepCompleted", // Rollout step 1/2 completed (setWeight: 50) - "RolloutPaused", // Rollout is paused (CanaryPauseStep) - "ScalingReplicaSet", // Scaled down ReplicaSet abort-retry-promote-75dcb5ddd6 (revision 2) from 1 to 0 - "RolloutAborted", // Rollout aborted update to revision 2 - "ScalingReplicaSet", // Scaled up ReplicaSet abort-retry-promote-75dcb5ddd6 (revision 2) from 0 to 1 - "RolloutStepCompleted", // Rollout step 1/2 completed (setWeight: 50) - "RolloutPaused", // Rollout is paused (CanaryPauseStep) - "RolloutStepCompleted", // Rollout step 2/2 completed (pause: 3s) - "RolloutResumed", // Rollout is resumed - "ScalingReplicaSet", // Scaled down ReplicaSet abort-retry-promote-698fbfb9dc (revision 1) from 1 to 0 - "RolloutCompleted", // Rollout completed update to revision 2 (75dcb5ddd6): Completed all 2 canary steps + "RolloutUpdated", // Rollout updated to revision 2 + "NewReplicaSetCreated", // Created ReplicaSet abort-retry-promote-75dcb5ddd6 (revision 2) + "RolloutNotCompleted", // Rollout not completed, started update to revision 3 (5bb7978cd) + "ScalingReplicaSet", // Scaled up ReplicaSet abort-retry-promote-75dcb5ddd6 (revision 2) from 0 to 1 + "RolloutStepCompleted", // Rollout step 1/2 completed (setWeight: 50) + "RolloutPaused", // Rollout is paused (CanaryPauseStep) + "ScalingReplicaSet", // Scaled down ReplicaSet abort-retry-promote-75dcb5ddd6 (revision 2) from 1 to 0 + "RolloutAborted", // Rollout aborted update to revision 2 + "ScalingReplicaSet", // Scaled up ReplicaSet abort-retry-promote-75dcb5ddd6 (revision 2) from 0 to 1 + "RolloutStepCompleted", // Rollout step 1/2 completed (setWeight: 50) + "RolloutPaused", // Rollout is paused (CanaryPauseStep) + "RolloutStepCompleted", // Rollout step 2/2 completed (pause: 3s) + "RolloutResumed", // Rollout is resumed + "ScalingReplicaSet", // Scaled down ReplicaSet abort-retry-promote-698fbfb9dc (revision 1) from 1 to 0 + "RolloutCompleted", // Rollout completed update to revision 2 (75dcb5ddd6): Completed all 2 canary steps }) } @@ -1615,3 +1615,62 @@ spec: Then(). ExpectDeploymentReplicasCount("The deployment has not been scaled", "rollout-ref-deployment", 2) } + +func (s *FunctionalSuite) TestSpecAndReplicaChangeSameTime() { + s.Given(). + HealthyRollout(` +apiVersion: argoproj.io/v1alpha1 +kind: Rollout +metadata: + name: canary-change-same-time +spec: + replicas: 2 + strategy: + canary: + steps: + - setWeight: 10 + - pause: {duration: 10s} + - setWeight: 20 + - pause: {duration: 5s} + selector: + matchLabels: + app: canary-change-same-time + template: + metadata: + labels: + app: canary-change-same-time + spec: + containers: + - name: canary-change-same-time + image: nginx:1.19-alpine + resources: + requests: + memory: 16Mi + cpu: 1m +`). + When(). + WaitForRolloutStatus("Healthy"). + PatchSpec(` +spec: + replicas: 3 + template: + spec: + containers: + - name: canary-change-same-time + env: + - name: TEST + value: test`). + WaitForRolloutStatus("Paused"). + PatchSpec(` +spec: + replicas: 4 + template: + spec: + containers: + - name: canary-change-same-time + env: + - name: TEST + value: test-new`). + WaitForRolloutStatus("Healthy").Then(). + ExpectReplicaCounts(4, 4, 4, 4, 4) +} diff --git a/test/e2e/istio_test.go b/test/e2e/istio_test.go index 9797b3e503..7370dc5238 100644 --- a/test/e2e/istio_test.go +++ b/test/e2e/istio_test.go @@ -335,6 +335,7 @@ func (s *IstioSuite) TestIstioUpdateInMiddleZeroCanaryReplicas() { ExpectRevisionPodCount("2", 1). When(). UpdateSpec(). + WaitForRevisionPodCount("3", 1). WaitForRolloutStatus("Paused"). Then(). ExpectRevisionPodCount("3", 1) diff --git a/utils/replicaset/replicaset.go b/utils/replicaset/replicaset.go index b2664afd53..272449e778 100644 --- a/utils/replicaset/replicaset.go +++ b/utils/replicaset/replicaset.go @@ -72,6 +72,7 @@ func FindNewReplicaSet(rollout *v1alpha1.Rollout, rsList []*appsv1.ReplicaSet) * } } // new ReplicaSet does not exist. + return nil } From 23e186e43db1ed6145397af91395747613fb8d01 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:46:20 -0500 Subject: [PATCH 125/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.27 to 1.27.30 (#3804) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.27 to 1.27.30. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.27...config/v1.27.30) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 24 ++++++++++++------------ go.sum | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/go.mod b/go.mod index 5e1cd15cbe..a8dfab0402 100644 --- a/go.mod +++ b/go.mod @@ -8,8 +8,8 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.30.3 - github.com/aws/aws-sdk-go-v2/config v1.27.27 + github.com/aws/aws-sdk-go-v2 v1.30.4 + github.com/aws/aws-sdk-go-v2/config v1.27.30 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.3 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.4 @@ -83,17 +83,17 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.27 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.29 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.22.5 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.30.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect diff --git a/go.sum b/go.sum index f6205ba55c..c1a266076b 100644 --- a/go.sum +++ b/go.sum @@ -96,36 +96,36 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= -github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= -github.com/aws/aws-sdk-go-v2/config v1.27.27 h1:HdqgGt1OAP0HkEDDShEl0oSYa9ZZBSOmKpdpsDMdO90= -github.com/aws/aws-sdk-go-v2/config v1.27.27/go.mod h1:MVYamCg76dFNINkZFu4n4RjDixhVr51HLj4ErWzrVwg= -github.com/aws/aws-sdk-go-v2/credentials v1.17.27 h1:2raNba6gr2IfA0eqqiP2XiQ0UVOpGPgDSi0I9iAP+UI= -github.com/aws/aws-sdk-go-v2/credentials v1.17.27/go.mod h1:gniiwbGahQByxan6YjQUMcW4Aov6bLC3m+evgcoN4r4= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 h1:KreluoV8FZDEtI6Co2xuNk/UqI9iwMrOx/87PBNIKqw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11/go.mod h1:SeSUYBLsMYFoRvHE0Tjvn7kbxaUhl75CJi1sbfhMxkU= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15/go.mod h1:U9ke74k1n2bf+RIgoX1SXFed1HLs51OgUSs+Ph0KJP8= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 h1:C6WHdGnTDIYETAm5iErQUiVNsclNx9qbJVPIt03B6bI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15/go.mod h1:ZQLZqhcu+JhSrA9/NXRm8SkDvsycE+JkV3WGY41e+IM= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= +github.com/aws/aws-sdk-go-v2 v1.30.4 h1:frhcagrVNrzmT95RJImMHgabt99vkXGslubDaDagTk8= +github.com/aws/aws-sdk-go-v2 v1.30.4/go.mod h1:CT+ZPWXbYrci8chcARI3OmI/qgd+f6WtuLOoaIA8PR0= +github.com/aws/aws-sdk-go-v2/config v1.27.30 h1:AQF3/+rOgeJBQP3iI4vojlPib5X6eeOYoa/af7OxAYg= +github.com/aws/aws-sdk-go-v2/config v1.27.30/go.mod h1:yxqvuubha9Vw8stEgNiStO+yZpP68Wm9hLmcm+R/Qk4= +github.com/aws/aws-sdk-go-v2/credentials v1.17.29 h1:CwGsupsXIlAFYuDVHv1nnK0wnxO0wZ/g1L8DSK/xiIw= +github.com/aws/aws-sdk-go-v2/credentials v1.17.29/go.mod h1:BPJ/yXV92ZVq6G8uYvbU0gSl8q94UB63nMT5ctNO38g= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12 h1:yjwoSyDZF8Jth+mUk5lSPJCkMC0lMy6FaCD51jm6ayE= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12/go.mod h1:fuR57fAgMk7ot3WcNQfb6rSEn+SUffl7ri+aa8uKysI= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16 h1:TNyt/+X43KJ9IJJMjKfa3bNTiZbUP7DeCxfbTROESwY= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16/go.mod h1:2DwJF39FlNAUiX5pAc0UNeiz16lK2t7IaFcm0LFHEgc= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 h1:jYfy8UPmd+6kJW5YhY0L1/KftReOGxI/4NtVSTh9O/I= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16/go.mod h1:7ZfEPZxkW42Afq4uQB8H2E2e6ebh6mXTueEpYzjCzcs= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.3 h1:VminN0bFfPQkaJ2MZOJh0d7+sVu0SKdZnO9FfyE1C18= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.3/go.mod h1:SxcxnimuI5pVps173h7VcyuFadgOFFfl2aUXUCswoY0= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 h1:dT3MqvGhSoaIhRseqw2I0yH81l7wiR2vjs57O51EAm8= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3/go.mod h1:GlAeCkHwugxdHaueRr4nhPuY+WW+gR8UjlcqzPr1SPI= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 h1:HGErhhrxZlQ044RiM+WdoZxp0p+EGM62y3L6pwA4olE= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 h1:KypMCbLPPHEmf9DgMGw51jMj77VfGPAN2Kv4cfhlfgI= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4/go.mod h1:Vz1JQXliGcQktFTN/LN6uGppAIRoLBR2bMvIMP0gOjc= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18 h1:tJ5RnkHCiSH0jyd6gROjlJtNwov0eGYNz8s8nFcR0jQ= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18/go.mod h1:++NHzT+nAF7ZPrHPsA+ENvsXkOO8wEu+C6RXltAG4/c= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 h1:BXx0ZIxvrJdSgSvKTZ+yRBeSqqgPM89VPlulEcl37tM= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.5 h1:zCsFCKvbj25i7p1u94imVoO447I/sFv8qq+lGJhRN0c= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.5/go.mod h1:ZeDX1SnKsVlejeuz41GiajjZpRSWR7/42q/EyA/QEiM= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.5 h1:SKvPgvdvmiTWoi0GAJ7AsJfOz3ngVkD/ERbs5pUnHNI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.5/go.mod h1:20sz31hv/WsPa3HhU3hfrIet2kxM4Pe0r20eBZ20Tac= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.5 h1:OMsEmCyz2i89XwRwPouAJvhj81wINh+4UK+k/0Yo/q8= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.5/go.mod h1:vmSqFK+BVIwVpDAGZB3CoCXHzurt4qBE8lf+I/kRTh0= github.com/aws/smithy-go v1.20.4 h1:2HK1zBdPgRbjFOHlfeQZfpC4r72MOb9bZkiFwggKO+4= github.com/aws/smithy-go v1.20.4/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= From 8a9ef9f8ee8ae7bc426ffd18a03adc409f5d6d5f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Aug 2024 12:10:55 -0500 Subject: [PATCH 126/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.3 to 1.40.5 (#3808) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.40.3 to 1.40.5. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/rds/v1.40.3...service/rds/v1.40.5) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a8dfab0402..357c272634 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.30.4 github.com/aws/aws-sdk-go-v2/config v1.27.30 - github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.3 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.5 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.4 github.com/blang/semver v3.5.1+incompatible diff --git a/go.sum b/go.sum index c1a266076b..7c847117a9 100644 --- a/go.sum +++ b/go.sum @@ -110,8 +110,8 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 h1:jYfy8UPmd+6kJW5YhY github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16/go.mod h1:7ZfEPZxkW42Afq4uQB8H2E2e6ebh6mXTueEpYzjCzcs= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.3 h1:VminN0bFfPQkaJ2MZOJh0d7+sVu0SKdZnO9FfyE1C18= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.3/go.mod h1:SxcxnimuI5pVps173h7VcyuFadgOFFfl2aUXUCswoY0= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.5 h1:/YvqO1j75i4leoV+Z3a5s/dAlEszf2wTKBW8jc3Gd4s= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.5/go.mod h1:maEDlnDRdhsc0xrUljh3dUJbej11AHz+VTQJsNw1QmE= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 h1:KypMCbLPPHEmf9DgMGw51jMj77VfGPAN2Kv4cfhlfgI= From f9b62a8da51b95aa3f1d64038141e01dc2a5c8da Mon Sep 17 00:00:00 2001 From: Jahvon Dockery Date: Tue, 27 Aug 2024 13:21:23 -0400 Subject: [PATCH 127/219] fix: retain non-nginx canary annotations. Fixes: #1070 (#3806) fix: retain nginx canary annotations Signed-off-by: Jahvon Dockery --- rollout/trafficrouting/nginx/nginx.go | 14 ++++++++++ rollout/trafficrouting/nginx/nginx_test.go | 31 ++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/rollout/trafficrouting/nginx/nginx.go b/rollout/trafficrouting/nginx/nginx.go index 1eb8670b6a..73227fa75c 100644 --- a/rollout/trafficrouting/nginx/nginx.go +++ b/rollout/trafficrouting/nginx/nginx.go @@ -325,6 +325,7 @@ func (r *Reconciler) SetWeightPerIngress(desiredWeight int32, ingresses []string } // Make patches + desiredCanaryIngress.SetAnnotations(getDesiredAnnotations(canaryIngress, desiredCanaryIngress)) patch, modified, err := ingressutil.BuildIngressPatch(canaryIngress.Mode(), canaryIngress, desiredCanaryIngress, ingressutil.WithAnnotations(), ingressutil.WithLabels(), ingressutil.WithSpec()) @@ -371,3 +372,16 @@ func (r *Reconciler) SetMirrorRoute(setMirrorRoute *v1alpha1.SetMirrorRoute) err func (r *Reconciler) RemoveManagedRoutes() error { return nil } + +func getDesiredAnnotations(current, desired *ingressutil.Ingress) map[string]string { + // Merge existing annotations into the desired Ingress (giving precedence to the desired values) + // This is necessary because the desired Ingress may not have all annotations previously added + // by other controllers (e.g. Rancher) + desiredAnnotations := desired.GetAnnotations() + for k, v := range current.GetAnnotations() { + if _, ok := desiredAnnotations[k]; !ok { + desiredAnnotations[k] = v + } + } + return desiredAnnotations +} diff --git a/rollout/trafficrouting/nginx/nginx_test.go b/rollout/trafficrouting/nginx/nginx_test.go index 37c7f04a2c..5d258a74d0 100644 --- a/rollout/trafficrouting/nginx/nginx_test.go +++ b/rollout/trafficrouting/nginx/nginx_test.go @@ -614,6 +614,37 @@ func TestCanaryIngressAdditionalAnnotationsNewIngress(t *testing.T) { } } +func TestCanaryIngressRetainCurrentAnnotations(t *testing.T) { + tests := generateMultiIngressTestData() + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + for _, ing := range test.ingresses { + r := Reconciler{ + cfg: ReconcilerConfig{ + Rollout: fakeRollout(stableService, canaryService, test.singleIngress, test.multiIngress), + }, + } + stable := networkingIngress(StableIngress, 80, stableService) + stableIngress := ingressutil.NewIngress(stable) + canary := networkingIngress(ingressutil.GetCanaryIngressName(r.cfg.Rollout.GetName(), ing), 80, canaryService) + canary.SetAnnotations(map[string]string{ + "nginx.ingress.kubernetes.io/canary": "false", + "annotation-prefix.some.group/some-key": "some-value", + }) + canaryIngress := ingressutil.NewIngress(canary) + + desiredCanaryIngress, err := r.canaryIngress(stableIngress, ingressutil.GetCanaryIngressName(r.cfg.Rollout.GetName(), ing), 15) + assert.Nil(t, err, "No error returned when calling canaryIngress") + + annotations := getDesiredAnnotations(canaryIngress, desiredCanaryIngress) + assert.Equal(t, "true", annotations["nginx.ingress.kubernetes.io/canary"], "canary annotation set to true") + assert.Equal(t, "15", annotations["nginx.ingress.kubernetes.io/canary-weight"], "canary-weight annotation set to expected value") + assert.Equal(t, "some-value", annotations["annotation-prefix.some.group/some-key"], "existing canary annotation is retained") + } + }) + } +} + func TestCanaryIngressMaxWeightInTrafficRouting(t *testing.T) { maxWeights := []*int32{nil, pointer.Int32(1000)} for _, maxWeight := range maxWeights { From 22cdc1f2589ccfdafb6e49910faa439b4a6c2017 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Aug 2024 17:47:44 +0000 Subject: [PATCH 128/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.30 to 1.27.31 (#3807) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.30 to 1.27.31. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.30...config/v1.27.31) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 357c272634..c0e60a69fb 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.30.4 - github.com/aws/aws-sdk-go-v2/config v1.27.30 + github.com/aws/aws-sdk-go-v2/config v1.27.31 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.5 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.4 @@ -83,7 +83,7 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.29 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.30 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 // indirect diff --git a/go.sum b/go.sum index 7c847117a9..ce3b4763a7 100644 --- a/go.sum +++ b/go.sum @@ -98,10 +98,10 @@ github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WN github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v1.30.4 h1:frhcagrVNrzmT95RJImMHgabt99vkXGslubDaDagTk8= github.com/aws/aws-sdk-go-v2 v1.30.4/go.mod h1:CT+ZPWXbYrci8chcARI3OmI/qgd+f6WtuLOoaIA8PR0= -github.com/aws/aws-sdk-go-v2/config v1.27.30 h1:AQF3/+rOgeJBQP3iI4vojlPib5X6eeOYoa/af7OxAYg= -github.com/aws/aws-sdk-go-v2/config v1.27.30/go.mod h1:yxqvuubha9Vw8stEgNiStO+yZpP68Wm9hLmcm+R/Qk4= -github.com/aws/aws-sdk-go-v2/credentials v1.17.29 h1:CwGsupsXIlAFYuDVHv1nnK0wnxO0wZ/g1L8DSK/xiIw= -github.com/aws/aws-sdk-go-v2/credentials v1.17.29/go.mod h1:BPJ/yXV92ZVq6G8uYvbU0gSl8q94UB63nMT5ctNO38g= +github.com/aws/aws-sdk-go-v2/config v1.27.31 h1:kxBoRsjhT3pq0cKthgj6RU6bXTm/2SgdoUMyrVw0rAI= +github.com/aws/aws-sdk-go-v2/config v1.27.31/go.mod h1:z04nZdSWFPaDwK3DdJOG2r+scLQzMYuJeW0CujEm9FM= +github.com/aws/aws-sdk-go-v2/credentials v1.17.30 h1:aau/oYFtibVovr2rDt8FHlU17BTicFEMAi29V1U+L5Q= +github.com/aws/aws-sdk-go-v2/credentials v1.17.30/go.mod h1:BPJ/yXV92ZVq6G8uYvbU0gSl8q94UB63nMT5ctNO38g= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12 h1:yjwoSyDZF8Jth+mUk5lSPJCkMC0lMy6FaCD51jm6ayE= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12/go.mod h1:fuR57fAgMk7ot3WcNQfb6rSEn+SUffl7ri+aa8uKysI= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16 h1:TNyt/+X43KJ9IJJMjKfa3bNTiZbUP7DeCxfbTROESwY= From 39764fb2392b252fd18df29640ff9958e7b4685b Mon Sep 17 00:00:00 2001 From: Wietse Muizelaar Date: Wed, 28 Aug 2024 00:13:16 +0200 Subject: [PATCH 129/219] fix(trafficrouting): Fix downtime on initial deployment using Istio DestinationRule Subsets. Fixes #2507 (#3602) Signed-off-by: Wietse Muizelaar --- rollout/trafficrouting.go | 4 +- rollout/trafficrouting/istio/istio.go | 20 ++- rollout/trafficrouting/istio/istio_test.go | 168 ++++++++++++++++----- 3 files changed, 148 insertions(+), 44 deletions(-) diff --git a/rollout/trafficrouting.go b/rollout/trafficrouting.go index e992277a57..3ed2564760 100644 --- a/rollout/trafficrouting.go +++ b/rollout/trafficrouting.go @@ -41,9 +41,9 @@ func (c *Controller) NewTrafficRoutingReconciler(roCtx *rolloutContext) ([]traff } if rollout.Spec.Strategy.Canary.TrafficRouting.Istio != nil { if c.IstioController.VirtualServiceInformer.HasSynced() { - trafficReconcilers = append(trafficReconcilers, istio.NewReconciler(rollout, c.IstioController.DynamicClientSet, c.recorder, c.IstioController.VirtualServiceLister, c.IstioController.DestinationRuleLister)) + trafficReconcilers = append(trafficReconcilers, istio.NewReconciler(rollout, c.IstioController.DynamicClientSet, c.recorder, c.IstioController.VirtualServiceLister, c.IstioController.DestinationRuleLister, roCtx.allRSs)) } else { - trafficReconcilers = append(trafficReconcilers, istio.NewReconciler(rollout, c.IstioController.DynamicClientSet, c.recorder, nil, nil)) + trafficReconcilers = append(trafficReconcilers, istio.NewReconciler(rollout, c.IstioController.DynamicClientSet, c.recorder, nil, nil, roCtx.allRSs)) } } if rollout.Spec.Strategy.Canary.TrafficRouting.Nginx != nil { diff --git a/rollout/trafficrouting/istio/istio.go b/rollout/trafficrouting/istio/istio.go index bb9a15eb5e..040960c7fd 100644 --- a/rollout/trafficrouting/istio/istio.go +++ b/rollout/trafficrouting/istio/istio.go @@ -6,10 +6,13 @@ import ( "fmt" "strings" + replicasetutil "github.com/argoproj/argo-rollouts/utils/replicaset" + "github.com/mitchellh/mapstructure" + appsv1 "k8s.io/api/apps/v1" + "github.com/argoproj/argo-rollouts/rollout/trafficrouting" jsonpatch "github.com/evanphx/json-patch/v5" - "github.com/mitchellh/mapstructure" log "github.com/sirupsen/logrus" k8serrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -32,7 +35,7 @@ const Type = "Istio" const SpecHttpNotFound = "spec.http not found" // NewReconciler returns a reconciler struct that brings the Virtual Service into the desired state -func NewReconciler(r *v1alpha1.Rollout, client dynamic.Interface, recorder record.EventRecorder, virtualServiceLister, destinationRuleLister dynamiclister.Lister) *Reconciler { +func NewReconciler(r *v1alpha1.Rollout, client dynamic.Interface, recorder record.EventRecorder, virtualServiceLister, destinationRuleLister dynamiclister.Lister, replicaSets []*appsv1.ReplicaSet) *Reconciler { return &Reconciler{ rollout: r, log: logutil.WithRollout(r), @@ -41,6 +44,7 @@ func NewReconciler(r *v1alpha1.Rollout, client dynamic.Interface, recorder recor recorder: recorder, virtualServiceLister: virtualServiceLister, destinationRuleLister: destinationRuleLister, + replicaSets: replicaSets, } } @@ -52,6 +56,7 @@ type Reconciler struct { recorder record.EventRecorder virtualServiceLister dynamiclister.Lister destinationRuleLister dynamiclister.Lister + replicaSets []*appsv1.ReplicaSet } type virtualServicePatch struct { @@ -315,6 +320,17 @@ func (r *Reconciler) reconcileVirtualService(obj *unstructured.Unstructured, vsv } func (r *Reconciler) UpdateHash(canaryHash, stableHash string, additionalDestinations ...v1alpha1.WeightDestination) error { + // We need to check if the replicasets are ready here as well if we didn't define any services in the rollout + // See: https://github.com/argoproj/argo-rollouts/issues/2507 + if r.rollout.Spec.Strategy.Canary.CanaryService == "" && r.rollout.Spec.Strategy.Canary.StableService == "" { + + for _, rs := range r.replicaSets { + if *rs.Spec.Replicas > 0 && !replicasetutil.IsReplicaSetAvailable(rs) { + return fmt.Errorf("delaying destination rule switch: ReplicaSet %s not fully available", rs.Name) + } + } + } + dRuleSpec := r.rollout.Spec.Strategy.Canary.TrafficRouting.Istio.DestinationRule if dRuleSpec == nil { return nil diff --git a/rollout/trafficrouting/istio/istio_test.go b/rollout/trafficrouting/istio/istio_test.go index c6c0f8d9a1..32050fe2b4 100644 --- a/rollout/trafficrouting/istio/istio_test.go +++ b/rollout/trafficrouting/istio/istio_test.go @@ -4,12 +4,15 @@ import ( "context" "encoding/json" "fmt" + "testing" "github.com/stretchr/testify/assert" + appsv1 "k8s.io/api/apps/v1" k8serrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" unstructured "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/client-go/dynamic" "k8s.io/client-go/dynamic/dynamicinformer" "k8s.io/client-go/dynamic/dynamiclister" @@ -817,7 +820,7 @@ func TestHttpReconcileHeaderRouteHostBased(t *testing.T) { obj := unstructuredutil.StrToUnstructuredUnsafe(regularVsvc) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() const headerName = "test-header-route" @@ -892,7 +895,7 @@ spec: obj := unstructuredutil.StrToUnstructuredUnsafe(singleRouteSubsetVsvc) client := testutil.NewFakeDynamicClient(obj, dRule) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() const headerName = "test-header-route" @@ -933,7 +936,7 @@ func TestHttpReconcileHeaderRouteWithExtra(t *testing.T) { obj := unstructuredutil.StrToUnstructuredUnsafe(regularVsvcWithExtra) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() const headerName = "test-header-route" @@ -1035,7 +1038,7 @@ func AssertReconcileUpdateHeader(t *testing.T, vsvc string, ro *v1alpha1.Rollout obj := unstructuredutil.StrToUnstructuredUnsafe(vsvc) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() var setHeader = &v1alpha1.SetHeaderRoute{ @@ -1303,7 +1306,7 @@ func AssertReconcileUpdateVirtualService(t *testing.T, vsvc string, ro *v1alpha1 obj := unstructuredutil.StrToUnstructuredUnsafe(vsvc) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(10) assert.Nil(t, err) @@ -1317,7 +1320,7 @@ func TestReconcileNoChanges(t *testing.T) { obj := unstructuredutil.StrToUnstructuredUnsafe(regularVsvc) client := testutil.NewFakeDynamicClient(obj) ro := rolloutWithHttpRoutes("stable", "canary", "vsvc", []string{"primary"}) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil, nil) err := r.SetWeight(0) assert.Nil(t, err) assert.Len(t, client.Actions(), 1) @@ -1328,7 +1331,7 @@ func TestReconcileVirtualServiceExperimentStep(t *testing.T) { obj := unstructuredutil.StrToUnstructuredUnsafe(regularVsvc) client := testutil.NewFakeDynamicClient(obj) ro := rolloutWithHttpRoutes("stable", "canary", "vsvc", []string{"primary"}) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil, nil) additionalDestinations := []v1alpha1.WeightDestination{ { ServiceName: "exp-svc", @@ -1361,7 +1364,7 @@ func TestHostSplitExperimentStep(t *testing.T) { obj := unstructuredutil.StrToUnstructuredUnsafe(regularVsvc) client := testutil.NewFakeDynamicClient(obj) ro := rolloutWithHttpRoutes("stable", "canary", "vsvc", []string{"primary"}) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil, nil) additionalDestinations := []v1alpha1.WeightDestination{ { ServiceName: "exp-svc", @@ -1395,7 +1398,7 @@ func TestTlsReconcileNoChanges(t *testing.T) { }, }, ) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil, nil) err := r.SetWeight(0) assert.Nil(t, err) assert.Len(t, client.Actions(), 1) @@ -1412,7 +1415,7 @@ func TestTcpReconcileNoChanges(t *testing.T) { }, }, ) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil, nil) err := r.SetWeight(0) assert.Nil(t, err) assert.Len(t, client.Actions(), 1) @@ -1475,7 +1478,7 @@ func TestReconcileInvalidValidation(t *testing.T) { client := testutil.NewFakeDynamicClient(obj) ro := rolloutWithHttpRoutes("stable", "canary", "vsvc", []string{"route-not-found"}) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(0) assert.Equal(t, "HTTP Route 'route-not-found' is not found in the defined Virtual Service.", err.Error()) @@ -1492,7 +1495,7 @@ func TestTlsReconcileInvalidValidation(t *testing.T) { }, ) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(0) assert.Equal(t, NoTlsRouteFoundError, err.Error()) @@ -1509,7 +1512,7 @@ func TestTcpReconcileInvalidValidation(t *testing.T) { }, ) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(0) assert.Equal(t, NoTcpRouteFoundError, err.Error()) @@ -1519,7 +1522,7 @@ func TestReconcileVirtualServiceNotFound(t *testing.T) { client := testutil.NewFakeDynamicClient() ro := rolloutWithHttpRoutes("stable", "canary", "vsvc", []string{"primary"}) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(10) assert.NotNil(t, err) @@ -1532,7 +1535,7 @@ func TestReconcileAmbiguousRoutes(t *testing.T) { client := testutil.NewFakeDynamicClient(obj) ro := rolloutWithHttpRoutes("stable", "canary", "vsvc", nil) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(0) assert.Equal(t, "spec.http[] should be set in VirtualService and it must have exactly one route when omitting spec.strategy.canary.trafficRouting.istio.virtualService.routes", err.Error()) @@ -1543,7 +1546,7 @@ func TestTlsReconcileAmbiguousRoutes(t *testing.T) { client := testutil.NewFakeDynamicClient(obj) ro := rolloutWithHttpRoutes("stable", "canary", "vsvc", nil) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(0) assert.Equal(t, "spec.tls[] should be set in VirtualService and it must have exactly one route when omitting spec.strategy.canary.trafficRouting.istio.virtualService.tlsRoutes", err.Error()) @@ -1554,7 +1557,7 @@ func TestTcpReconcileAmbiguousRoutes(t *testing.T) { client := testutil.NewFakeDynamicClient(obj) ro := rolloutWithTcpRoutes("stable", "canary", "vsvc", nil) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(0) assert.Equal(t, "spec.tcp[] should be set in VirtualService and it must have exactly one route when omitting spec.strategy.canary.trafficRouting.istio.virtualService.tcpRoutes", err.Error()) @@ -1654,7 +1657,7 @@ func TestReconcileInferredSingleRoute(t *testing.T) { func TestType(t *testing.T) { client := testutil.NewFakeDynamicClient() ro := rolloutWithHttpRoutes("stable", "canary", "vsvc", []string{"primary"}) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil, nil) assert.Equal(t, Type, r.Type()) } @@ -2023,7 +2026,7 @@ spec: `) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.UpdateHash("abc123", "def456") @@ -2070,7 +2073,7 @@ spec: `) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.UpdateHash("abc123", "def456") @@ -2111,7 +2114,7 @@ spec: `) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.UpdateHash("abc123", "def456") @@ -2135,7 +2138,7 @@ spec: - name: canary `) client := testutil.NewFakeDynamicClient(obj) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil, nil) client.ClearActions() err := r.UpdateHash("abc123", "def456") @@ -2158,7 +2161,7 @@ func TestUpdateHashDestinationRuleNotFound(t *testing.T) { ro := rolloutWithDestinationRule() client := testutil.NewFakeDynamicClient() vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.UpdateHash("abc123", "def456") @@ -2182,7 +2185,7 @@ spec: `) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() // UpdateHash for 1 additional destination @@ -2212,7 +2215,7 @@ spec: // Add another additionalDestination client = testutil.NewFakeDynamicClient(dRuleUn) vsvcLister, druleLister = getIstioListers(client) - r = NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r = NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() additionalDestinations = append(additionalDestinations, v1alpha1.WeightDestination{ ServiceName: "exp-svc2", @@ -2236,7 +2239,7 @@ spec: // Remove 1 of additionalDestinations client = testutil.NewFakeDynamicClient(dRuleUn) vsvcLister, druleLister = getIstioListers(client) - r = NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r = NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err = r.UpdateHash("abc123", "def456", additionalDestinations[1]) assert.NoError(t, err) @@ -2471,7 +2474,7 @@ func TestMultipleVirtualServiceReconcileNoChanges(t *testing.T) { client := testutil.NewFakeDynamicClient(obj1, obj2) multipleVirtualService := []v1alpha1.IstioVirtualService{{Name: "vsvc1", Routes: []string{"primary", "secondary"}}, {Name: "vsvc2", Routes: []string{"blue-green"}}} ro := multiVsRollout("stable", "canary", multipleVirtualService) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, nil, nil) err := r.SetWeight(0) assert.Nil(t, err) assert.Len(t, client.Actions(), 2) @@ -2486,7 +2489,7 @@ func TestMultipleVirtualServiceReconcileUpdateVirtualServices(t *testing.T) { multipleVirtualService := []v1alpha1.IstioVirtualService{{Name: "vsvc1", Routes: []string{"primary", "secondary"}}, {Name: "vsvc2", Routes: []string{"blue-green"}}} ro := multiVsRollout("stable", "canary", multipleVirtualService) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(10) assert.Nil(t, err) @@ -2503,7 +2506,7 @@ func TestMultipleVirtualServiceReconcileInvalidValidation(t *testing.T) { multipleVirtualService := []v1alpha1.IstioVirtualService{{Name: "vsvc1", Routes: []string{"route-not-found"}}, {Name: "vsvc2", Routes: []string{"route-not-found"}}} ro := multiVsRollout("stable", "canary", multipleVirtualService) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(0) assert.Equal(t, "HTTP Route 'route-not-found' is not found in the defined Virtual Service.", err.Error()) @@ -2515,7 +2518,7 @@ func TestMultipleVirtualServiceReconcileVirtualServiceNotFound(t *testing.T) { multipleVirtualService := []v1alpha1.IstioVirtualService{{Name: "vsvc1", Routes: []string{"primary", "secondary"}}, {Name: "vsvc2", Routes: []string{"blue-green"}}} ro := multiVsRollout("stable", "canary", multipleVirtualService) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(10) assert.NotNil(t, err) @@ -2530,7 +2533,7 @@ func TestMultipleVirtualServiceReconcileAmbiguousRoutes(t *testing.T) { multipleVirtualService := []v1alpha1.IstioVirtualService{{Name: "vsvc1", Routes: nil}, {Name: "vsvc2", Routes: nil}} ro := multiVsRollout("stable", "canary", multipleVirtualService) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(0) assert.Equal(t, "spec.http[] should be set in VirtualService and it must have exactly one route when omitting spec.strategy.canary.trafficRouting.istio.virtualService.routes", err.Error()) @@ -2544,7 +2547,7 @@ func TestMultipleVirtualServiceReconcileInferredSingleRoute(t *testing.T) { multipleVirtualService := []v1alpha1.IstioVirtualService{{Name: "vsvc1", Routes: nil}, {Name: "vsvc2", Routes: nil}} ro := multiVsRollout("stable", "canary", multipleVirtualService) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(10) assert.NoError(t, err) @@ -2569,7 +2572,7 @@ func TestHttpReconcileMirrorRoute(t *testing.T) { obj := unstructuredutil.StrToUnstructuredUnsafe(regularVsvc) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() // Test for both the HTTP VS & Mixed VS @@ -2661,7 +2664,7 @@ func TestSingleTlsRouteReconcile(t *testing.T) { obj := unstructuredutil.StrToUnstructuredUnsafe(singleRouteTlsVsvc) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() err := r.SetWeight(30, v1alpha1.WeightDestination{}) @@ -2685,7 +2688,7 @@ func TestHttpReconcileMirrorRouteWithExtraFields(t *testing.T) { obj := unstructuredutil.StrToUnstructuredUnsafe(regularVsvcWithExtra) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() // Test for both the HTTP VS & Mixed VS @@ -2737,7 +2740,7 @@ func TestHttpReconcileMirrorRouteOrder(t *testing.T) { obj := unstructuredutil.StrToUnstructuredUnsafe(regularVsvc) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() setMirror1 := &v1alpha1.SetMirrorRoute{ @@ -2825,7 +2828,7 @@ func TestHttpReconcileMirrorRouteOrderSingleRouteNoName(t *testing.T) { obj := unstructuredutil.StrToUnstructuredUnsafe(singleRouteVsvc) client := testutil.NewFakeDynamicClient(obj) _, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), nil, druleLister, nil) client.ClearActions() setMirror1 := &v1alpha1.SetMirrorRoute{ @@ -2945,7 +2948,7 @@ spec: obj := unstructuredutil.StrToUnstructuredUnsafe(singleRouteSubsetVsvc) client := testutil.NewFakeDynamicClient(obj, dRule) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() // Test for both the HTTP VS & Mixed VS @@ -3006,7 +3009,7 @@ func AssertReconcileUpdateMirror(t *testing.T, vsvc string, ro *v1alpha1.Rollout obj := unstructuredutil.StrToUnstructuredUnsafe(vsvc) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() setMirror := &v1alpha1.SetMirrorRoute{ @@ -3031,7 +3034,7 @@ func TestReconcileHeaderRouteAvoidDuplicates(t *testing.T) { obj := unstructuredutil.StrToUnstructuredUnsafe(regularVsvc) client := testutil.NewFakeDynamicClient(obj) vsvcLister, druleLister := getIstioListers(client) - r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister) + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, nil) client.ClearActions() const headerName = "test-header-route" @@ -3068,3 +3071,88 @@ func TestReconcileHeaderRouteAvoidDuplicates(t *testing.T) { assert.Equal(t, httpRoutes[1].Name, "primary") assert.Equal(t, httpRoutes[2].Name, "secondary") } + +// TestUpdateHashNoReadyReplicaSets verifies we don't change rules when the destination ReplicaSets are not fully Ready yet +func TestUpdateHashNoReadyReplicaSets(t *testing.T) { + ro := rolloutWithDestinationRule() + + client := testutil.NewFakeDynamicClient() + vsvcLister, druleLister := getIstioListers(client) + + replicaSets := []*appsv1.ReplicaSet{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "ReplicaSetForTesting", + UID: uuid.NewUUID(), + Namespace: metav1.NamespaceDefault, + }, + Spec: appsv1.ReplicaSetSpec{ + Replicas: func() *int32 { i := int32(1); return &i }(), + Template: ro.Spec.Template, + }, + Status: appsv1.ReplicaSetStatus{ + Replicas: 1, + AvailableReplicas: 0, + }, + }, + } + + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, replicaSets) + client.ClearActions() + + err := r.UpdateHash("abc123", "def456") + assert.Error(t, err, "delaying destination rule switch: ReplicaSet ReplicaSetForTesting not fully available") + actions := client.Actions() + assert.Len(t, actions, 0) +} + +// TestUpdateHashReadyReplicaSets verifies we do change rules when the destination ReplicaSets are fully Ready +func TestUpdateHashReadyReplicaSets(t *testing.T) { + ro := rolloutWithDestinationRule() + + obj := unstructuredutil.StrToUnstructuredUnsafe(` +apiVersion: networking.istio.io/v1alpha3 +kind: DestinationRule +metadata: + name: istio-destrule + namespace: default + annotations: + argo-rollouts.argoproj.io/managed-by-rollouts: rollout +spec: + host: ratings.prod.svc.cluster.local + subsets: + - name: stable + labels: + rollouts-pod-template-hash: def456 + - name: canary + labels: + rollouts-pod-template-hash: abc123 +`) + client := testutil.NewFakeDynamicClient(obj) + vsvcLister, druleLister := getIstioListers(client) + replicaSets := []*appsv1.ReplicaSet{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "ReplicaSetForTesting", + UID: uuid.NewUUID(), + Namespace: metav1.NamespaceDefault, + }, + Spec: appsv1.ReplicaSetSpec{ + Replicas: func() *int32 { i := int32(1); return &i }(), + Template: ro.Spec.Template, + }, + Status: appsv1.ReplicaSetStatus{ + Replicas: 1, + AvailableReplicas: 1, + }, + }, + } + + r := NewReconciler(ro, client, record.NewFakeEventRecorder(), vsvcLister, druleLister, replicaSets) + client.ClearActions() + + err := r.UpdateHash("abc123", "def456") + assert.NoError(t, err) + actions := client.Actions() + assert.Len(t, actions, 0) +} From bfef7f0d2bb71b085398c35ec95c1b2aacd07187 Mon Sep 17 00:00:00 2001 From: arouco Date: Wed, 28 Aug 2024 00:21:10 +0200 Subject: [PATCH 130/219] feat: support multi account Datadog metrics provider (#3787) * Adding support for multi datadog accounts. Signed-off-by: Ariadna Rouco * Removing default secret name in the manifest. Signed-off-by: Ariadna Rouco * Adding secret ref to analysis template, analsys run and cluster analysis template. Signed-off-by: Ariadna Rouco * reentering removed command Signed-off-by: Ariadna Rouco * Documentation updated Signed-off-by: Ariadna Rouco * Update docs/analysis/datadog.md Co-authored-by: Thibault Jamet Signed-off-by: Ariadna Rouco * Adding removed code and removing string from log. Signed-off-by: Ariadna Rouco * Rewriting documentation with the correct flow. Signed-off-by: Ariadna Rouco * updated credential finders logic and added tests Signed-off-by: Ariadna Rouco (cherry picked from commit 36a9c0601eef055eaa88faa8cfd04fd76fc54b87) Signed-off-by: Ariadna Rouco * Added test case for credentials not found. Signed-off-by: Ariadna Rouco (cherry picked from commit 7703ff960f2b27f1fffef234d4c9a686d1375397) Signed-off-by: Ariadna Rouco * added tests for findCredential method. (cherry picked from commit eab99be055cff27cab44e76955d8a6611807aaeb) Signed-off-by: Ariadna Rouco * updating generated.pd.go Signed-off-by: Ariadna Rouco --------- Signed-off-by: Ariadna Rouco Signed-off-by: Ariadna Rouco Co-authored-by: Thibault Jamet --- .gitignore | 1 + analysis/analysis.go | 4 +- analysis/analysis_test.go | 2 +- analysis/controller.go | 2 +- analysis/controller_test.go | 4 +- docs/analysis/datadog.md | 42 + .../features/kustomize/rollout_cr_schema.json | 33 + manifests/crds/analysis-run-crd.yaml | 7 + manifests/crds/analysis-template-crd.yaml | 7 + .../crds/cluster-analysis-template-crd.yaml | 7 + manifests/install.yaml | 21 + metricproviders/datadog/datadog.go | 71 +- metricproviders/datadog/datadogV1_test.go | 43 +- metricproviders/datadog/datadogV2_test.go | 32 +- metricproviders/datadog/datadog_test.go | 70 +- metricproviders/datadog/finders.go | 79 ++ metricproviders/datadog/finders_test.go | 122 ++ metricproviders/metricproviders.go | 4 +- pkg/apiclient/rollout/rollout.swagger.json | 17 + pkg/apis/rollouts/v1alpha1/analysis_types.go | 10 + pkg/apis/rollouts/v1alpha1/generated.pb.go | 1095 ++++++++++------- pkg/apis/rollouts/v1alpha1/generated.proto | 12 + .../rollouts/v1alpha1/openapi_generated.go | 36 + .../v1alpha1/zz_generated.deepcopy.go | 17 + pkg/kubectl-argo-rollouts/info/pod_info.go | 12 +- ui/src/models/rollout/generated/api.ts | 25 + 26 files changed, 1280 insertions(+), 495 deletions(-) create mode 100644 metricproviders/datadog/finders.go create mode 100644 metricproviders/datadog/finders_test.go diff --git a/.gitignore b/.gitignore index ab4b2ac69e..ce23e23261 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ server/static/* !server/static/.gitkeep coverage-output-e2e/ coverage-output-unit/ +junit-unit-test.xml \ No newline at end of file diff --git a/analysis/analysis.go b/analysis/analysis.go index 97497c4c4d..b603d9f1ae 100644 --- a/analysis/analysis.go +++ b/analysis/analysis.go @@ -332,7 +332,7 @@ func (c *Controller) runMeasurements(run *v1alpha1.AnalysisRun, tasks []metricTa logger := logutil.WithRedactor(*logutil.WithAnalysisRun(run).WithField("metric", t.metric.Name), secrets) var newMeasurement v1alpha1.Measurement - provider, providerErr := c.newProvider(*logger, t.metric) + provider, providerErr := c.newProvider(*logger, run.Namespace, t.metric) if providerErr != nil { log.Errorf("Error in getting metric provider :%v", providerErr) if t.incompleteMeasurement != nil { @@ -744,7 +744,7 @@ func (c *Controller) garbageCollectMeasurements(run *v1alpha1.AnalysisRun, measu continue } logger := logutil.WithAnalysisRun(run).WithField("metric", metric.Name) - provider, err := c.newProvider(*logger, metric) + provider, err := c.newProvider(*logger, run.Namespace, metric) if err != nil { errors = append(errors, err) continue diff --git a/analysis/analysis_test.go b/analysis/analysis_test.go index 9e7d3fe5f8..5b15af7782 100644 --- a/analysis/analysis_test.go +++ b/analysis/analysis_test.go @@ -1113,7 +1113,7 @@ func TestGarbageCollectArgResolution(t *testing.T) { defer f.Close() c, _, _ := f.newController(noResyncPeriodFunc) - c.newProvider = func(logCtx log.Entry, metric v1alpha1.Metric) (metric.Provider, error) { + c.newProvider = func(logCtx log.Entry, namespace string, metric v1alpha1.Metric) (metric.Provider, error) { assert.Equal(t, "https://prometheus.kubeaddons:8080", metric.Provider.Prometheus.Address) return f.provider, nil } diff --git a/analysis/controller.go b/analysis/controller.go index 1afa6ab556..5972c9d936 100644 --- a/analysis/controller.go +++ b/analysis/controller.go @@ -54,7 +54,7 @@ type Controller struct { metricsServer *metrics.MetricsServer - newProvider func(logCtx log.Entry, metric v1alpha1.Metric) (metric.Provider, error) + newProvider func(logCtx log.Entry, namespace string, metric v1alpha1.Metric) (metric.Provider, error) // used for unit testing enqueueAnalysis func(obj any) diff --git a/analysis/controller_test.go b/analysis/controller_test.go index 601139a6d4..ad6730807c 100644 --- a/analysis/controller_test.go +++ b/analysis/controller_test.go @@ -143,7 +143,7 @@ func (f *fixture) newController(resync resyncFunc) (*Controller, informers.Share c.enqueueAnalysis(obj) } f.provider = &mocks.Provider{} - c.newProvider = func(logCtx log.Entry, metric v1alpha1.Metric) (metric.Provider, error) { + c.newProvider = func(logCtx log.Entry, namespace string, metric v1alpha1.Metric) (metric.Provider, error) { return f.provider, nil } @@ -370,7 +370,7 @@ func TestFailedToCreateProviderError(t *testing.T) { f.objects = append(f.objects, ar) c, i, k8sI := f.newController(noResyncPeriodFunc) - c.newProvider = func(logCtx log.Entry, metric v1alpha1.Metric) (metric.Provider, error) { + c.newProvider = func(logCtx log.Entry, namespace string, metric v1alpha1.Metric) (metric.Provider, error) { return nil, fmt.Errorf("failed to create provider") } diff --git a/docs/analysis/datadog.md b/docs/analysis/datadog.md index 7bca70be10..fe58c1565c 100644 --- a/docs/analysis/datadog.md +++ b/docs/analysis/datadog.md @@ -41,6 +41,48 @@ stringData: `apiVersion` here is different from the `apiVersion` from the Datadog configuration above. +!!! important + ###### Namespaced secret + Datadog integration supports referring to secrets inside the same namespace as argo-rollouts (by default) + or referring to a secret in the same namespace as the `AnalysisTemplate`. + + To use a secret from the `AnalysisTemplate` namespace, include a `secretRef` section in the template, specifying the `name` of the secret and setting the `namespaced` property to `true`. + + The process for retrieving Datadog credentials is as follows: + 1. **If a `secretRef` is defined in the `AnalysisTemplate`:** Argo Rollouts will search for the secret with the specified name in the namespace where the template resides. + 2. **If the secret is not found in the specified namespace:** Argo Rollouts will then check the environment variables. + 3. **If the credentials are not found in environment variables:** Argo Rollouts will look for a secret named "Datadog" in the namespace where Argo Rollouts itself is deployed. + +--- + +Let me know if there's anything else you'd like to adjust! + + ```yaml + apiVersion: argoproj.io/v1alpha1 + kind: AnalysisTemplate + metadata: + name: loq-error-rate + spec: + args: + - name: service-name + metrics: + - name: error-rate + interval: 5m + successCondition: result <= 0.01 + failureLimit: 3 + provider: + datadog: + apiVersion: v2 + interval: 5m + secretRef: + name: "mysecret" + namespaced: true + query: | + sum:requests.error.rate{service:{{args.service-name}}} + ``` + + + ### Working with Datadog API v2 !!! important diff --git a/docs/features/kustomize/rollout_cr_schema.json b/docs/features/kustomize/rollout_cr_schema.json index 2a1baf7bad..6798ef3c1a 100644 --- a/docs/features/kustomize/rollout_cr_schema.json +++ b/docs/features/kustomize/rollout_cr_schema.json @@ -280,6 +280,17 @@ }, "query": { "type": "string" + }, + "secretRef": { + "properties": { + "name": { + "type": "string" + }, + "namespaced": { + "type": "boolean" + } + }, + "type": "object" } }, "type": "object" @@ -5135,6 +5146,17 @@ }, "query": { "type": "string" + }, + "secretRef": { + "properties": { + "name": { + "type": "string" + }, + "namespaced": { + "type": "boolean" + } + }, + "type": "object" } }, "type": "object" @@ -10003,6 +10025,17 @@ }, "query": { "type": "string" + }, + "secretRef": { + "properties": { + "name": { + "type": "string" + }, + "namespaced": { + "type": "boolean" + } + }, + "type": "object" } }, "type": "object" diff --git a/manifests/crds/analysis-run-crd.yaml b/manifests/crds/analysis-run-crd.yaml index 99122a2f87..6050b5df72 100644 --- a/manifests/crds/analysis-run-crd.yaml +++ b/manifests/crds/analysis-run-crd.yaml @@ -207,6 +207,13 @@ spec: type: object query: type: string + secretRef: + properties: + name: + type: string + namespaced: + type: boolean + type: object type: object graphite: properties: diff --git a/manifests/crds/analysis-template-crd.yaml b/manifests/crds/analysis-template-crd.yaml index a4bbb59116..f040d2a219 100644 --- a/manifests/crds/analysis-template-crd.yaml +++ b/manifests/crds/analysis-template-crd.yaml @@ -203,6 +203,13 @@ spec: type: object query: type: string + secretRef: + properties: + name: + type: string + namespaced: + type: boolean + type: object type: object graphite: properties: diff --git a/manifests/crds/cluster-analysis-template-crd.yaml b/manifests/crds/cluster-analysis-template-crd.yaml index 3b570c7f7b..2de306119e 100644 --- a/manifests/crds/cluster-analysis-template-crd.yaml +++ b/manifests/crds/cluster-analysis-template-crd.yaml @@ -203,6 +203,13 @@ spec: type: object query: type: string + secretRef: + properties: + name: + type: string + namespaced: + type: boolean + type: object type: object graphite: properties: diff --git a/manifests/install.yaml b/manifests/install.yaml index d8bb697324..df6cc0614f 100755 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -208,6 +208,13 @@ spec: type: object query: type: string + secretRef: + properties: + name: + type: string + namespaced: + type: boolean + type: object type: object graphite: properties: @@ -3509,6 +3516,13 @@ spec: type: object query: type: string + secretRef: + properties: + name: + type: string + namespaced: + type: boolean + type: object type: object graphite: properties: @@ -6688,6 +6702,13 @@ spec: type: object query: type: string + secretRef: + properties: + name: + type: string + namespaced: + type: boolean + type: object type: object graphite: properties: diff --git a/metricproviders/datadog/datadog.go b/metricproviders/datadog/datadog.go index 47623b6b9f..8778b51827 100644 --- a/metricproviders/datadog/datadog.go +++ b/metricproviders/datadog/datadog.go @@ -2,17 +2,14 @@ package datadog import ( "bytes" - "context" "encoding/json" "errors" "fmt" "io" "net/http" "net/url" - "os" "reflect" "strconv" - "strings" "time" "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" @@ -22,7 +19,6 @@ import ( timeutil "github.com/argoproj/argo-rollouts/utils/time" log "github.com/sirupsen/logrus" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" ) @@ -369,18 +365,6 @@ func (p *Provider) GarbageCollect(run *v1alpha1.AnalysisRun, metric v1alpha1.Met return nil } -func lookupKeysInEnv(keys []string) map[string]string { - valuesByKey := make(map[string]string) - for i := range keys { - key := keys[i] - formattedKey := strings.ToUpper(strings.ReplaceAll(key, "-", "_")) - if value, ok := os.LookupEnv(fmt.Sprintf("DD_%s", formattedKey)); ok { - valuesByKey[key] = value - } - } - return valuesByKey -} - // The current gen tooling we are using can't generate CRD with all the validations we need. // This is unfortunate, user has more ways to deliver an invalid Analysis Template vs // being rejected on delivery by k8s (and allowing for a validation step if desired in CI/CD). @@ -422,32 +406,13 @@ func validateIncomingProps(dd *v1alpha1.DatadogMetric) error { return nil } -func NewDatadogProvider(logCtx log.Entry, kubeclientset kubernetes.Interface, metric v1alpha1.Metric) (*Provider, error) { - ns := defaults.Namespace() - - apiKey := "" - appKey := "" - address := "" - secretKeys := []string{DatadogApiKey, DatadogAppKey, DatadogAddress} - envValuesByKey := lookupKeysInEnv(secretKeys) - if len(envValuesByKey) == len(secretKeys) { - apiKey = envValuesByKey[DatadogApiKey] - appKey = envValuesByKey[DatadogAppKey] - address = envValuesByKey[DatadogAddress] - } else { - secret, err := kubeclientset.CoreV1().Secrets(ns).Get(context.TODO(), DatadogTokensSecretName, metav1.GetOptions{}) - if err != nil { - return nil, err - } - apiKey = string(secret.Data[DatadogApiKey]) - appKey = string(secret.Data[DatadogAppKey]) - if _, hasAddress := secret.Data[DatadogAddress]; hasAddress { - address = string(secret.Data[DatadogAddress]) - } +func NewDatadogProvider(logCtx log.Entry, kubeclientset kubernetes.Interface, namespace string, metric v1alpha1.Metric) (*Provider, error) { + address, apiKey, appKey, err := findCredentials(logCtx, kubeclientset, namespace, metric) + if err != nil { + return nil, err } if apiKey != "" && appKey != "" { - err := validateIncomingProps(metric.Provider.Datadog) if err != nil { return nil, err @@ -465,3 +430,31 @@ func NewDatadogProvider(logCtx log.Entry, kubeclientset kubernetes.Interface, me return nil, errors.New("API or App token not found") } } + +func findCredentials(logCtx log.Entry, kubeclientset kubernetes.Interface, namespace string, metric v1alpha1.Metric) (string, string, string, error) { + finders := []CredentialsFinder{} + secretName := metric.Provider.Datadog.SecretRef.Name + namespaced := metric.Provider.Datadog.SecretRef.Namespaced + credentialsNs := defaults.Namespace() + + if namespaced { + credentialsNs = namespace + if secretName == "" { + return "", "", "", errors.New("secret name is required for namespaced credentials") + } + } + + if secretName != "" { + finders = append(finders, NewSecretFinder(kubeclientset, secretName, credentialsNs)) + } else { + finders = append(finders, NewEnvVariablesFinder(), NewSecretFinder(kubeclientset, DatadogTokensSecretName, defaults.Namespace())) + } + for _, finder := range finders { + address, apiKey, appKey := finder.FindCredentials(logCtx) + if address != "" && apiKey != "" && appKey != "" { + return address, apiKey, appKey, nil + } + } + + return "", "", "", errors.New("failed to find the credentials for datadog metrics provider") +} diff --git a/metricproviders/datadog/datadogV1_test.go b/metricproviders/datadog/datadogV1_test.go index af58d47617..1e10d02137 100644 --- a/metricproviders/datadog/datadogV1_test.go +++ b/metricproviders/datadog/datadogV1_test.go @@ -29,7 +29,6 @@ func TestRunSuite(t *testing.T) { Query: "avg:kubernetes.cpu.user.total{*}", }, } - ddProviderInterval10m := v1alpha1.MetricProvider{ Datadog: &v1alpha1.DatadogMetric{ Query: "avg:kubernetes.cpu.user.total{*}", @@ -37,8 +36,20 @@ func TestRunSuite(t *testing.T) { }, } + ddProviderNamespacedSecret := v1alpha1.MetricProvider{ + Datadog: &v1alpha1.DatadogMetric{ + Query: "avg:kubernetes.cpu.user.total{*}", + Interval: "10m", + SecretRef: v1alpha1.SecretRef{ + Name: "secret", + Namespaced: true, + }, + }, + } + // Test Cases tests := []struct { + name string serverURL string webServerStatus int webServerResponse string @@ -47,6 +58,7 @@ func TestRunSuite(t *testing.T) { expectedValue string expectedPhase v1alpha1.AnalysisPhase expectedErrorMessage string + expectedErrorProvider bool useEnvVarForKeys bool }{ // When last value of time series matches condition then succeed. @@ -125,7 +137,7 @@ func TestRunSuite(t *testing.T) { useEnvVarForKeys: false, }, - // Expect success with default() and data + // Expect success with Default and data { webServerStatus: 200, webServerResponse: `{"status":"ok","series":[{"pointlist":[[1598867910000,0.0020008318672513122],[1598867925000,0.006121378742186943]]}]}`, @@ -140,7 +152,7 @@ func TestRunSuite(t *testing.T) { useEnvVarForKeys: false, }, - // Expect error with no default() and no data + // Expect error with no Default and no data { webServerStatus: 200, webServerResponse: `{"status":"ok","series":[]}`, @@ -155,7 +167,7 @@ func TestRunSuite(t *testing.T) { useEnvVarForKeys: false, }, - // Expect success with default() and no data + // Expect success with Default and no data { webServerStatus: 200, webServerResponse: `{"status":"ok","series":[]}`, @@ -170,7 +182,7 @@ func TestRunSuite(t *testing.T) { useEnvVarForKeys: false, }, - // Expect failure with bad default() and no data + // Expect failure with bad Default and no data { webServerStatus: 200, webServerResponse: `{"status":"ok","series":[]}`, @@ -185,7 +197,7 @@ func TestRunSuite(t *testing.T) { useEnvVarForKeys: false, }, - // Expect success with bad default() and good data + // Expect success with bad Default and good data { webServerStatus: 200, webServerResponse: `{"status":"ok","series":[{"pointlist":[[1598867910000,0.0020008318672513122],[1598867925000,0.006121378742186943]]}]}`, @@ -226,6 +238,22 @@ func TestRunSuite(t *testing.T) { expectedErrorMessage: "parse \"://wrong.schema\": missing protocol scheme", useEnvVarForKeys: false, }, + // When secret passed name passed in the analysis template, expect success + { + webServerStatus: 200, + webServerResponse: `{"status":"ok","series":[{"pointlist":[[1598867910000,0.0020008318672513122],[1598867925000,0.0003332881882246533]]}]}`, + metric: v1alpha1.Metric{ + Name: "foo", + SuccessCondition: "result < 0.001", + FailureCondition: "result >= 0.001", + Provider: ddProviderNamespacedSecret, + }, + expectedIntervalSeconds: 600, + expectedValue: "0.0003332881882246533", + expectedPhase: v1alpha1.AnalysisPhaseSuccessful, + useEnvVarForKeys: false, + expectedErrorProvider: false, + }, } // Run @@ -320,8 +348,9 @@ func TestRunSuite(t *testing.T) { if test.metric.Provider.Datadog.Interval == "" { test.metric.Provider.Datadog.Interval = "5m" } + namespace := "namespace" - provider, _ := NewDatadogProvider(*logCtx, fakeClient, test.metric) + provider, _ := NewDatadogProvider(*logCtx, fakeClient, namespace, test.metric) metricsMetadata := provider.GetMetadata(test.metric) assert.Nil(t, metricsMetadata) diff --git a/metricproviders/datadog/datadogV2_test.go b/metricproviders/datadog/datadogV2_test.go index b8319423f3..9723580340 100644 --- a/metricproviders/datadog/datadogV2_test.go +++ b/metricproviders/datadog/datadogV2_test.go @@ -62,6 +62,21 @@ func newQueryProviderSumAggregator() v1alpha1.MetricProvider { }, } } + +func newNamespacedSecretProvider() v1alpha1.MetricProvider { + return v1alpha1.MetricProvider{ + Datadog: &v1alpha1.DatadogMetric{ + Query: "avg:kubernetes.cpu.user.total{*}", + Interval: "5m", + Aggregator: "sum", + ApiVersion: "v2", + SecretRef: v1alpha1.SecretRef{ + Name: "secret", + Namespaced: true, + }, + }, + } +} func TestRunSuiteV2(t *testing.T) { const expectedApiKey = "0123456789abcdef0123456789abcdef" const expectedAppKey = "0123456789abcdef0123456789abcdef01234567" @@ -278,6 +293,20 @@ func TestRunSuiteV2(t *testing.T) { expectedAggregator: "sum", useEnvVarForKeys: false, }, + { + webServerStatus: 200, + webServerResponse: `{"data": {"attributes": {"columns": [ {"values": [0.006121378742186943]}]}}}`, + metric: v1alpha1.Metric{ + Name: "success with default and data", + SuccessCondition: "default(result, 0) < 0.05", + Provider: newNamespacedSecretProvider(), + }, + expectedIntervalSeconds: 300, + expectedValue: "0.006121378742186943", + expectedPhase: v1alpha1.AnalysisPhaseSuccessful, + expectedAggregator: "sum", + useEnvVarForKeys: false, + }, } // Run @@ -401,8 +430,9 @@ func TestRunSuiteV2(t *testing.T) { } return true, tokenSecret, nil }) + namespace := "namespace" - provider, _ := NewDatadogProvider(*logCtx, fakeClient, test.metric) + provider, _ := NewDatadogProvider(*logCtx, fakeClient, namespace, test.metric) metricsMetadata := provider.GetMetadata(test.metric) assert.Nil(t, metricsMetadata) diff --git a/metricproviders/datadog/datadog_test.go b/metricproviders/datadog/datadog_test.go index ed81977296..4d82a24f8d 100644 --- a/metricproviders/datadog/datadog_test.go +++ b/metricproviders/datadog/datadog_test.go @@ -3,14 +3,18 @@ package datadog import ( - "log" "os" "testing" "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" + corev1 "k8s.io/api/core/v1" apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "k8s.io/apimachinery/pkg/runtime" + k8sfake "k8s.io/client-go/kubernetes/fake" "k8s.io/client-go/kubernetes/scheme" + kubetesting "k8s.io/client-go/testing" ) func TestDatadogSpecDefaults(t *testing.T) { @@ -179,3 +183,67 @@ func TestValidateIncomingProps(t *testing.T) { }) } } + +func TestFindCredentials(t *testing.T) { + + testCases := []struct { + name string + secret *corev1.Secret + expectsError bool + metric v1alpha1.Metric + }{ + { + name: "when secretRef is set and secret found, should success", + secret: NewSecretBuilderDefaultData().Build(), + metric: newMetric("datadog", true), + }, + { + name: "when secretRef is set but secret not found, should fail", + secret: NewSecretBuilder().Build(), + metric: newMetric("datadog", true), + expectsError: true, + }, + { + name: "when secretRef name is not set but namespaced is true, should fail", + secret: NewSecretBuilder().Build(), + metric: newMetric("", true), + expectsError: true, + }, + } + + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + logCtx := *log.WithField("test", "test") + fakeClient := k8sfake.NewSimpleClientset() + fakeClient.PrependReactor("get", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) { + return true, testCase.secret, nil + }) + + address, apiKey, appKey, err := findCredentials(logCtx, fakeClient, "namespace", testCase.metric) + assert.Equal(t, err != nil, testCase.expectsError) + if !testCase.expectsError { + assert.Equal(t, string(testCase.secret.Data["address"]), address) + assert.Equal(t, string(testCase.secret.Data["api-key"]), apiKey) + assert.Equal(t, string(testCase.secret.Data["app-key"]), appKey) + } + }) + + } +} + +func newMetric(name string, namespaced bool) v1alpha1.Metric { + return v1alpha1.Metric{ + Provider: v1alpha1.MetricProvider{ + Datadog: &v1alpha1.DatadogMetric{ + Query: "avg:kubernetes.cpu.user.total{*}", + Interval: "5m", + Aggregator: "sum", + ApiVersion: "v2", + SecretRef: v1alpha1.SecretRef{ + Name: name, + Namespaced: namespaced, + }, + }, + }, + } +} diff --git a/metricproviders/datadog/finders.go b/metricproviders/datadog/finders.go new file mode 100644 index 0000000000..3e66121c09 --- /dev/null +++ b/metricproviders/datadog/finders.go @@ -0,0 +1,79 @@ +package datadog + +import ( + "context" + "fmt" + "os" + "strings" + + log "github.com/sirupsen/logrus" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" +) + +type CredentialsFinder interface { + FindCredentials(logCtx log.Entry) (string, string, string) +} + +func NewSecretFinder(kubeclientset kubernetes.Interface, secretName string, namespace string) *secretFinder { + return &secretFinder{ + kubeclientset: kubeclientset, + secretName: secretName, + namespace: namespace, + } +} + +type secretFinder struct { + kubeclientset kubernetes.Interface + secretName string + namespace string +} + +func (sf *secretFinder) FindCredentials(logCtx log.Entry) (string, string, string) { + address := "" + secret, err := sf.kubeclientset.CoreV1().Secrets(sf.namespace).Get(context.TODO(), sf.secretName, metav1.GetOptions{}) + if err != nil { + logCtx.Debugf("error searching for secret %s in namespace %s: %s", sf.secretName, sf.namespace, err.Error()) + return "", "", "" + } + + apiKey := string(secret.Data[DatadogApiKey]) + appKey := string(secret.Data[DatadogAppKey]) + + if apiKey == "" || appKey == "" { + logCtx.Debugf("credentials missing in secret %s in namespace %s", sf.secretName, sf.namespace) + return "", "", "" + } + if _, hasAddress := secret.Data[DatadogAddress]; hasAddress { + address = string(secret.Data[DatadogAddress]) + } + return address, apiKey, appKey +} + +type envVariablesFinder struct { +} + +func NewEnvVariablesFinder() *envVariablesFinder { + return &envVariablesFinder{} +} +func (evf *envVariablesFinder) FindCredentials(logCtx log.Entry) (string, string, string) { + secretKeys := []string{DatadogApiKey, DatadogAppKey, DatadogAddress} + envValuesByKey := lookupKeysInEnv(secretKeys) + if len(envValuesByKey) == len(secretKeys) { + return envValuesByKey[DatadogAddress], envValuesByKey[DatadogApiKey], envValuesByKey[DatadogAppKey] + } + logCtx.Debug("credentials not found as env variables") + return "", "", "" +} + +func lookupKeysInEnv(keys []string) map[string]string { + valuesByKey := make(map[string]string) + for i := range keys { + key := keys[i] + formattedKey := strings.ToUpper(strings.ReplaceAll(key, "-", "_")) + if value, ok := os.LookupEnv(fmt.Sprintf("DD_%s", formattedKey)); ok { + valuesByKey[key] = value + } + } + return valuesByKey +} diff --git a/metricproviders/datadog/finders_test.go b/metricproviders/datadog/finders_test.go new file mode 100644 index 0000000000..62f2a8b2e5 --- /dev/null +++ b/metricproviders/datadog/finders_test.go @@ -0,0 +1,122 @@ +package datadog + +import ( + "fmt" + "testing" + + log "github.com/sirupsen/logrus" + "github.com/tj/assert" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + k8sfake "k8s.io/client-go/kubernetes/fake" + kubetesting "k8s.io/client-go/testing" +) + +const ( + DatadogUrl = "datadog.com" + ApiKey = "apiKey" + AppKey = "appKey" +) + +func TestRunSuit(t *testing.T) { + + testCases := []struct { + name string + secret *corev1.Secret + expectedApiKey string + expectedAppKey string + expectedAddress string + expectError bool + }{ + { + name: "When secret valid, should be successful", + secret: NewSecretBuilder(). + WithName("DatadogTokensSecretName"). + WithData("address", []byte(DatadogUrl)). + WithData("api-key", []byte(ApiKey)). + WithData("app-key", []byte(AppKey)). + Build(), + expectedApiKey: ApiKey, + expectedAppKey: AppKey, + expectedAddress: DatadogUrl, + }, + { + name: "When secret is found but no data, should return empty values", + secret: NewSecretBuilder(). + WithName("DatadogTokensSecretName"). + Build(), + }, + { + name: "When secret not found, should return empty values", + expectError: true, + }, + } + + for _, tc := range testCases { + fakeClient := k8sfake.NewSimpleClientset() + fakeClient.PrependReactor("get", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) { + if tc.expectError { + return true, nil, fmt.Errorf("api error") + } + return true, tc.secret, nil + }) + + secretFinder := NewSecretFinder(fakeClient, "", "") + t.Run(tc.name, func(t *testing.T) { + logCtx := *log.WithField("test", "test") + + address, apiKey, appKey := secretFinder.FindCredentials(logCtx) + assert.Equal(t, tc.expectedAddress, address) + assert.Equal(t, tc.expectedApiKey, apiKey) + assert.Equal(t, tc.expectedAppKey, appKey) + }) + } + +} + +// SecretBuilder helps in constructing a corev1.Secret object +type SecretBuilder struct { + name string + data map[string][]byte +} + +// NewSecretBuilder creates a new SecretBuilder +func NewSecretBuilder() *SecretBuilder { + return &SecretBuilder{ + data: make(map[string][]byte), + } +} + +// WithName sets the name for the Secret +func (b *SecretBuilder) WithName(name string) *SecretBuilder { + b.name = name + return b +} + +// WithData sets the data for the Secret +func (b *SecretBuilder) WithData(key string, value []byte) *SecretBuilder { + b.data[key] = value + return b +} + +// Build constructs the corev1.Secret object +func (b *SecretBuilder) Build() *corev1.Secret { + return &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: b.name, + }, + Data: b.data, + } +} + +// NewSecretBuilderDefaultData creates a new SecretBuilder with default values +func NewSecretBuilderDefaultData() *SecretBuilder { + return &SecretBuilder{ + data: map[string][]byte{ + "address": []byte("datadog.com"), + "api-key": []byte("apiKey"), + "app-key": []byte("appKey"), + }, + } +} diff --git a/metricproviders/metricproviders.go b/metricproviders/metricproviders.go index 916fc85aa2..565935e00b 100644 --- a/metricproviders/metricproviders.go +++ b/metricproviders/metricproviders.go @@ -43,7 +43,7 @@ type ProviderFactory struct { type ProviderFactoryFunc func(logCtx log.Entry, metric v1alpha1.Metric) (metric.Provider, error) // NewProvider creates the correct provider based on the provider type of the Metric -func (f *ProviderFactory) NewProvider(logCtx log.Entry, metric v1alpha1.Metric) (metric.Provider, error) { +func (f *ProviderFactory) NewProvider(logCtx log.Entry, namespace string, metric v1alpha1.Metric) (metric.Provider, error) { switch provider := Type(metric); provider { case prometheus.ProviderType: api, err := prometheus.NewPrometheusAPI(metric) @@ -72,7 +72,7 @@ func (f *ProviderFactory) NewProvider(logCtx log.Entry, metric v1alpha1.Metric) } return webmetric.NewWebMetricProvider(logCtx, c, p), nil case datadog.ProviderType: - return datadog.NewDatadogProvider(logCtx, f.KubeClient, metric) + return datadog.NewDatadogProvider(logCtx, f.KubeClient, namespace, metric) case wavefront.ProviderType: client, err := wavefront.NewWavefrontAPI(metric, f.KubeClient) if err != nil { diff --git a/pkg/apiclient/rollout/rollout.swagger.json b/pkg/apiclient/rollout/rollout.swagger.json index 2fb5247d85..2e6cd847b0 100755 --- a/pkg/apiclient/rollout/rollout.swagger.json +++ b/pkg/apiclient/rollout/rollout.swagger.json @@ -1217,6 +1217,10 @@ "aggregator": { "type": "string", "title": "+kubebuilder:validation:Enum=avg;min;max;sum;last;percentile;mean;l2norm;area\nAggregator is a type of aggregator to use for metrics-based queries (default: \"\"). Used for v2" + }, + "secretRef": { + "$ref": "#/definitions/github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.SecretRef", + "title": "Secret refers to the name of the secret that should be used for an analysis and should exists in the namespace where the controller is.\n+optional" } } }, @@ -2470,6 +2474,19 @@ } } }, + "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.SecretRef": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name refers to the name of the secret that should be used to integrate with Datadog." + }, + "namespaced": { + "type": "boolean", + "title": "Namespaced indicates whether the secret is in the namespace where rollouts it installed or in the namespace where the metric was found" + } + } + }, "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.SetCanaryScale": { "type": "object", "properties": { diff --git a/pkg/apis/rollouts/v1alpha1/analysis_types.go b/pkg/apis/rollouts/v1alpha1/analysis_types.go index 90762ef66b..bef20a9120 100644 --- a/pkg/apis/rollouts/v1alpha1/analysis_types.go +++ b/pkg/apis/rollouts/v1alpha1/analysis_types.go @@ -620,4 +620,14 @@ type DatadogMetric struct { // +kubebuilder:validation:Enum=avg;min;max;sum;last;percentile;mean;l2norm;area // Aggregator is a type of aggregator to use for metrics-based queries (default: ""). Used for v2 Aggregator string `json:"aggregator,omitempty" protobuf:"bytes,6,opt,name=aggregator"` + // Secret refers to the name of the secret that should be used for an analysis and should exists in the namespace where the controller is. + // +optional + SecretRef SecretRef `json:"secretRef,omitempty" protobuf:"bytes,7,opt,name=secretRef"` +} + +type SecretRef struct { + // Name refers to the name of the secret that should be used to integrate with Datadog. + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + // Namespaced indicates whether the secret is in the namespace where rollouts it installed or in the namespace where the metric was found + Namespaced bool `json:"namespaced,omitempty" protobuf:"varint,2,opt,namespaced=dryRun"` } diff --git a/pkg/apis/rollouts/v1alpha1/generated.pb.go b/pkg/apis/rollouts/v1alpha1/generated.pb.go index 9f2149493e..74fbc1259e 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.pb.go +++ b/pkg/apis/rollouts/v1alpha1/generated.pb.go @@ -2713,10 +2713,38 @@ func (m *SecretKeyRef) XXX_DiscardUnknown() { var xxx_messageInfo_SecretKeyRef proto.InternalMessageInfo +func (m *SecretRef) Reset() { *m = SecretRef{} } +func (*SecretRef) ProtoMessage() {} +func (*SecretRef) Descriptor() ([]byte, []int) { + return fileDescriptor_e0e705f843545fab, []int{95} +} +func (m *SecretRef) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SecretRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SecretRef) XXX_Merge(src proto.Message) { + xxx_messageInfo_SecretRef.Merge(m, src) +} +func (m *SecretRef) XXX_Size() int { + return m.Size() +} +func (m *SecretRef) XXX_DiscardUnknown() { + xxx_messageInfo_SecretRef.DiscardUnknown(m) +} + +var xxx_messageInfo_SecretRef proto.InternalMessageInfo + func (m *SetCanaryScale) Reset() { *m = SetCanaryScale{} } func (*SetCanaryScale) ProtoMessage() {} func (*SetCanaryScale) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{95} + return fileDescriptor_e0e705f843545fab, []int{96} } func (m *SetCanaryScale) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2744,7 +2772,7 @@ var xxx_messageInfo_SetCanaryScale proto.InternalMessageInfo func (m *SetHeaderRoute) Reset() { *m = SetHeaderRoute{} } func (*SetHeaderRoute) ProtoMessage() {} func (*SetHeaderRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{96} + return fileDescriptor_e0e705f843545fab, []int{97} } func (m *SetHeaderRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2772,7 +2800,7 @@ var xxx_messageInfo_SetHeaderRoute proto.InternalMessageInfo func (m *SetMirrorRoute) Reset() { *m = SetMirrorRoute{} } func (*SetMirrorRoute) ProtoMessage() {} func (*SetMirrorRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{97} + return fileDescriptor_e0e705f843545fab, []int{98} } func (m *SetMirrorRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2800,7 +2828,7 @@ var xxx_messageInfo_SetMirrorRoute proto.InternalMessageInfo func (m *Sigv4Config) Reset() { *m = Sigv4Config{} } func (*Sigv4Config) ProtoMessage() {} func (*Sigv4Config) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{98} + return fileDescriptor_e0e705f843545fab, []int{99} } func (m *Sigv4Config) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2828,7 +2856,7 @@ var xxx_messageInfo_Sigv4Config proto.InternalMessageInfo func (m *SkyWalkingMetric) Reset() { *m = SkyWalkingMetric{} } func (*SkyWalkingMetric) ProtoMessage() {} func (*SkyWalkingMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{99} + return fileDescriptor_e0e705f843545fab, []int{100} } func (m *SkyWalkingMetric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2856,7 +2884,7 @@ var xxx_messageInfo_SkyWalkingMetric proto.InternalMessageInfo func (m *StepPluginStatus) Reset() { *m = StepPluginStatus{} } func (*StepPluginStatus) ProtoMessage() {} func (*StepPluginStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{100} + return fileDescriptor_e0e705f843545fab, []int{101} } func (m *StepPluginStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2884,7 +2912,7 @@ var xxx_messageInfo_StepPluginStatus proto.InternalMessageInfo func (m *StickinessConfig) Reset() { *m = StickinessConfig{} } func (*StickinessConfig) ProtoMessage() {} func (*StickinessConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{101} + return fileDescriptor_e0e705f843545fab, []int{102} } func (m *StickinessConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2912,7 +2940,7 @@ var xxx_messageInfo_StickinessConfig proto.InternalMessageInfo func (m *StringMatch) Reset() { *m = StringMatch{} } func (*StringMatch) ProtoMessage() {} func (*StringMatch) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{102} + return fileDescriptor_e0e705f843545fab, []int{103} } func (m *StringMatch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2940,7 +2968,7 @@ var xxx_messageInfo_StringMatch proto.InternalMessageInfo func (m *TCPRoute) Reset() { *m = TCPRoute{} } func (*TCPRoute) ProtoMessage() {} func (*TCPRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{103} + return fileDescriptor_e0e705f843545fab, []int{104} } func (m *TCPRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2968,7 +2996,7 @@ var xxx_messageInfo_TCPRoute proto.InternalMessageInfo func (m *TLSRoute) Reset() { *m = TLSRoute{} } func (*TLSRoute) ProtoMessage() {} func (*TLSRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{104} + return fileDescriptor_e0e705f843545fab, []int{105} } func (m *TLSRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2996,7 +3024,7 @@ var xxx_messageInfo_TLSRoute proto.InternalMessageInfo func (m *TTLStrategy) Reset() { *m = TTLStrategy{} } func (*TTLStrategy) ProtoMessage() {} func (*TTLStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{105} + return fileDescriptor_e0e705f843545fab, []int{106} } func (m *TTLStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3024,7 +3052,7 @@ var xxx_messageInfo_TTLStrategy proto.InternalMessageInfo func (m *TemplateService) Reset() { *m = TemplateService{} } func (*TemplateService) ProtoMessage() {} func (*TemplateService) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{106} + return fileDescriptor_e0e705f843545fab, []int{107} } func (m *TemplateService) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3052,7 +3080,7 @@ var xxx_messageInfo_TemplateService proto.InternalMessageInfo func (m *TemplateSpec) Reset() { *m = TemplateSpec{} } func (*TemplateSpec) ProtoMessage() {} func (*TemplateSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{107} + return fileDescriptor_e0e705f843545fab, []int{108} } func (m *TemplateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3080,7 +3108,7 @@ var xxx_messageInfo_TemplateSpec proto.InternalMessageInfo func (m *TemplateStatus) Reset() { *m = TemplateStatus{} } func (*TemplateStatus) ProtoMessage() {} func (*TemplateStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{108} + return fileDescriptor_e0e705f843545fab, []int{109} } func (m *TemplateStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3108,7 +3136,7 @@ var xxx_messageInfo_TemplateStatus proto.InternalMessageInfo func (m *TraefikTrafficRouting) Reset() { *m = TraefikTrafficRouting{} } func (*TraefikTrafficRouting) ProtoMessage() {} func (*TraefikTrafficRouting) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{109} + return fileDescriptor_e0e705f843545fab, []int{110} } func (m *TraefikTrafficRouting) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3136,7 +3164,7 @@ var xxx_messageInfo_TraefikTrafficRouting proto.InternalMessageInfo func (m *TrafficWeights) Reset() { *m = TrafficWeights{} } func (*TrafficWeights) ProtoMessage() {} func (*TrafficWeights) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{110} + return fileDescriptor_e0e705f843545fab, []int{111} } func (m *TrafficWeights) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3164,7 +3192,7 @@ var xxx_messageInfo_TrafficWeights proto.InternalMessageInfo func (m *ValueFrom) Reset() { *m = ValueFrom{} } func (*ValueFrom) ProtoMessage() {} func (*ValueFrom) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{111} + return fileDescriptor_e0e705f843545fab, []int{112} } func (m *ValueFrom) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3192,7 +3220,7 @@ var xxx_messageInfo_ValueFrom proto.InternalMessageInfo func (m *WavefrontMetric) Reset() { *m = WavefrontMetric{} } func (*WavefrontMetric) ProtoMessage() {} func (*WavefrontMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{112} + return fileDescriptor_e0e705f843545fab, []int{113} } func (m *WavefrontMetric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3220,7 +3248,7 @@ var xxx_messageInfo_WavefrontMetric proto.InternalMessageInfo func (m *WebMetric) Reset() { *m = WebMetric{} } func (*WebMetric) ProtoMessage() {} func (*WebMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{113} + return fileDescriptor_e0e705f843545fab, []int{114} } func (m *WebMetric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3248,7 +3276,7 @@ var xxx_messageInfo_WebMetric proto.InternalMessageInfo func (m *WebMetricHeader) Reset() { *m = WebMetricHeader{} } func (*WebMetricHeader) ProtoMessage() {} func (*WebMetricHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{114} + return fileDescriptor_e0e705f843545fab, []int{115} } func (m *WebMetricHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3276,7 +3304,7 @@ var xxx_messageInfo_WebMetricHeader proto.InternalMessageInfo func (m *WeightDestination) Reset() { *m = WeightDestination{} } func (*WeightDestination) ProtoMessage() {} func (*WeightDestination) Descriptor() ([]byte, []int) { - return fileDescriptor_e0e705f843545fab, []int{115} + return fileDescriptor_e0e705f843545fab, []int{116} } func (m *WeightDestination) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3409,6 +3437,7 @@ func init() { proto.RegisterType((*SMITrafficRouting)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.SMITrafficRouting") proto.RegisterType((*ScopeDetail)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.ScopeDetail") proto.RegisterType((*SecretKeyRef)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.SecretKeyRef") + proto.RegisterType((*SecretRef)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.SecretRef") proto.RegisterType((*SetCanaryScale)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.SetCanaryScale") proto.RegisterType((*SetHeaderRoute)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.SetHeaderRoute") proto.RegisterType((*SetMirrorRoute)(nil), "github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.SetMirrorRoute") @@ -3437,16 +3466,16 @@ func init() { } var fileDescriptor_e0e705f843545fab = []byte{ - // 8922 bytes of a gzipped FileDescriptorProto + // 8969 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x64, 0xd7, 0x75, 0x98, 0x1e, 0x87, 0x43, 0xce, 0x9c, 0xe1, 0x92, 0xdc, 0xbb, 0xbb, 0x12, 0x45, 0x69, 0x97, 0xeb, 0xa7, 0x54, 0x5d, 0xc5, 0x32, 0x69, 0xaf, 0xa4, 0x54, 0xb6, 0x5c, 0xb5, 0x33, 0xe4, 0xae, 0x96, 0x2b, 0x72, 0x97, 0x3a, 0xc3, 0xd5, 0xc6, 0x1f, 0x4a, 0xfc, 0x38, 0x73, 0x39, 0x7c, 0xcb, 0x99, 0xf7, 0xc6, 0xef, 0xbd, 0xe1, 0x2e, 0x65, 0x21, 0x96, 0x6d, 0x28, 0x76, 0x5c, 0x1b, 0x71, 0x93, 0x18, 0x45, 0x3f, 0x50, 0xb8, 0x41, 0x8a, 0xb4, 0x4d, 0x7f, 0x14, 0x81, 0x8b, 0xf6, 0x47, - 0x80, 0x16, 0x75, 0x53, 0xd8, 0x40, 0x5d, 0x38, 0x3f, 0x5a, 0xa7, 0x05, 0xc2, 0xd4, 0x4c, 0xff, + 0x80, 0x16, 0x75, 0x53, 0x38, 0x40, 0x5d, 0x38, 0x3f, 0x5a, 0xa7, 0x05, 0xc2, 0xd4, 0x4c, 0xff, 0x34, 0x68, 0x61, 0xa4, 0x70, 0x11, 0x54, 0x3f, 0x8a, 0xe2, 0x7e, 0xbe, 0xfb, 0xde, 0xbc, 0xe1, - 0xd7, 0x3c, 0xae, 0x94, 0x26, 0xff, 0x66, 0xee, 0x39, 0xf7, 0x9c, 0xf3, 0xee, 0xe7, 0xb9, 0xe7, + 0xd7, 0x3c, 0xae, 0x94, 0xc6, 0xff, 0x66, 0xee, 0x39, 0xf7, 0x9c, 0xf3, 0xee, 0xe7, 0xb9, 0xe7, 0x9e, 0x73, 0x2e, 0xac, 0xb4, 0xdc, 0x68, 0xab, 0xb7, 0x31, 0xdf, 0xf0, 0x3b, 0x0b, 0x4e, 0xd0, 0xf2, 0xbb, 0x81, 0x7f, 0x8f, 0xff, 0xf8, 0x50, 0xe0, 0xb7, 0xdb, 0x7e, 0x2f, 0x0a, 0x17, 0xba, 0xdb, 0xad, 0x05, 0xa7, 0xeb, 0x86, 0x0b, 0xba, 0x64, 0xe7, 0x23, 0x4e, 0xbb, 0xbb, 0xe5, 0x7c, @@ -3458,7 +3487,7 @@ var fileDescriptor_e0e705f843545fab = []byte{ 0x07, 0x34, 0x0b, 0xe7, 0xf9, 0x18, 0xa7, 0xe3, 0x34, 0xb6, 0x5c, 0x8f, 0x06, 0xbb, 0xf1, 0x57, 0x77, 0x68, 0xe4, 0x64, 0xd5, 0x5a, 0x18, 0x54, 0x2b, 0xe8, 0x79, 0x91, 0xdb, 0xa1, 0x7d, 0x15, 0x7e, 0xe6, 0xb0, 0x0a, 0x61, 0x63, 0x8b, 0x76, 0x9c, 0xbe, 0x7a, 0xcf, 0x0d, 0xaa, 0xd7, 0x8b, - 0xdc, 0xf6, 0x82, 0xeb, 0x45, 0x61, 0x14, 0xa4, 0x2b, 0xd9, 0x3f, 0x2e, 0x40, 0xb9, 0xba, 0x52, + 0xdc, 0xf6, 0x82, 0xeb, 0x45, 0x61, 0x14, 0xa4, 0x2b, 0xd9, 0x3f, 0x2a, 0x40, 0xb9, 0xba, 0x52, 0xab, 0x47, 0x4e, 0xd4, 0x0b, 0xc9, 0x2f, 0x5a, 0x30, 0xd1, 0xf6, 0x9d, 0x66, 0xcd, 0x69, 0x3b, 0x5e, 0x83, 0x06, 0x33, 0xd6, 0x65, 0xeb, 0x4a, 0xe5, 0xea, 0xca, 0xfc, 0x30, 0xfd, 0x35, 0x5f, 0xbd, 0x1f, 0x22, 0x0d, 0xfd, 0x5e, 0xd0, 0xa0, 0x48, 0x37, 0x6b, 0xe7, 0xbf, 0xbb, 0x37, 0xf7, @@ -3490,7 +3519,7 @@ var fileDescriptor_e0e705f843545fab = []byte{ 0x6f, 0x39, 0x1d, 0x8a, 0x1c, 0x42, 0x9e, 0x82, 0xe2, 0x8e, 0xd3, 0xee, 0x51, 0xde, 0x48, 0xe5, 0xda, 0x19, 0x89, 0x52, 0x7c, 0x9d, 0x15, 0xa2, 0x80, 0x91, 0xb7, 0xa0, 0xcc, 0x7f, 0x5c, 0x0f, 0xfc, 0x4e, 0x4e, 0x9f, 0x26, 0x25, 0x7c, 0x5d, 0x91, 0x15, 0xc3, 0x4f, 0xff, 0xc5, 0x98, 0xa1, - 0xfd, 0x87, 0x16, 0x4c, 0x19, 0x1f, 0xb7, 0xe2, 0x86, 0x11, 0xf9, 0x74, 0xdf, 0xe0, 0x99, 0x3f, + 0xfd, 0x47, 0x16, 0x4c, 0x19, 0x1f, 0xb7, 0xe2, 0x86, 0x11, 0xf9, 0x74, 0xdf, 0xe0, 0x99, 0x3f, 0xda, 0xe0, 0x61, 0xb5, 0xf9, 0xd0, 0x99, 0x96, 0x5f, 0x5a, 0x52, 0x25, 0xc6, 0xc0, 0xf1, 0xa0, 0xe8, 0x46, 0xb4, 0x13, 0xce, 0x8c, 0x5c, 0x2e, 0x5c, 0xa9, 0x5c, 0x5d, 0xce, 0xad, 0x1b, 0xe3, 0xf6, 0x5d, 0x66, 0xf4, 0x51, 0xb0, 0xb1, 0xbf, 0x5d, 0x48, 0x74, 0xdf, 0xaa, 0x92, 0xe3, 0x1d, @@ -3525,7 +3554,7 @@ var fileDescriptor_e0e705f843545fab = []byte{ 0xf6, 0xbc, 0x1b, 0x6e, 0x18, 0xf9, 0xc1, 0xee, 0x8a, 0xdb, 0x71, 0x23, 0x3e, 0xa0, 0x8b, 0xb5, 0x8b, 0xfb, 0x7b, 0x73, 0x8f, 0xd7, 0x07, 0x21, 0xe1, 0xe0, 0xfa, 0xc4, 0x81, 0x27, 0x7a, 0xde, 0x60, 0xf2, 0xe2, 0xf8, 0x31, 0xb7, 0xbf, 0x37, 0xf7, 0xc4, 0x9d, 0xc1, 0x68, 0x78, 0x10, 0x0d, - 0xfb, 0x8f, 0x2d, 0xb6, 0x0d, 0x89, 0xef, 0x5a, 0xa7, 0x9d, 0x6e, 0x9b, 0x2d, 0x9d, 0xa7, 0xaf, + 0xfb, 0x4f, 0x2c, 0xb6, 0x0d, 0x89, 0xef, 0x5a, 0xa7, 0x9d, 0x6e, 0x9b, 0x2d, 0x9d, 0xa7, 0xaf, 0x1c, 0x47, 0x09, 0xe5, 0x18, 0xf3, 0xd9, 0xcb, 0x95, 0xfc, 0x83, 0x34, 0x64, 0xfb, 0xbf, 0x5b, 0x70, 0x3e, 0x8d, 0xfc, 0x10, 0x14, 0xba, 0x30, 0xa9, 0xd0, 0xdd, 0xca, 0xf7, 0x6b, 0x07, 0x68, 0x75, 0xbf, 0x64, 0x0c, 0x58, 0x85, 0x8a, 0x74, 0x93, 0xbc, 0x08, 0x13, 0x91, 0xfc, 0x7b, 0x2b, @@ -3555,11 +3584,11 @@ var fileDescriptor_e0e705f843545fab = []byte{ 0x00, 0xb9, 0xc3, 0x27, 0xa7, 0xfd, 0x86, 0x1e, 0xf5, 0xc9, 0x31, 0x77, 0x84, 0x79, 0x6d, 0xc3, 0x18, 0x9f, 0x3a, 0x6a, 0x62, 0x03, 0xdb, 0x83, 0xf9, 0x9c, 0x0a, 0x51, 0x42, 0xec, 0xef, 0x58, 0x50, 0x3a, 0x86, 0xed, 0x73, 0x2e, 0x69, 0xfb, 0x2c, 0xf7, 0xd9, 0x3d, 0xa3, 0x7e, 0xbb, 0xe7, - 0x2b, 0xc3, 0xf5, 0xc6, 0x51, 0xec, 0x9d, 0x3f, 0xb6, 0xe0, 0x6c, 0x9f, 0x7d, 0x94, 0x6c, 0xc1, + 0x2b, 0xc3, 0xf5, 0xc6, 0x51, 0xec, 0x9d, 0x3f, 0xb2, 0xe0, 0x6c, 0x9f, 0x7d, 0x94, 0x6c, 0xc1, 0xf9, 0xae, 0xdf, 0x54, 0xdb, 0xe9, 0x0d, 0x27, 0xdc, 0xe2, 0x30, 0xf9, 0x79, 0xcf, 0xb3, 0x9e, 0x5c, 0xcb, 0x80, 0xbf, 0xbb, 0x37, 0x37, 0xa3, 0x89, 0xa4, 0x10, 0x30, 0x93, 0x22, 0xe9, 0x42, 0x69, 0xd3, 0xa5, 0xed, 0x66, 0x3c, 0x04, 0x87, 0xd4, 0xd2, 0xae, 0x4b, 0x6a, 0xe2, 0x6a, 0x40, - 0xfd, 0x43, 0xcd, 0xc5, 0xfe, 0x89, 0x05, 0x93, 0xd5, 0x5e, 0xb4, 0xc5, 0x74, 0x94, 0x06, 0xb7, + 0xfd, 0x43, 0xcd, 0xc5, 0xfe, 0xb1, 0x05, 0x93, 0xd5, 0x5e, 0xb4, 0xc5, 0x74, 0x94, 0x06, 0xb7, 0xc6, 0x11, 0x0f, 0x8a, 0xa1, 0xdb, 0xda, 0x79, 0x3e, 0x9f, 0xc5, 0xb8, 0xce, 0x48, 0xc9, 0x2b, 0x12, 0xad, 0xac, 0xf3, 0x42, 0x14, 0x6c, 0x48, 0x00, 0x63, 0xbe, 0xd3, 0x8b, 0xb6, 0xae, 0xca, 0x4f, 0x1e, 0xd2, 0x32, 0x71, 0x9b, 0x7d, 0xce, 0x55, 0xc9, 0x51, 0xab, 0x8c, 0xa2, 0x14, 0x25, @@ -3597,405 +3626,408 @@ var fileDescriptor_e0e705f843545fab = []byte{ 0x67, 0x54, 0x85, 0x98, 0x66, 0x4f, 0xbe, 0x6e, 0xa9, 0xad, 0x51, 0x4b, 0x74, 0xe6, 0xb4, 0x24, 0x22, 0xf1, 0x4e, 0xab, 0x05, 0x4a, 0x31, 0x27, 0x3f, 0x07, 0xb3, 0xce, 0x86, 0x1f, 0x44, 0x99, 0x93, 0x6f, 0x66, 0x92, 0x4f, 0xa3, 0x4b, 0xfb, 0x7b, 0x73, 0xb3, 0xd5, 0x81, 0x58, 0x78, 0x00, - 0x05, 0xfb, 0x7b, 0x63, 0x30, 0x21, 0x4e, 0x42, 0x72, 0xeb, 0xfa, 0x1d, 0x0b, 0x9e, 0x6c, 0xf4, - 0x82, 0x80, 0x7a, 0x51, 0x3d, 0xa2, 0xdd, 0xfe, 0x8d, 0xcb, 0x3a, 0xd5, 0x8d, 0xeb, 0xf2, 0xfe, - 0xde, 0xdc, 0x93, 0x8b, 0x07, 0xf0, 0xc7, 0x03, 0xa5, 0x23, 0xff, 0xc1, 0x02, 0x5b, 0x22, 0xd4, - 0x9c, 0xc6, 0x76, 0x2b, 0xf0, 0x7b, 0x5e, 0xb3, 0xff, 0x23, 0x46, 0x4e, 0xf5, 0x23, 0x9e, 0xde, - 0xdf, 0x9b, 0xb3, 0x17, 0x0f, 0x95, 0x02, 0x8f, 0x20, 0x29, 0x79, 0x05, 0xce, 0x4a, 0xac, 0x6b, - 0x0f, 0xba, 0x34, 0x70, 0xd9, 0x99, 0x43, 0x2a, 0x8e, 0xb1, 0x6f, 0x5a, 0x1a, 0x01, 0xfb, 0xeb, - 0x90, 0x10, 0xc6, 0xef, 0x53, 0xb7, 0xb5, 0x15, 0x29, 0xf5, 0x69, 0x48, 0x87, 0x34, 0x69, 0x15, - 0xb9, 0x2b, 0x68, 0xd6, 0x2a, 0xfb, 0x7b, 0x73, 0xe3, 0xf2, 0x0f, 0x2a, 0x4e, 0xe4, 0x16, 0x4c, - 0x8a, 0x73, 0xea, 0x9a, 0xeb, 0xb5, 0xd6, 0x7c, 0x4f, 0x78, 0x55, 0x95, 0x6b, 0x4f, 0xab, 0x0d, - 0xbf, 0x9e, 0x80, 0xbe, 0xbb, 0x37, 0x37, 0xa1, 0x7e, 0xaf, 0xef, 0x76, 0x29, 0xa6, 0x6a, 0x93, - 0xbf, 0x63, 0x01, 0x09, 0x23, 0xda, 0x5d, 0x6b, 0xf7, 0x5a, 0xae, 0x6c, 0x22, 0xe9, 0x1f, 0x95, - 0x83, 0xab, 0x56, 0x92, 0x6e, 0x6d, 0x56, 0x0a, 0x49, 0xea, 0x7d, 0x1c, 0x31, 0x43, 0x0a, 0xfb, - 0xdb, 0xe3, 0x00, 0x6a, 0x2e, 0xd1, 0x2e, 0xf9, 0x20, 0x94, 0x43, 0x1a, 0x89, 0x26, 0x91, 0xd7, - 0x5c, 0xe2, 0x72, 0x52, 0x15, 0x62, 0x0c, 0x27, 0xdb, 0x50, 0xec, 0x3a, 0xbd, 0x90, 0xe6, 0x73, - 0xb8, 0x91, 0x23, 0x73, 0x8d, 0x51, 0x14, 0xa7, 0x66, 0xfe, 0x13, 0x05, 0x0f, 0xf2, 0x25, 0x0b, - 0x80, 0x26, 0x47, 0xd3, 0xd0, 0xd6, 0x2b, 0xc9, 0x32, 0x1e, 0x70, 0xac, 0x0d, 0x6a, 0x93, 0xfb, - 0x7b, 0x73, 0x60, 0x8c, 0x4b, 0x83, 0x2d, 0xb9, 0x0f, 0x25, 0x47, 0x6d, 0x48, 0xa3, 0xa7, 0xb1, - 0x21, 0xf1, 0xc3, 0xac, 0x9e, 0x51, 0x9a, 0x19, 0xf9, 0x8a, 0x05, 0x93, 0x21, 0x8d, 0x64, 0x57, - 0xb1, 0x65, 0x51, 0x6a, 0xe3, 0x43, 0xce, 0x88, 0x7a, 0x82, 0xa6, 0x58, 0xde, 0x93, 0x65, 0x98, - 0xe2, 0xab, 0x44, 0xb9, 0x41, 0x9d, 0x26, 0x0d, 0xb8, 0xad, 0x44, 0xaa, 0x79, 0xc3, 0x8b, 0x62, - 0xd0, 0xd4, 0xa2, 0x18, 0x65, 0x98, 0xe2, 0xab, 0x44, 0x59, 0x75, 0x83, 0xc0, 0x97, 0xa2, 0x94, - 0x72, 0x12, 0xc5, 0xa0, 0xa9, 0x45, 0x31, 0xca, 0x30, 0xc5, 0x97, 0xb4, 0x61, 0xac, 0xcb, 0xa7, - 0x96, 0x54, 0xe5, 0x86, 0xbc, 0x23, 0x57, 0xd3, 0x94, 0x76, 0x85, 0x4d, 0x4a, 0xfc, 0x47, 0xc9, - 0xc3, 0xfe, 0xd6, 0x19, 0x98, 0x54, 0xd3, 0x36, 0x3e, 0xe4, 0x08, 0x43, 0xe0, 0x80, 0x43, 0xce, - 0xa2, 0x09, 0xc4, 0x24, 0x2e, 0xab, 0x2c, 0x56, 0xad, 0xe4, 0x19, 0x47, 0x57, 0xae, 0x9b, 0x40, - 0x4c, 0xe2, 0x92, 0x0e, 0x14, 0xd9, 0xca, 0xa2, 0xdc, 0x2f, 0x86, 0xfc, 0xf2, 0x78, 0x35, 0x32, - 0x8c, 0x2a, 0x8c, 0x3c, 0x0a, 0x2e, 0xdc, 0x96, 0x1d, 0x25, 0xcc, 0xdb, 0x72, 0x2a, 0xe6, 0xb3, - 0x1a, 0x24, 0x2d, 0xe7, 0xa2, 0xef, 0x93, 0x65, 0x98, 0x62, 0x9f, 0x71, 0xee, 0x29, 0x9e, 0xe2, - 0xb9, 0xe7, 0x93, 0x50, 0xea, 0x38, 0x0f, 0xea, 0xbd, 0xa0, 0x75, 0xf2, 0xf3, 0x95, 0x74, 0xa7, - 0x15, 0x54, 0x50, 0xd3, 0x23, 0x5f, 0xb0, 0x8c, 0x05, 0x4e, 0xf8, 0x5a, 0xdc, 0xcd, 0x77, 0x81, - 0xd3, 0x6a, 0xc3, 0xc0, 0xa5, 0xae, 0xef, 0x14, 0x52, 0x7a, 0xe8, 0xa7, 0x10, 0xa6, 0x51, 0x8b, - 0x09, 0xa2, 0x35, 0xea, 0xf2, 0xa9, 0x6a, 0xd4, 0x8b, 0x09, 0x66, 0x98, 0x62, 0xce, 0xe5, 0x11, - 0x73, 0x4e, 0xcb, 0x03, 0xa7, 0x2a, 0x4f, 0x3d, 0xc1, 0x0c, 0x53, 0xcc, 0x07, 0x1f, 0xbd, 0x2b, - 0xa7, 0x73, 0xf4, 0x9e, 0xc8, 0xe1, 0xe8, 0x7d, 0xf0, 0xa9, 0xe4, 0xcc, 0xb0, 0xa7, 0x12, 0x72, - 0x13, 0x48, 0x73, 0xd7, 0x73, 0x3a, 0x6e, 0x43, 0x2e, 0x96, 0x7c, 0x93, 0x9e, 0xe4, 0xa6, 0x19, - 0xad, 0x95, 0x2d, 0xf5, 0x61, 0x60, 0x46, 0x2d, 0x12, 0x41, 0xa9, 0xab, 0x94, 0xcf, 0xa9, 0x3c, - 0x46, 0xbf, 0x52, 0x46, 0x85, 0x0b, 0x0d, 0x9b, 0x78, 0xaa, 0x04, 0x35, 0x27, 0xb2, 0x02, 0xe7, - 0x3b, 0xae, 0xb7, 0xe6, 0x37, 0xc3, 0x35, 0x1a, 0x48, 0xc3, 0x53, 0x9d, 0x46, 0x33, 0xd3, 0xbc, - 0x6d, 0xb8, 0x31, 0x61, 0x35, 0x03, 0x8e, 0x99, 0xb5, 0xec, 0xff, 0x6d, 0xc1, 0xf4, 0x62, 0xdb, - 0xef, 0x35, 0xef, 0x3a, 0x51, 0x63, 0x4b, 0x78, 0x6c, 0x90, 0x97, 0xa1, 0xe4, 0x7a, 0x11, 0x0d, - 0x76, 0x9c, 0xb6, 0xdc, 0x9f, 0x6c, 0x65, 0x49, 0x5e, 0x96, 0xe5, 0xef, 0xee, 0xcd, 0x4d, 0x2e, - 0xf5, 0x02, 0x6e, 0xb0, 0x17, 0xab, 0x15, 0xea, 0x3a, 0xe4, 0x5b, 0x16, 0x9c, 0x15, 0x3e, 0x1f, - 0x4b, 0x4e, 0xe4, 0xbc, 0xd6, 0xa3, 0x81, 0x4b, 0x95, 0xd7, 0xc7, 0x90, 0x0b, 0x55, 0x5a, 0x56, - 0xc5, 0x60, 0x37, 0x3e, 0xb3, 0xac, 0xa6, 0x39, 0x63, 0xbf, 0x30, 0xf6, 0xaf, 0x16, 0xe0, 0xf1, - 0x81, 0xb4, 0xc8, 0x2c, 0x8c, 0xb8, 0x4d, 0xf9, 0xe9, 0x20, 0xe9, 0x8e, 0x2c, 0x37, 0x71, 0xc4, - 0x6d, 0x92, 0x79, 0xae, 0xe1, 0x06, 0x34, 0x0c, 0xd5, 0xdd, 0x7b, 0x59, 0x2b, 0xa3, 0xb2, 0x14, - 0x0d, 0x0c, 0x32, 0x07, 0x45, 0xee, 0x4a, 0x2d, 0x8f, 0x56, 0x5c, 0x67, 0xe6, 0x5e, 0xcb, 0x28, - 0xca, 0xc9, 0x17, 0x2d, 0x00, 0x21, 0x20, 0xd3, 0xf7, 0xe5, 0x2e, 0x89, 0xf9, 0x36, 0x13, 0xa3, - 0x2c, 0xa4, 0x8c, 0xff, 0xa3, 0xc1, 0x95, 0xac, 0xc3, 0x18, 0x53, 0x9f, 0xfd, 0xe6, 0x89, 0x37, - 0x45, 0xa1, 0x00, 0x71, 0x1a, 0x28, 0x69, 0xb1, 0xb6, 0x0a, 0x68, 0xd4, 0x0b, 0x3c, 0xd6, 0xb4, - 0x7c, 0x1b, 0x2c, 0x09, 0x29, 0x50, 0x97, 0xa2, 0x81, 0x61, 0xff, 0x8b, 0x11, 0x38, 0x9f, 0x25, - 0x3a, 0xdb, 0x6d, 0xc6, 0x84, 0xb4, 0xd2, 0x4a, 0xf0, 0xb3, 0xf9, 0xb7, 0x8f, 0x74, 0x5f, 0xd2, - 0x37, 0x36, 0xd2, 0x97, 0x54, 0xf2, 0x25, 0x3f, 0xab, 0x5b, 0x68, 0xe4, 0x84, 0x2d, 0xa4, 0x29, - 0xa7, 0x5a, 0xe9, 0x32, 0x8c, 0x86, 0xac, 0xe7, 0x0b, 0xc9, 0x9b, 0x1f, 0xde, 0x47, 0x1c, 0xc2, - 0x30, 0x7a, 0x9e, 0x1b, 0xc9, 0xf8, 0x23, 0x8d, 0x71, 0xc7, 0x73, 0x23, 0xe4, 0x10, 0xfb, 0x9b, - 0x23, 0x30, 0x3b, 0xf8, 0xa3, 0xc8, 0x37, 0x2d, 0x80, 0x26, 0x3b, 0x1c, 0x85, 0xdc, 0x89, 0x5f, - 0xb8, 0x7b, 0x39, 0xa7, 0xd5, 0x86, 0x4b, 0x8a, 0x53, 0xec, 0x87, 0xa8, 0x8b, 0x42, 0x34, 0x04, - 0x21, 0x57, 0xd5, 0xd0, 0xe7, 0xb7, 0x56, 0x62, 0x32, 0xe9, 0x3a, 0xab, 0x1a, 0x82, 0x06, 0x16, - 0x3b, 0xfd, 0x7a, 0x4e, 0x87, 0x86, 0x5d, 0x47, 0x47, 0x73, 0xf1, 0xd3, 0xef, 0x2d, 0x55, 0x88, - 0x31, 0xdc, 0x6e, 0xc3, 0x53, 0x47, 0x90, 0x33, 0xa7, 0x60, 0x19, 0xfb, 0x4f, 0x2c, 0x78, 0x4c, - 0x7a, 0xe2, 0xfd, 0xb9, 0x71, 0xeb, 0xfc, 0x53, 0x0b, 0x9e, 0x18, 0xf0, 0xcd, 0x0f, 0xc1, 0xbb, - 0xf3, 0xcd, 0xa4, 0x77, 0xe7, 0x9d, 0x61, 0x87, 0x74, 0xe6, 0x77, 0x0c, 0x70, 0xf2, 0xfc, 0x5e, - 0x01, 0xce, 0xb0, 0x65, 0xab, 0xe9, 0xb7, 0x72, 0xda, 0x38, 0x9f, 0x82, 0xe2, 0x67, 0xd9, 0x06, - 0x94, 0x1e, 0x64, 0x7c, 0x57, 0x42, 0x01, 0x23, 0x5f, 0xb2, 0x60, 0xfc, 0xb3, 0x72, 0x4f, 0x15, - 0x67, 0xb9, 0x21, 0x17, 0xc3, 0xc4, 0x37, 0xcc, 0xcb, 0x1d, 0x52, 0xc4, 0xe0, 0x68, 0x5f, 0x4e, - 0xb5, 0x95, 0x2a, 0xce, 0xe4, 0x19, 0x18, 0xdf, 0xf4, 0x83, 0x4e, 0xaf, 0xed, 0xa4, 0x03, 0x3f, - 0xaf, 0x8b, 0x62, 0x54, 0x70, 0x36, 0xc9, 0x9d, 0xae, 0xfb, 0x3a, 0x0d, 0x42, 0x11, 0x92, 0x91, - 0x98, 0xe4, 0x55, 0x0d, 0x41, 0x03, 0x8b, 0xd7, 0x69, 0xb5, 0x02, 0xda, 0x72, 0x22, 0x3f, 0xe0, - 0x3b, 0x87, 0x59, 0x47, 0x43, 0xd0, 0xc0, 0x9a, 0xfd, 0x18, 0x4c, 0x98, 0xc2, 0x1f, 0x2b, 0x9e, - 0xe7, 0xe3, 0x20, 0x9d, 0x3a, 0x53, 0x4b, 0x92, 0x75, 0x94, 0x25, 0xc9, 0xfe, 0x4f, 0x23, 0x60, - 0xd8, 0xa2, 0x1e, 0xc2, 0x54, 0xf7, 0x12, 0x53, 0x7d, 0x48, 0x3b, 0x8a, 0x61, 0x59, 0x1b, 0x14, - 0xdd, 0xb8, 0x93, 0x8a, 0x6e, 0xbc, 0x95, 0x1b, 0xc7, 0x83, 0x83, 0x1b, 0x7f, 0x68, 0xc1, 0x13, - 0x31, 0x72, 0xbf, 0x0d, 0xfb, 0xf0, 0x75, 0xfb, 0x05, 0xa8, 0x38, 0x71, 0x35, 0x39, 0xb1, 0x8c, - 0xd0, 0x32, 0x0d, 0x42, 0x13, 0x2f, 0x0e, 0x8b, 0x29, 0x9c, 0x30, 0x2c, 0x66, 0xf4, 0xe0, 0xb0, - 0x18, 0xfb, 0x27, 0x23, 0x70, 0xb1, 0xff, 0xcb, 0x4c, 0x5f, 0xf1, 0xc3, 0xbf, 0x2d, 0xed, 0x4d, - 0x3e, 0x72, 0x62, 0x6f, 0xf2, 0xc2, 0x51, 0xbd, 0xc9, 0xb5, 0x0f, 0xf7, 0xe8, 0xa9, 0xfb, 0x70, - 0xd7, 0xe1, 0x82, 0x72, 0x18, 0xbd, 0xee, 0x07, 0x32, 0x36, 0x44, 0xad, 0x20, 0xa5, 0xda, 0x45, - 0x59, 0xe5, 0x02, 0x66, 0x21, 0x61, 0x76, 0x5d, 0xfb, 0x87, 0x05, 0x38, 0x17, 0x37, 0xfb, 0xa2, - 0xef, 0x35, 0x5d, 0xee, 0x73, 0xf4, 0x12, 0x8c, 0x46, 0xbb, 0x5d, 0xd5, 0xd8, 0x7f, 0x59, 0x89, - 0xb3, 0xbe, 0xdb, 0x65, 0xbd, 0xfd, 0x58, 0x46, 0x15, 0x7e, 0x8b, 0xc0, 0x2b, 0x91, 0x15, 0x3d, - 0x3b, 0x44, 0x0f, 0x3c, 0x9f, 0x1c, 0xcd, 0xef, 0xee, 0xcd, 0x65, 0x64, 0x79, 0x98, 0xd7, 0x94, - 0x92, 0x63, 0x9e, 0xdc, 0x83, 0xc9, 0xb6, 0x13, 0x46, 0x77, 0xba, 0x4d, 0x27, 0xa2, 0xeb, 0xae, - 0xf4, 0xe6, 0x39, 0x5e, 0x38, 0x8d, 0x76, 0x7b, 0x58, 0x49, 0x50, 0xc2, 0x14, 0x65, 0xb2, 0x03, - 0x84, 0x95, 0xac, 0x07, 0x8e, 0x17, 0x8a, 0xaf, 0x62, 0xfc, 0x8e, 0x1f, 0x1b, 0xa5, 0x8f, 0xce, - 0x2b, 0x7d, 0xd4, 0x30, 0x83, 0x03, 0x79, 0x1a, 0xc6, 0x02, 0xea, 0x84, 0x7a, 0x3b, 0xd0, 0xf3, - 0x1f, 0x79, 0x29, 0x4a, 0xa8, 0x39, 0xa1, 0xc6, 0x0e, 0x99, 0x50, 0x7f, 0x60, 0xc1, 0x64, 0xdc, - 0x4d, 0x0f, 0x41, 0xf5, 0xe8, 0x24, 0x55, 0x8f, 0x1b, 0x79, 0x2d, 0x89, 0x03, 0xb4, 0x8d, 0x3f, - 0x1e, 0x37, 0xbf, 0x8f, 0x07, 0x70, 0x7c, 0xce, 0xf4, 0xe7, 0xb7, 0xf2, 0x88, 0xaa, 0x4b, 0x68, - 0x7b, 0x07, 0x3a, 0xf2, 0x33, 0x5d, 0xa7, 0x29, 0xf5, 0x18, 0x39, 0xec, 0xb5, 0xae, 0xa3, 0xf4, - 0x9b, 0x2c, 0x5d, 0x47, 0xd5, 0x21, 0x77, 0xe0, 0xb1, 0x6e, 0xe0, 0xf3, 0x3c, 0x03, 0x4b, 0xd4, - 0x69, 0xb6, 0x5d, 0x8f, 0x2a, 0x33, 0x8f, 0xf0, 0xba, 0x79, 0x62, 0x7f, 0x6f, 0xee, 0xb1, 0xb5, - 0x6c, 0x14, 0x1c, 0x54, 0x37, 0x19, 0xa9, 0x3a, 0x7a, 0x84, 0x48, 0xd5, 0x5f, 0xd2, 0xc6, 0x54, - 0x1d, 0x14, 0xf1, 0xa9, 0xbc, 0xba, 0x32, 0x2b, 0x3c, 0x42, 0x0f, 0xa9, 0xaa, 0x64, 0x8a, 0x9a, - 0xfd, 0x60, 0x8b, 0xdd, 0xd8, 0x09, 0x2d, 0x76, 0x71, 0x1c, 0xcc, 0xf8, 0x7b, 0x19, 0x07, 0x53, - 0x7a, 0x5f, 0xc5, 0xc1, 0x7c, 0xcb, 0x82, 0x73, 0x4e, 0x7f, 0x04, 0x7a, 0x3e, 0xc6, 0xe3, 0x8c, - 0xd0, 0xf6, 0xda, 0x13, 0x52, 0xc8, 0xac, 0x40, 0x7f, 0xcc, 0x12, 0xc5, 0x7e, 0xa7, 0x08, 0xd3, - 0x69, 0x25, 0xe9, 0xf4, 0x43, 0x75, 0x7f, 0xc5, 0x82, 0x69, 0x35, 0xc1, 0xf5, 0x0d, 0xb8, 0x38, - 0x62, 0xac, 0xe4, 0xb4, 0xae, 0x08, 0x75, 0x4f, 0x67, 0x50, 0x59, 0x4f, 0x71, 0xc3, 0x3e, 0xfe, - 0xe4, 0x0d, 0xa8, 0xe8, 0x5b, 0x95, 0x13, 0xc5, 0xed, 0xf2, 0xd0, 0xd2, 0x6a, 0x4c, 0x02, 0x4d, - 0x7a, 0xe4, 0x1d, 0x0b, 0xa0, 0xa1, 0x76, 0xe2, 0x9c, 0xa2, 0xa2, 0x32, 0xb4, 0x85, 0x58, 0x9f, - 0xd7, 0x45, 0x21, 0x1a, 0x8c, 0xc9, 0xaf, 0xf2, 0xfb, 0x14, 0x3d, 0x12, 0x94, 0xe7, 0xc1, 0x27, - 0xf2, 0x5e, 0x8a, 0x62, 0x5f, 0x12, 0xad, 0xed, 0x19, 0xa0, 0x10, 0x13, 0x42, 0xd8, 0x2f, 0x81, - 0xf6, 0xd9, 0x66, 0x2b, 0x2b, 0xf7, 0xda, 0x5e, 0x73, 0xa2, 0x2d, 0x39, 0x04, 0xf5, 0xca, 0x7a, - 0x5d, 0x01, 0x30, 0xc6, 0xb1, 0x3f, 0x03, 0x93, 0xaf, 0x04, 0x4e, 0x77, 0xcb, 0xe5, 0xf7, 0x16, - 0xec, 0x7c, 0xfc, 0x0c, 0x8c, 0x3b, 0xcd, 0x66, 0x56, 0xb2, 0x9f, 0xaa, 0x28, 0x46, 0x05, 0x3f, - 0xd2, 0x51, 0xd8, 0xfe, 0x77, 0x16, 0x90, 0xf8, 0xa6, 0xd9, 0xf5, 0x5a, 0xab, 0x4e, 0xd4, 0xd8, - 0x62, 0x47, 0xb8, 0x2d, 0x5e, 0x9a, 0x75, 0x84, 0xbb, 0xa1, 0x21, 0x68, 0x60, 0x91, 0xb7, 0xa0, - 0x22, 0xfe, 0xbd, 0xae, 0x0f, 0x88, 0xc3, 0xbb, 0x9e, 0xf3, 0x3d, 0x8f, 0xcb, 0x24, 0x46, 0xe1, - 0x8d, 0x98, 0x03, 0x9a, 0xec, 0x58, 0x53, 0x2d, 0x7b, 0x9b, 0xed, 0xde, 0x83, 0xe6, 0x46, 0xdc, - 0x54, 0xdd, 0xc0, 0xdf, 0x74, 0xdb, 0x34, 0xdd, 0x54, 0x6b, 0xa2, 0x18, 0x15, 0xfc, 0x68, 0x4d, - 0xf5, 0x6f, 0x2d, 0x38, 0xbf, 0x1c, 0x46, 0xae, 0xbf, 0x44, 0xc3, 0x88, 0xed, 0x7c, 0x6c, 0x7d, - 0xec, 0xb5, 0x8f, 0x12, 0x7e, 0xb1, 0x04, 0xd3, 0xf2, 0x1e, 0xba, 0xb7, 0x11, 0xd2, 0xc8, 0x38, - 0x6a, 0xe8, 0x79, 0xbc, 0x98, 0x82, 0x63, 0x5f, 0x0d, 0x46, 0x45, 0x5e, 0x48, 0xc7, 0x54, 0x0a, - 0x49, 0x2a, 0xf5, 0x14, 0x1c, 0xfb, 0x6a, 0xd8, 0x3f, 0x28, 0xc0, 0x39, 0xfe, 0x19, 0xa9, 0xd0, - 0xa9, 0xaf, 0x0f, 0x0a, 0x9d, 0x1a, 0x72, 0x2a, 0x73, 0x5e, 0x27, 0x08, 0x9c, 0xfa, 0x9b, 0x16, - 0x4c, 0x35, 0x93, 0x2d, 0x9d, 0x8f, 0x5d, 0x2e, 0xab, 0x0f, 0x85, 0x07, 0x62, 0xaa, 0x10, 0xd3, - 0xfc, 0xc9, 0xaf, 0x59, 0x30, 0x95, 0x14, 0x53, 0xad, 0xee, 0xa7, 0xd0, 0x48, 0x3a, 0x64, 0x20, - 0x59, 0x1e, 0x62, 0x5a, 0x04, 0xfb, 0xfb, 0x23, 0xb2, 0x4b, 0x4f, 0x23, 0x2e, 0x88, 0xdc, 0x87, - 0x72, 0xd4, 0x0e, 0x45, 0xa1, 0xfc, 0xda, 0x21, 0x0f, 0xad, 0xeb, 0x2b, 0x75, 0xe1, 0x70, 0x12, - 0xeb, 0x95, 0xb2, 0x84, 0xe9, 0xc7, 0x8a, 0x17, 0x67, 0xdc, 0xe8, 0x4a, 0xc6, 0xb9, 0x9c, 0x96, - 0xd7, 0x17, 0xd7, 0xd2, 0x8c, 0x65, 0x09, 0x63, 0xac, 0x78, 0xd9, 0xbf, 0x65, 0x41, 0xf9, 0xa6, - 0xaf, 0xd6, 0x91, 0x9f, 0xcb, 0xc1, 0x16, 0xa5, 0x55, 0x56, 0xad, 0xb4, 0xc4, 0xa7, 0xa0, 0x97, - 0x13, 0x96, 0xa8, 0x27, 0x0d, 0xda, 0xf3, 0x3c, 0xe7, 0x21, 0x23, 0x75, 0xd3, 0xdf, 0x18, 0x68, - 0x3e, 0xfe, 0xf5, 0x22, 0x9c, 0x79, 0xd5, 0xd9, 0xa5, 0x5e, 0xe4, 0x1c, 0x7f, 0x93, 0x78, 0x01, - 0x2a, 0x4e, 0x97, 0xdf, 0x65, 0x1a, 0xc7, 0x90, 0xd8, 0xb8, 0x13, 0x83, 0xd0, 0xc4, 0x8b, 0x17, - 0x34, 0x11, 0xa4, 0x93, 0xb5, 0x14, 0x2d, 0xa6, 0xe0, 0xd8, 0x57, 0x83, 0xdc, 0x04, 0x22, 0x03, - 0xdb, 0xab, 0x8d, 0x86, 0xdf, 0xf3, 0xc4, 0x92, 0x26, 0xec, 0x3e, 0xfa, 0x3c, 0xbc, 0xda, 0x87, - 0x81, 0x19, 0xb5, 0xc8, 0xa7, 0x61, 0xa6, 0xc1, 0x29, 0xcb, 0xd3, 0x91, 0x49, 0x51, 0x9c, 0x90, - 0x75, 0xd8, 0xcb, 0xe2, 0x00, 0x3c, 0x1c, 0x48, 0x81, 0x49, 0x1a, 0x46, 0x7e, 0xe0, 0xb4, 0xa8, - 0x49, 0x77, 0x2c, 0x29, 0x69, 0xbd, 0x0f, 0x03, 0x33, 0x6a, 0x91, 0xcf, 0x43, 0x39, 0xda, 0x0a, - 0x68, 0xb8, 0xe5, 0xb7, 0x9b, 0xd2, 0xf7, 0x64, 0x48, 0x63, 0xa0, 0xec, 0xfd, 0x75, 0x45, 0xd5, - 0x18, 0xde, 0xaa, 0x08, 0x63, 0x9e, 0x24, 0x80, 0xb1, 0xb0, 0xe1, 0x77, 0x69, 0x28, 0x4f, 0x15, - 0x37, 0x73, 0xe1, 0xce, 0x8d, 0x5b, 0x86, 0x19, 0x92, 0x73, 0x40, 0xc9, 0xc9, 0xfe, 0xdd, 0x11, - 0x98, 0x30, 0x11, 0x8f, 0xb0, 0x36, 0x7d, 0xc9, 0x82, 0x89, 0x86, 0xef, 0x45, 0x81, 0xdf, 0x8e, - 0x13, 0x36, 0x0c, 0xaf, 0x51, 0x30, 0x52, 0x4b, 0x34, 0x72, 0xdc, 0xb6, 0x61, 0xad, 0x33, 0xd8, - 0x60, 0x82, 0x29, 0xf9, 0x9a, 0x05, 0x53, 0xb1, 0x63, 0x64, 0x6c, 0xeb, 0xcb, 0x55, 0x10, 0xbd, - 0xd4, 0x5f, 0x4b, 0x72, 0xc2, 0x34, 0x6b, 0x7b, 0x03, 0xa6, 0xd3, 0xbd, 0xcd, 0x9a, 0xb2, 0xeb, - 0xc8, 0xb9, 0x5e, 0x88, 0x9b, 0x72, 0xcd, 0x09, 0x43, 0xe4, 0x10, 0xf2, 0x2c, 0x94, 0x3a, 0x4e, - 0xd0, 0x72, 0x3d, 0xa7, 0xcd, 0x5b, 0xb1, 0x60, 0x2c, 0x48, 0xb2, 0x1c, 0x35, 0x86, 0xfd, 0x61, - 0x98, 0x58, 0x75, 0xbc, 0x16, 0x6d, 0xca, 0x75, 0xf8, 0xf0, 0xc8, 0xd4, 0x3f, 0x1a, 0x85, 0x8a, - 0x71, 0x7c, 0x3c, 0xfd, 0x73, 0x56, 0x22, 0x11, 0x51, 0x21, 0xc7, 0x44, 0x44, 0x9f, 0x04, 0xd8, - 0x74, 0x3d, 0x37, 0xdc, 0x3a, 0x61, 0x8a, 0x23, 0x7e, 0x37, 0x7f, 0x5d, 0x53, 0x40, 0x83, 0x5a, - 0x7c, 0x01, 0x5a, 0x3c, 0x20, 0x5b, 0xe0, 0x3b, 0x96, 0xb1, 0xdd, 0x8c, 0xe5, 0xe1, 0xf0, 0x61, - 0x74, 0xcc, 0xbc, 0xda, 0x7e, 0xc4, 0xdd, 0xd4, 0x41, 0xbb, 0xd2, 0x3a, 0x94, 0x02, 0x1a, 0xf6, - 0x3a, 0xf4, 0x44, 0xc9, 0x88, 0xb8, 0xeb, 0x0d, 0xca, 0xfa, 0xa8, 0x29, 0xcd, 0xbe, 0x04, 0x67, - 0x12, 0x22, 0x1c, 0xeb, 0x86, 0xc9, 0x87, 0x4c, 0x1b, 0xc5, 0x49, 0xee, 0x9b, 0x58, 0x5f, 0xb4, - 0x8d, 0x24, 0x44, 0xba, 0x2f, 0x84, 0x83, 0x95, 0x80, 0xd9, 0x3f, 0x19, 0x03, 0xe9, 0xc3, 0x70, - 0x84, 0xe5, 0xca, 0xbc, 0xb9, 0x1c, 0x39, 0xc1, 0xcd, 0xe5, 0x4d, 0x98, 0x70, 0x3d, 0x37, 0x72, - 0x9d, 0x36, 0xb7, 0x3f, 0xc9, 0xed, 0x54, 0x39, 0xe3, 0x4f, 0x2c, 0x1b, 0xb0, 0x0c, 0x3a, 0x89, - 0xba, 0xe4, 0x35, 0x28, 0xf2, 0xfd, 0x46, 0x0e, 0xe0, 0xe3, 0x3b, 0x5a, 0x70, 0x1f, 0x1b, 0x11, - 0xa1, 0x27, 0x28, 0xf1, 0xc3, 0x87, 0xc8, 0xc2, 0xa4, 0x8f, 0xdf, 0x72, 0x1c, 0xc7, 0x87, 0x8f, - 0x14, 0x1c, 0xfb, 0x6a, 0x30, 0x2a, 0x9b, 0x8e, 0xdb, 0xee, 0x05, 0x34, 0xa6, 0x32, 0x96, 0xa4, - 0x72, 0x3d, 0x05, 0xc7, 0xbe, 0x1a, 0x64, 0x13, 0x26, 0x64, 0x99, 0x70, 0x9b, 0x1b, 0x3f, 0xe1, - 0x57, 0x72, 0xf7, 0xc8, 0xeb, 0x06, 0x25, 0x4c, 0xd0, 0x25, 0x3d, 0x38, 0xeb, 0x7a, 0x0d, 0xdf, - 0x6b, 0xb4, 0x7b, 0xa1, 0xbb, 0x43, 0xe3, 0xf0, 0xb8, 0x93, 0x30, 0xbb, 0xb0, 0xbf, 0x37, 0x77, - 0x76, 0x39, 0x4d, 0x0e, 0xfb, 0x39, 0x90, 0x2f, 0x58, 0x70, 0xa1, 0xe1, 0x7b, 0x21, 0xcf, 0xe2, - 0xb1, 0x43, 0xaf, 0x05, 0x81, 0x1f, 0x08, 0xde, 0xe5, 0x13, 0xf2, 0xe6, 0x66, 0xcf, 0xc5, 0x2c, - 0x92, 0x98, 0xcd, 0x89, 0xbc, 0x09, 0xa5, 0x6e, 0xe0, 0xef, 0xb8, 0x4d, 0x1a, 0x48, 0x17, 0xcc, - 0x95, 0x3c, 0x52, 0x1b, 0xad, 0x49, 0x9a, 0xf1, 0xd2, 0xa3, 0x4a, 0x50, 0xf3, 0xb3, 0xff, 0x6f, - 0x05, 0x26, 0x93, 0xe8, 0xe4, 0x17, 0x00, 0xba, 0x81, 0xdf, 0xa1, 0xd1, 0x16, 0xd5, 0x61, 0x4e, - 0xb7, 0x86, 0x4d, 0x5e, 0xa3, 0xe8, 0x29, 0xb7, 0x25, 0xb6, 0x5c, 0xc4, 0xa5, 0x68, 0x70, 0x24, - 0x01, 0x8c, 0x6f, 0x8b, 0x6d, 0x57, 0x6a, 0x21, 0xaf, 0xe6, 0xa2, 0x33, 0x49, 0xce, 0x3c, 0x3e, - 0x47, 0x16, 0xa1, 0x62, 0x44, 0x36, 0xa0, 0x70, 0x9f, 0x6e, 0xe4, 0x93, 0x39, 0xe1, 0x2e, 0x95, - 0xa7, 0x99, 0xda, 0xf8, 0xfe, 0xde, 0x5c, 0xe1, 0x2e, 0xdd, 0x40, 0x46, 0x9c, 0x7d, 0x57, 0x53, - 0xf8, 0x2e, 0xc8, 0xa5, 0xe2, 0xd5, 0x1c, 0x1d, 0x21, 0xc4, 0x77, 0xc9, 0x22, 0x54, 0x8c, 0xc8, - 0x9b, 0x50, 0xbe, 0xef, 0xec, 0xd0, 0xcd, 0xc0, 0xf7, 0x22, 0xe9, 0x2b, 0x37, 0x64, 0x70, 0xc9, - 0x5d, 0x45, 0x4e, 0xf2, 0xe5, 0xdb, 0xbb, 0x2e, 0xc4, 0x98, 0x1d, 0xd9, 0x81, 0x92, 0x47, 0xef, - 0x23, 0x6d, 0xbb, 0x8d, 0x7c, 0x82, 0x39, 0x6e, 0x49, 0x6a, 0x92, 0x33, 0xdf, 0xf7, 0x54, 0x19, - 0x6a, 0x5e, 0xac, 0x2f, 0xef, 0xf9, 0x1b, 0x72, 0xa1, 0x1a, 0xb2, 0x2f, 0xf5, 0xc9, 0x54, 0xf4, - 0xe5, 0x4d, 0x7f, 0x03, 0x19, 0x71, 0x36, 0x47, 0x1a, 0xda, 0x51, 0x4b, 0x2e, 0x53, 0xb7, 0xf2, - 0x75, 0x50, 0x13, 0x73, 0x24, 0x2e, 0x45, 0x83, 0x23, 0x6b, 0xdb, 0x96, 0x34, 0x56, 0xca, 0x85, - 0x6a, 0xc8, 0xb6, 0x4d, 0x9a, 0x3e, 0x45, 0xdb, 0xaa, 0x32, 0xd4, 0xbc, 0x18, 0x5f, 0x57, 0x5a, - 0xfe, 0xf2, 0x59, 0xaa, 0x92, 0x76, 0x44, 0xc1, 0x57, 0x95, 0xa1, 0xe6, 0xc5, 0xda, 0x3b, 0xdc, - 0xde, 0xbd, 0xef, 0xb4, 0xb7, 0x5d, 0xaf, 0x25, 0xc3, 0x76, 0x87, 0x0d, 0x73, 0xdb, 0xde, 0xbd, - 0x2b, 0xe8, 0x99, 0xed, 0x1d, 0x97, 0xa2, 0xc1, 0x91, 0xfc, 0x3d, 0x4b, 0x87, 0xe2, 0x4c, 0xe4, - 0xe1, 0xc4, 0x94, 0x5c, 0x72, 0x65, 0x64, 0x8e, 0x50, 0x14, 0x7f, 0x5a, 0xfb, 0x5d, 0xf2, 0xc2, - 0xaf, 0xfe, 0xe1, 0xdc, 0x0c, 0xf5, 0x1a, 0x7e, 0xd3, 0xf5, 0x5a, 0x0b, 0xf7, 0x42, 0xdf, 0x9b, - 0x47, 0xe7, 0xbe, 0xd2, 0xd1, 0xa5, 0x4c, 0xb3, 0x1f, 0x85, 0x8a, 0x41, 0xe2, 0x30, 0x45, 0x6f, - 0xc2, 0x54, 0xf4, 0x7e, 0x6b, 0x0c, 0x26, 0xcc, 0x3c, 0xa4, 0x47, 0xd0, 0xbe, 0xf4, 0x89, 0x63, - 0xe4, 0x38, 0x27, 0x0e, 0x76, 0xc4, 0x34, 0x2e, 0xb8, 0x94, 0x79, 0x6b, 0x39, 0x37, 0x85, 0x3b, - 0x3e, 0x62, 0x1a, 0x85, 0x21, 0x26, 0x98, 0x1e, 0xc3, 0xe7, 0x85, 0xa9, 0xad, 0x42, 0xb1, 0x2b, - 0x26, 0xd5, 0xd6, 0x84, 0xaa, 0x76, 0x15, 0x20, 0x4e, 0x98, 0x29, 0x2f, 0x3e, 0xb5, 0x3e, 0x6c, - 0x24, 0xf2, 0x34, 0xb0, 0xc8, 0xd3, 0x30, 0xc6, 0x54, 0x1f, 0xda, 0x94, 0x59, 0x05, 0xf4, 0x39, - 0xfe, 0x3a, 0x2f, 0x45, 0x09, 0x25, 0x2f, 0x32, 0x2d, 0x35, 0x56, 0x58, 0x64, 0xb2, 0x80, 0xf3, - 0xb1, 0x96, 0x1a, 0xc3, 0x30, 0x81, 0xc9, 0x44, 0xa7, 0x4c, 0xbf, 0xe0, 0x6b, 0x83, 0x21, 0x3a, - 0x57, 0x3a, 0x50, 0xc0, 0xb8, 0x5d, 0x29, 0xa5, 0x8f, 0xf0, 0x39, 0x5d, 0x34, 0xec, 0x4a, 0x29, - 0x38, 0xf6, 0xd5, 0x60, 0x1f, 0x23, 0xef, 0x6c, 0x2b, 0xc2, 0x61, 0x7a, 0xc0, 0x6d, 0xeb, 0x2f, - 0x9a, 0x67, 0xad, 0x1c, 0xe7, 0x90, 0x18, 0xb5, 0x47, 0x3f, 0x6c, 0x0d, 0x77, 0x2c, 0xfa, 0xb2, - 0x05, 0x93, 0xc9, 0x6d, 0x28, 0xef, 0xab, 0x0f, 0xf2, 0x97, 0x60, 0x3c, 0x72, 0x3b, 0xd4, 0xef, - 0x89, 0xc3, 0x76, 0x41, 0xec, 0xec, 0xeb, 0xa2, 0x08, 0x15, 0xcc, 0xfe, 0x87, 0x63, 0x70, 0xee, - 0x56, 0xcb, 0xf5, 0xd2, 0xb9, 0xe1, 0xb2, 0x1e, 0x82, 0xb0, 0x8e, 0xfd, 0x10, 0x84, 0x8e, 0xdd, - 0x93, 0xcf, 0x2c, 0x64, 0xc7, 0xee, 0xa9, 0x37, 0x2f, 0x92, 0xb8, 0xe4, 0x0f, 0x2c, 0x78, 0xd2, - 0x69, 0x8a, 0xf3, 0x83, 0xd3, 0x96, 0xa5, 0x46, 0xfe, 0x72, 0x39, 0xf3, 0xc3, 0x21, 0xb5, 0x81, - 0xfe, 0x8f, 0x9f, 0xaf, 0x1e, 0xc0, 0x55, 0x8c, 0x8c, 0x9f, 0x92, 0x5f, 0xf0, 0xe4, 0x41, 0xa8, - 0x78, 0xa0, 0xf8, 0xe4, 0xaf, 0xc2, 0x54, 0xe2, 0x83, 0xa5, 0xc5, 0xbc, 0x2c, 0x2e, 0x36, 0xea, - 0x49, 0x10, 0xa6, 0x71, 0xc9, 0xf7, 0x2d, 0x98, 0x11, 0xe6, 0xd9, 0x8c, 0xa6, 0x11, 0x37, 0xba, - 0x7e, 0xfe, 0x4d, 0xb3, 0x38, 0x80, 0xa3, 0x68, 0x96, 0xd8, 0x5e, 0x3b, 0x00, 0x0d, 0x07, 0x8a, - 0x3c, 0x7b, 0x1b, 0x3e, 0x70, 0x68, 0xbb, 0x1f, 0x2b, 0xdb, 0xfd, 0xab, 0x70, 0xf1, 0x40, 0x69, - 0x8f, 0x35, 0x63, 0xbf, 0x6b, 0xc1, 0x84, 0x99, 0xe3, 0x8a, 0x3c, 0x0b, 0xa5, 0xc8, 0xdf, 0xa6, - 0xde, 0x9d, 0x40, 0x79, 0x3d, 0xeb, 0xd5, 0x62, 0x9d, 0x97, 0xe3, 0x0a, 0x6a, 0x0c, 0x86, 0xdd, - 0x68, 0xbb, 0xd4, 0x8b, 0x96, 0x9b, 0x72, 0x0e, 0x68, 0xec, 0x45, 0x51, 0xbe, 0x84, 0x1a, 0x43, - 0x38, 0x2a, 0xb2, 0xdf, 0x75, 0xda, 0x08, 0xa8, 0x8a, 0x91, 0x30, 0x1c, 0x15, 0x63, 0x18, 0x26, - 0x30, 0x89, 0xad, 0xed, 0xc4, 0xa3, 0xf1, 0xe5, 0x50, 0xca, 0xae, 0xfb, 0x6d, 0x0b, 0xca, 0xe2, - 0x9e, 0x03, 0xe9, 0x66, 0xca, 0x4f, 0x39, 0x65, 0x89, 0xa9, 0xae, 0x2d, 0x67, 0xf9, 0x29, 0x5f, - 0x86, 0xd1, 0x6d, 0xd7, 0x53, 0x5f, 0xa2, 0xf7, 0xf6, 0x57, 0x5d, 0xaf, 0x89, 0x1c, 0xa2, 0x77, - 0xff, 0xc2, 0xc0, 0xdd, 0x7f, 0x01, 0xca, 0xda, 0x7b, 0x47, 0xee, 0xa1, 0xda, 0x04, 0xae, 0xbd, - 0x7d, 0x30, 0xc6, 0xb1, 0x7f, 0xc3, 0x82, 0x49, 0x1e, 0x76, 0x1f, 0x1b, 0x15, 0x5e, 0xd0, 0x0e, - 0x75, 0x42, 0xee, 0x8b, 0x49, 0x87, 0xba, 0x77, 0xf7, 0xe6, 0x2a, 0x22, 0x50, 0x3f, 0xe9, 0x5f, - 0xf7, 0x29, 0x69, 0x89, 0xe4, 0x6e, 0x7f, 0x23, 0xc7, 0x36, 0x94, 0xc5, 0x62, 0x2a, 0x22, 0x18, - 0xd3, 0xb3, 0xdf, 0x82, 0x09, 0x33, 0xa2, 0x8d, 0xbc, 0x00, 0x95, 0xae, 0xeb, 0xb5, 0x92, 0x91, - 0xcf, 0xfa, 0xb6, 0x66, 0x2d, 0x06, 0xa1, 0x89, 0xc7, 0xab, 0xf9, 0x71, 0xb5, 0xd4, 0x25, 0xcf, - 0x9a, 0x6f, 0x56, 0x8b, 0xff, 0xd8, 0x1e, 0x40, 0x1c, 0x9e, 0x7d, 0x24, 0x0b, 0xd8, 0x98, 0xb8, - 0x40, 0x11, 0x1a, 0x1d, 0x4f, 0xb5, 0x31, 0x26, 0x46, 0xf8, 0xbb, 0x7b, 0x07, 0x69, 0x8c, 0xa2, - 0x16, 0x7f, 0xc8, 0x23, 0x23, 0x52, 0x33, 0xf7, 0x87, 0x3c, 0x32, 0x78, 0xbc, 0x77, 0x0f, 0x79, - 0x64, 0x09, 0xf3, 0x67, 0xeb, 0x21, 0x8f, 0x4f, 0xc0, 0x71, 0x73, 0xfa, 0x32, 0x05, 0xed, 0xbe, - 0x99, 0x7b, 0x43, 0xb7, 0xb8, 0x4c, 0xbe, 0x21, 0xa1, 0xf6, 0xf7, 0x46, 0x61, 0x3a, 0x6d, 0xa7, - 0xc9, 0xdb, 0x05, 0x86, 0x7c, 0xcd, 0x82, 0x49, 0x27, 0x91, 0x3f, 0x31, 0xa7, 0x57, 0xc1, 0x12, - 0x34, 0x8d, 0xfc, 0x7d, 0x89, 0x72, 0x4c, 0xf1, 0x36, 0x75, 0xad, 0xd1, 0xc1, 0xba, 0x16, 0xdb, - 0x04, 0x5c, 0xae, 0xf6, 0x06, 0x54, 0xba, 0x73, 0x4f, 0xc7, 0xe6, 0x66, 0x51, 0x8e, 0x1a, 0x83, - 0x3c, 0x80, 0x71, 0xe1, 0x2c, 0xa3, 0xbc, 0xa2, 0x56, 0x73, 0xb2, 0x27, 0x09, 0x7f, 0x9c, 0xb8, - 0x0b, 0xc4, 0xff, 0x10, 0x15, 0x3b, 0xa6, 0x63, 0x43, 0xe0, 0x78, 0x2d, 0xca, 0xdb, 0x5c, 0x5a, - 0x40, 0x5e, 0xcf, 0xcb, 0x74, 0x87, 0x9a, 0x72, 0x35, 0x68, 0x85, 0x32, 0x32, 0x52, 0x97, 0xa1, - 0xc1, 0xd9, 0xfe, 0x15, 0x0b, 0x66, 0x06, 0x55, 0x64, 0x03, 0x85, 0xaf, 0xba, 0x72, 0x44, 0x19, - 0x09, 0x19, 0x9c, 0x20, 0x42, 0x01, 0x23, 0x17, 0xa1, 0x40, 0xf5, 0x46, 0xa5, 0xb3, 0x47, 0x5e, - 0xf3, 0x9a, 0xc8, 0xca, 0xc9, 0x55, 0x18, 0x0d, 0x23, 0xda, 0x4d, 0xc5, 0x3b, 0x8c, 0xb2, 0xc5, - 0x33, 0xc3, 0x60, 0xcf, 0x71, 0xed, 0x0f, 0xc3, 0x31, 0x53, 0x40, 0xdb, 0xd7, 0x80, 0xa0, 0xdf, - 0x6e, 0x6f, 0x38, 0x8d, 0xed, 0xbb, 0xae, 0xd7, 0xf4, 0xef, 0xf3, 0x8d, 0x61, 0x01, 0xca, 0x81, - 0x8c, 0x02, 0x0f, 0xe5, 0x9c, 0xd2, 0x3b, 0x8b, 0x0a, 0x0f, 0x0f, 0x31, 0xc6, 0xb1, 0xbf, 0x3f, - 0x02, 0xe3, 0x32, 0x65, 0xc1, 0x43, 0x08, 0xb6, 0xd9, 0x4e, 0xb8, 0x38, 0x2c, 0xe7, 0x92, 0x69, - 0x61, 0x60, 0xa4, 0x4d, 0x98, 0x8a, 0xb4, 0x79, 0x35, 0x1f, 0x76, 0x07, 0x87, 0xd9, 0x7c, 0xa7, - 0x08, 0x53, 0xa9, 0x14, 0x10, 0xa9, 0x6c, 0xf1, 0xd6, 0x7b, 0x92, 0x2d, 0x9e, 0x84, 0x89, 0x17, - 0x03, 0xf2, 0x73, 0xcd, 0xfd, 0x8b, 0xc7, 0x03, 0xf2, 0x72, 0x9a, 0x2e, 0xbe, 0x7f, 0x9c, 0xa6, - 0xff, 0x9b, 0x05, 0x8f, 0x0f, 0x4c, 0x64, 0xc2, 0x53, 0x02, 0x06, 0x49, 0xa8, 0x5c, 0x2f, 0x72, - 0x4e, 0x0e, 0xa5, 0xdd, 0x21, 0xd2, 0x59, 0xdc, 0xd2, 0xec, 0xc9, 0xf3, 0x30, 0xc1, 0xd7, 0x66, - 0xb6, 0x72, 0xb2, 0xb5, 0x57, 0xdc, 0xe6, 0xf2, 0x7b, 0xbd, 0xba, 0x51, 0x8e, 0x09, 0x2c, 0xfb, - 0x5b, 0x16, 0xcc, 0x0c, 0x4a, 0x10, 0x77, 0x04, 0x3d, 0xf7, 0xaf, 0xa4, 0x82, 0x95, 0xe6, 0xfa, - 0x82, 0x95, 0x52, 0xd6, 0x46, 0x15, 0x97, 0x64, 0x18, 0xfa, 0x0a, 0x87, 0xc4, 0xe2, 0xfc, 0x5e, - 0x01, 0xa6, 0xa5, 0x88, 0xf1, 0x11, 0xe5, 0xc5, 0x44, 0x88, 0xd5, 0x4f, 0xa5, 0x42, 0xac, 0xce, - 0xa7, 0xf1, 0xff, 0x22, 0xbe, 0xea, 0xfd, 0x15, 0x5f, 0xf5, 0xd5, 0x22, 0x5c, 0xc8, 0x4c, 0xc5, - 0x46, 0xbe, 0x92, 0xb1, 0x53, 0xdc, 0xcd, 0x39, 0xe7, 0x9b, 0x0e, 0xc5, 0x3e, 0xdd, 0xa0, 0xa4, - 0x5f, 0x33, 0x83, 0x81, 0xc4, 0xea, 0xbf, 0x79, 0x0a, 0xd9, 0xeb, 0x8e, 0x1b, 0x17, 0xf4, 0x70, - 0x5f, 0xd3, 0xfb, 0x33, 0xb0, 0xd4, 0x7f, 0xb5, 0x00, 0x57, 0x8e, 0xda, 0xb2, 0xef, 0xd3, 0x40, - 0xda, 0x30, 0x11, 0x48, 0xfb, 0x90, 0x54, 0x9b, 0x53, 0x89, 0xa9, 0xfd, 0x07, 0xa3, 0x7a, 0xdf, - 0xed, 0x9f, 0xb0, 0x47, 0xb2, 0xbc, 0x8c, 0x33, 0xd5, 0x57, 0xbd, 0x39, 0x10, 0xef, 0x0d, 0xe3, - 0x75, 0x51, 0xfc, 0xee, 0xde, 0xdc, 0xd9, 0x38, 0x67, 0x91, 0x2c, 0x44, 0x55, 0x89, 0x5c, 0x81, - 0x52, 0x20, 0xa0, 0x2a, 0x74, 0x50, 0x3a, 0x70, 0x89, 0x32, 0xd4, 0x50, 0xf2, 0x79, 0xe3, 0xac, - 0x30, 0x7a, 0x5a, 0xa9, 0xb9, 0x0e, 0xf2, 0x4b, 0x7b, 0x03, 0x4a, 0xa1, 0x4a, 0x8c, 0x2f, 0xa6, - 0xd3, 0x73, 0x47, 0x8c, 0x48, 0x75, 0x36, 0x68, 0x5b, 0x65, 0xc9, 0x17, 0xdf, 0xa7, 0x73, 0xe8, - 0x6b, 0x92, 0xc4, 0xd6, 0x96, 0x09, 0x71, 0x6f, 0x06, 0xfd, 0x56, 0x09, 0x12, 0xc1, 0xb8, 0x7c, - 0x1d, 0x5b, 0x1e, 0x67, 0x57, 0x73, 0x0a, 0xed, 0x92, 0x8e, 0xff, 0xfc, 0xc0, 0xaf, 0x2c, 0x72, - 0x8a, 0x95, 0xfd, 0x43, 0x0b, 0x2a, 0x72, 0x8c, 0x3c, 0x84, 0xd0, 0xdc, 0x7b, 0xc9, 0xd0, 0xdc, - 0x6b, 0xb9, 0x2c, 0xe1, 0x03, 0xe2, 0x72, 0xef, 0xc1, 0x84, 0x99, 0x14, 0x95, 0x7c, 0xd2, 0xd8, - 0x82, 0xac, 0x61, 0x12, 0xff, 0xa9, 0x4d, 0x2a, 0xde, 0x9e, 0xec, 0x7f, 0x5a, 0xd6, 0xad, 0xc8, - 0x0f, 0xce, 0xe6, 0xc8, 0xb7, 0x0e, 0x1c, 0xf9, 0xe6, 0xc0, 0x1b, 0xc9, 0x7f, 0xe0, 0xbd, 0x06, - 0x25, 0xb5, 0x2c, 0x4a, 0x6d, 0xea, 0x29, 0x33, 0x12, 0x80, 0xa9, 0x64, 0x8c, 0x98, 0x31, 0x5d, - 0xf8, 0x01, 0x38, 0xbe, 0x27, 0x50, 0xcb, 0xb5, 0x26, 0x43, 0xde, 0x84, 0xca, 0x7d, 0x3f, 0xd8, - 0x6e, 0xfb, 0x0e, 0x7f, 0x8d, 0x04, 0xf2, 0x70, 0x3e, 0xd1, 0xb6, 0x7e, 0x11, 0x8e, 0x75, 0x37, - 0xa6, 0x8f, 0x26, 0x33, 0x52, 0x85, 0xa9, 0x8e, 0xeb, 0x21, 0x75, 0x9a, 0x3a, 0x02, 0x77, 0x54, - 0xbc, 0x04, 0xa0, 0x74, 0xfb, 0xd5, 0x24, 0x18, 0xd3, 0xf8, 0xdc, 0x2e, 0x17, 0x24, 0x4c, 0x1d, - 0x32, 0xdd, 0xf7, 0xda, 0xf0, 0x83, 0x31, 0x69, 0x3e, 0x11, 0xf1, 0x48, 0xc9, 0x72, 0x4c, 0xf1, - 0x26, 0x9f, 0x83, 0x52, 0xa8, 0xde, 0x9d, 0x2d, 0xe6, 0x78, 0xea, 0xd1, 0x6f, 0xcf, 0xea, 0xae, - 0xd4, 0x8f, 0xcf, 0x6a, 0x86, 0x64, 0x05, 0xce, 0x2b, 0xdb, 0x4d, 0xe2, 0x09, 0xcd, 0xb1, 0x38, - 0x65, 0x1d, 0x66, 0xc0, 0x31, 0xb3, 0x16, 0xd3, 0x6d, 0x79, 0xb2, 0x61, 0x71, 0xd9, 0x6f, 0xdc, - 0x8f, 0xf3, 0xf9, 0xd7, 0x44, 0x09, 0x3d, 0x28, 0xc0, 0xbc, 0x34, 0x44, 0x80, 0x79, 0x1d, 0x2e, - 0xa4, 0x41, 0x3c, 0x17, 0x21, 0x4f, 0x7f, 0x68, 0x6c, 0xa1, 0x6b, 0x59, 0x48, 0x98, 0x5d, 0x97, - 0xdc, 0x85, 0x72, 0x40, 0xf9, 0x29, 0xaf, 0xaa, 0xfc, 0x24, 0x8f, 0xed, 0x11, 0x8e, 0x8a, 0x00, - 0xc6, 0xb4, 0x58, 0xbf, 0x3b, 0xc9, 0xdc, 0xfc, 0xaf, 0xe5, 0xf8, 0x30, 0xbd, 0xec, 0xfb, 0x01, - 0x39, 0x42, 0xed, 0x7f, 0x3f, 0x05, 0x67, 0x12, 0x06, 0x28, 0xf2, 0x14, 0x14, 0x79, 0x72, 0x46, - 0xbe, 0x5a, 0x95, 0xe2, 0x15, 0x55, 0x34, 0x8e, 0x80, 0x91, 0x5f, 0xb6, 0x60, 0xaa, 0x9b, 0xb8, - 0xde, 0x52, 0x0b, 0xf9, 0x90, 0x36, 0xed, 0xe4, 0x9d, 0x99, 0xf1, 0xaa, 0x4d, 0x92, 0x19, 0xa6, - 0xb9, 0xb3, 0xf5, 0x40, 0x86, 0x55, 0xb4, 0x69, 0xc0, 0xb1, 0xa5, 0xa2, 0xa7, 0x49, 0x2c, 0x26, - 0xc1, 0x98, 0xc6, 0x67, 0x3d, 0xcc, 0xbf, 0x6e, 0x98, 0xc7, 0x87, 0xab, 0x8a, 0x00, 0xc6, 0xb4, - 0xc8, 0xcb, 0x30, 0x29, 0x53, 0xb2, 0xaf, 0xf9, 0xcd, 0x1b, 0x4e, 0xb8, 0x25, 0x8f, 0x7c, 0xfa, - 0x88, 0xba, 0x98, 0x80, 0x62, 0x0a, 0x9b, 0x7f, 0x5b, 0x9c, 0xf7, 0x9e, 0x13, 0x18, 0x4b, 0x3e, - 0xfa, 0xb3, 0x98, 0x04, 0x63, 0x1a, 0x9f, 0x3c, 0x6b, 0x6c, 0x43, 0xc2, 0x01, 0x47, 0xaf, 0x06, - 0x19, 0x5b, 0x51, 0x15, 0xa6, 0x7a, 0xfc, 0x84, 0xdc, 0x54, 0x40, 0x39, 0x1f, 0x35, 0xc3, 0x3b, - 0x49, 0x30, 0xa6, 0xf1, 0xc9, 0x4b, 0x70, 0x26, 0x60, 0x8b, 0xad, 0x26, 0x20, 0xbc, 0x72, 0xb4, - 0x33, 0x05, 0x9a, 0x40, 0x4c, 0xe2, 0x92, 0x57, 0xe0, 0x6c, 0x9c, 0xb6, 0x57, 0x11, 0x10, 0x6e, - 0x3a, 0x3a, 0x87, 0x64, 0x35, 0x8d, 0x80, 0xfd, 0x75, 0xc8, 0x5f, 0x87, 0x69, 0xa3, 0x25, 0x96, - 0xbd, 0x26, 0x7d, 0x20, 0x53, 0xab, 0xf2, 0x47, 0xec, 0x16, 0x53, 0x30, 0xec, 0xc3, 0x26, 0x1f, - 0x83, 0xc9, 0x86, 0xdf, 0x6e, 0xf3, 0x35, 0x4e, 0x3c, 0x38, 0x23, 0x72, 0xa8, 0x8a, 0x6c, 0xb3, - 0x09, 0x08, 0xa6, 0x30, 0xc9, 0x4d, 0x20, 0xfe, 0x06, 0x53, 0xaf, 0x68, 0xf3, 0x15, 0xea, 0x51, - 0xa9, 0x71, 0x9c, 0x49, 0x06, 0x75, 0xdd, 0xee, 0xc3, 0xc0, 0x8c, 0x5a, 0x3c, 0x05, 0xa5, 0x11, - 0x04, 0x3f, 0x99, 0x47, 0xd2, 0xfb, 0xb4, 0x3d, 0xe7, 0xd0, 0x08, 0xf8, 0x00, 0xc6, 0x84, 0x47, - 0x44, 0x3e, 0xc9, 0x54, 0xcd, 0xb7, 0x27, 0xe2, 0x3d, 0x42, 0x94, 0xa2, 0xe4, 0x44, 0x7e, 0x01, - 0xca, 0x1b, 0xea, 0x21, 0x22, 0x9e, 0x41, 0x75, 0xe8, 0x7d, 0x31, 0xf5, 0xa6, 0x56, 0x6c, 0xaf, - 0xd0, 0x00, 0x8c, 0x59, 0x92, 0xa7, 0xa1, 0x72, 0x63, 0xad, 0xaa, 0x47, 0xe1, 0x59, 0xde, 0xfb, - 0xa3, 0xac, 0x0a, 0x9a, 0x00, 0x36, 0xc3, 0xb4, 0xfa, 0x46, 0x92, 0x4e, 0x13, 0x19, 0xda, 0x18, - 0xc3, 0xe6, 0x2e, 0x32, 0x58, 0x9f, 0x39, 0x97, 0xc2, 0x96, 0xe5, 0xa8, 0x31, 0xc8, 0x1b, 0x50, - 0x91, 0xfb, 0x05, 0x5f, 0x9b, 0xce, 0x9f, 0x2c, 0xc1, 0x02, 0xc6, 0x24, 0xd0, 0xa4, 0xc7, 0xaf, - 0xef, 0xf9, 0xfb, 0x2c, 0xf4, 0x7a, 0xaf, 0xdd, 0x9e, 0xb9, 0xc0, 0xd7, 0xcd, 0xf8, 0xfa, 0x3e, - 0x06, 0xa1, 0x89, 0x47, 0x9e, 0x53, 0x2e, 0x91, 0x8f, 0x26, 0xfc, 0x19, 0xb4, 0x4b, 0xa4, 0x56, - 0xba, 0x07, 0xc4, 0x60, 0x3d, 0x76, 0x88, 0x2f, 0xe2, 0x06, 0xcc, 0x2a, 0x8d, 0xaf, 0x7f, 0x92, - 0xcc, 0xcc, 0x24, 0x6c, 0x47, 0xb3, 0x77, 0x07, 0x62, 0xe2, 0x01, 0x54, 0xc8, 0x06, 0x14, 0x9c, - 0xf6, 0xc6, 0xcc, 0xe3, 0x79, 0xa8, 0xae, 0xd5, 0x95, 0x9a, 0x1c, 0x51, 0xdc, 0x6f, 0xba, 0xba, - 0x52, 0x43, 0x46, 0x9c, 0xb8, 0x30, 0xea, 0xb4, 0x37, 0xc2, 0x99, 0x59, 0x3e, 0x67, 0x73, 0x63, - 0x12, 0x1b, 0x0f, 0x56, 0x6a, 0x21, 0x72, 0x16, 0xf6, 0x17, 0x46, 0xf4, 0x2d, 0x91, 0xce, 0x67, - 0xff, 0x96, 0x39, 0x81, 0xc4, 0x71, 0xe7, 0x76, 0x6e, 0x13, 0x48, 0xaa, 0x17, 0x67, 0x06, 0x4e, - 0x9f, 0xae, 0x5e, 0x32, 0x72, 0x49, 0x84, 0x97, 0xcc, 0xd5, 0x2f, 0x4e, 0xcf, 0xc9, 0x05, 0xc3, - 0xfe, 0x62, 0x45, 0x5b, 0x41, 0x53, 0x6e, 0x82, 0x01, 0x14, 0xdd, 0x30, 0x72, 0xfd, 0x1c, 0xf3, - 0x0e, 0xa4, 0x92, 0xdc, 0xf3, 0xb0, 0x26, 0x0e, 0x40, 0xc1, 0x8a, 0xf1, 0xf4, 0x5a, 0xae, 0xf7, - 0x40, 0x7e, 0xfe, 0x6b, 0xb9, 0x3b, 0xb9, 0x09, 0x9e, 0x1c, 0x80, 0x82, 0x15, 0xb9, 0x27, 0x06, - 0x75, 0x21, 0x8f, 0xbe, 0xae, 0xae, 0xd4, 0x52, 0xfc, 0x92, 0x83, 0xfb, 0x1e, 0x14, 0xc2, 0x8e, - 0x2b, 0xd5, 0xa5, 0x21, 0x79, 0xd5, 0x57, 0x97, 0xb3, 0x78, 0xd5, 0x57, 0x97, 0x91, 0x31, 0xe1, - 0x57, 0xfd, 0x4e, 0x67, 0xc3, 0x09, 0x43, 0xa7, 0xa9, 0xad, 0x33, 0x43, 0x5e, 0xf5, 0x57, 0x35, - 0xbd, 0x14, 0x6b, 0x7e, 0xd5, 0x1f, 0x43, 0xd1, 0xe0, 0x4c, 0xde, 0x84, 0x71, 0x47, 0x3c, 0x94, - 0x2a, 0x83, 0x3c, 0xf2, 0x79, 0xfd, 0x37, 0x25, 0x01, 0x37, 0xd3, 0x48, 0x10, 0x2a, 0x86, 0x8c, - 0x77, 0x14, 0x38, 0x74, 0xd3, 0xdd, 0x96, 0xc6, 0xa1, 0xfa, 0xd0, 0x4f, 0xf9, 0x30, 0x62, 0x59, - 0xbc, 0x25, 0x08, 0x15, 0x43, 0xf2, 0x65, 0x0b, 0xce, 0x74, 0x1c, 0xcf, 0xd1, 0xa1, 0xbb, 0xf9, - 0x04, 0x78, 0x9b, 0xc1, 0xc0, 0xb1, 0x86, 0xb8, 0x6a, 0x32, 0xc2, 0x24, 0x5f, 0xb2, 0x03, 0x63, - 0x0e, 0x7f, 0xc2, 0x59, 0x1e, 0xc5, 0x30, 0x8f, 0xe7, 0xa0, 0x53, 0x6d, 0xc0, 0x17, 0x17, 0xf9, - 0x50, 0xb4, 0xe4, 0x46, 0x7e, 0xd3, 0x82, 0x71, 0x11, 0x7f, 0xc0, 0x14, 0x52, 0xf6, 0xed, 0x9f, - 0x39, 0x85, 0xc7, 0x32, 0x64, 0x6c, 0x84, 0x74, 0xce, 0xfa, 0xa0, 0xf6, 0xad, 0x16, 0xa5, 0x07, - 0x46, 0x47, 0x28, 0xe9, 0x98, 0xea, 0xdb, 0x71, 0x1e, 0x24, 0x1e, 0x6a, 0x32, 0x55, 0xdf, 0xd5, - 0x14, 0x0c, 0xfb, 0xb0, 0x67, 0x3f, 0x06, 0x13, 0xa6, 0x1c, 0xc7, 0x8a, 0xb0, 0xf8, 0x71, 0x01, - 0x80, 0x77, 0x95, 0x48, 0xf7, 0xd3, 0xe1, 0xb9, 0xc1, 0xb7, 0xfc, 0x66, 0x4e, 0x0f, 0xc6, 0x1a, - 0x59, 0x7b, 0x40, 0x26, 0x02, 0xdf, 0xf2, 0x9b, 0x28, 0x99, 0x90, 0x16, 0x8c, 0x76, 0x9d, 0x68, - 0x2b, 0xff, 0x14, 0x41, 0x25, 0x11, 0xf7, 0x1e, 0x6d, 0x21, 0x67, 0x40, 0xde, 0xb6, 0x62, 0xbf, - 0xa7, 0x42, 0x1e, 0xe9, 0x8d, 0xe3, 0x36, 0x9b, 0x97, 0x9e, 0x4e, 0xa9, 0x2c, 0xbf, 0x69, 0xff, - 0xa7, 0xd9, 0x77, 0x2c, 0x98, 0x30, 0x51, 0x33, 0xba, 0xe9, 0xe7, 0xcd, 0x6e, 0xca, 0xb3, 0x3d, - 0xcc, 0x1e, 0xff, 0x1f, 0x16, 0x00, 0xf6, 0xbc, 0x7a, 0xaf, 0xd3, 0x61, 0x6a, 0xbb, 0x0e, 0x24, - 0xb1, 0x8e, 0x1c, 0x48, 0x32, 0x72, 0xcc, 0x40, 0x92, 0xc2, 0xb1, 0x02, 0x49, 0x46, 0x8f, 0x1f, - 0x48, 0x52, 0x1c, 0x1c, 0x48, 0x62, 0x7f, 0xc3, 0x82, 0xb3, 0x7d, 0xfb, 0x15, 0xd3, 0xa4, 0x03, - 0xdf, 0x8f, 0x06, 0xf8, 0xcf, 0x62, 0x0c, 0x42, 0x13, 0x8f, 0x2c, 0xc1, 0xb4, 0x7c, 0x09, 0xa7, - 0xde, 0x6d, 0xbb, 0x99, 0xe9, 0x9b, 0xd6, 0x53, 0x70, 0xec, 0xab, 0x61, 0xff, 0x6b, 0x0b, 0x2a, - 0x46, 0xd2, 0x07, 0xee, 0x73, 0xc6, 0x6f, 0xbc, 0xd2, 0x3e, 0x67, 0xfc, 0xaa, 0x4b, 0xc0, 0xc4, - 0x35, 0x74, 0xcb, 0x78, 0x27, 0x21, 0xbe, 0x86, 0x66, 0xa5, 0x28, 0xa1, 0x22, 0x03, 0xbe, 0x74, - 0x3e, 0x2b, 0x98, 0x19, 0xf0, 0x69, 0x57, 0xb8, 0x9a, 0xc5, 0x2e, 0x6e, 0xa3, 0x87, 0xbb, 0xb8, - 0x15, 0xb3, 0x5d, 0xdc, 0xec, 0xdb, 0x30, 0x21, 0x7c, 0xc3, 0x5f, 0xa5, 0xbb, 0x47, 0x7e, 0x71, - 0x99, 0x8d, 0xf6, 0x94, 0xcf, 0x1c, 0xab, 0xce, 0xca, 0xed, 0x7f, 0x62, 0x41, 0xea, 0x19, 0x2e, - 0xe3, 0x06, 0xc6, 0x1a, 0x78, 0x03, 0x63, 0x5a, 0xed, 0x47, 0x0e, 0xb4, 0xda, 0xdf, 0x04, 0xd2, - 0x61, 0x53, 0x21, 0xb9, 0xd0, 0x16, 0x92, 0xaf, 0x95, 0xac, 0xf6, 0x61, 0x60, 0x46, 0x2d, 0xfb, - 0x1f, 0x0b, 0x61, 0xcd, 0x87, 0xb9, 0x0e, 0x6f, 0x80, 0x1e, 0x14, 0x39, 0x29, 0x69, 0x7f, 0x1b, - 0xd2, 0x76, 0xdd, 0x9f, 0xaa, 0x2d, 0xee, 0x48, 0x39, 0xe5, 0x39, 0x37, 0xfb, 0xf7, 0x84, 0xac, - 0xe6, 0xcb, 0x5d, 0x87, 0xcb, 0xda, 0x49, 0xca, 0x7a, 0x23, 0xaf, 0xb5, 0x32, 0x5b, 0x46, 0x32, - 0x0f, 0xd0, 0xa5, 0x41, 0x83, 0x7a, 0x91, 0x0a, 0x7d, 0x2b, 0xca, 0x20, 0x6c, 0x5d, 0x8a, 0x06, - 0x86, 0xfd, 0x75, 0x36, 0x81, 0xe2, 0xb7, 0xc8, 0xc9, 0x95, 0xb4, 0x23, 0x70, 0x7a, 0x72, 0x68, - 0x3f, 0x60, 0x23, 0x1e, 0x6a, 0xe4, 0x90, 0x78, 0xa8, 0x67, 0x60, 0x3c, 0xf0, 0xdb, 0xb4, 0x1a, - 0x78, 0x69, 0x1f, 0x1d, 0x64, 0xc5, 0x78, 0x0b, 0x15, 0xdc, 0xfe, 0x75, 0x0b, 0xa6, 0xd3, 0x11, - 0x9b, 0xb9, 0x7b, 0x27, 0x9b, 0x69, 0x25, 0x0a, 0xc7, 0x4f, 0x2b, 0x61, 0xff, 0x49, 0x11, 0xa6, - 0xd3, 0x6f, 0x24, 0x32, 0xce, 0x2e, 0x37, 0xb6, 0xa5, 0x56, 0x7f, 0x61, 0x65, 0x13, 0x30, 0x3d, - 0x5e, 0x46, 0x06, 0x8e, 0x97, 0xeb, 0x50, 0xf6, 0xbb, 0xea, 0xc0, 0x2f, 0x84, 0xbb, 0xa2, 0x8c, - 0x35, 0xb7, 0x15, 0xe0, 0xdd, 0xbd, 0xb9, 0x73, 0xb1, 0x00, 0xba, 0x18, 0xe3, 0xaa, 0xe4, 0x67, - 0x94, 0xa5, 0x62, 0x34, 0x91, 0xa8, 0x49, 0x5b, 0x2a, 0xa6, 0xe2, 0xfa, 0x83, 0x8c, 0x15, 0xc5, - 0xe3, 0x24, 0x8c, 0x19, 0xcb, 0x31, 0x61, 0xcc, 0x5d, 0x28, 0x4b, 0xdb, 0xea, 0x89, 0x12, 0xa5, - 0x70, 0xc2, 0x77, 0x14, 0x01, 0x8c, 0x69, 0xa5, 0x32, 0xd1, 0x94, 0x72, 0xcd, 0x44, 0xf3, 0x12, - 0x8c, 0x6f, 0x38, 0x8d, 0x6d, 0x7f, 0x73, 0x93, 0xeb, 0xe7, 0xe5, 0xda, 0x07, 0x54, 0xc3, 0xd5, - 0x44, 0x71, 0xc6, 0x90, 0x52, 0x35, 0x98, 0x56, 0x40, 0x95, 0x3b, 0xb2, 0x32, 0xfb, 0x6a, 0xad, - 0x40, 0x3b, 0x2a, 0x87, 0x68, 0x60, 0x91, 0x67, 0xa1, 0xd4, 0x74, 0x43, 0xf1, 0x8a, 0x77, 0x25, - 0xe9, 0xad, 0xbe, 0x24, 0xcb, 0x51, 0x63, 0x90, 0x97, 0xb5, 0xb7, 0xda, 0x44, 0x1c, 0x48, 0xa2, - 0x3d, 0xd5, 0x0e, 0x08, 0x24, 0x91, 0xce, 0xb8, 0x6f, 0xb3, 0x89, 0x19, 0xb9, 0x8d, 0x6d, 0xd7, - 0x13, 0xd9, 0x47, 0xd8, 0x6a, 0xf1, 0x0c, 0x8c, 0x53, 0xf9, 0x8e, 0xb8, 0xb8, 0x3a, 0xd1, 0x83, - 0x45, 0x3d, 0x1f, 0xae, 0xe0, 0xa4, 0x0a, 0x53, 0xea, 0xc2, 0x58, 0xdd, 0x77, 0x89, 0xac, 0x49, - 0xda, 0xbe, 0xbe, 0x94, 0x04, 0x63, 0x1a, 0xdf, 0xfe, 0x3c, 0x54, 0x0c, 0x45, 0x8c, 0xeb, 0x2c, - 0x0f, 0x9c, 0x46, 0x9f, 0x7f, 0xf9, 0x35, 0x56, 0x88, 0x02, 0xc6, 0xaf, 0xe5, 0x44, 0x70, 0x64, - 0x6a, 0xaf, 0x97, 0x21, 0x91, 0x12, 0xca, 0x88, 0x05, 0xb4, 0x45, 0x1f, 0xa8, 0xa7, 0x5b, 0x14, - 0x31, 0x64, 0x85, 0x28, 0x60, 0xf6, 0xb3, 0x50, 0x52, 0xb9, 0xed, 0x78, 0x82, 0x28, 0x75, 0x65, - 0x64, 0x26, 0x88, 0xf2, 0x83, 0x08, 0x39, 0xc4, 0x7e, 0x1d, 0x4a, 0x2a, 0x05, 0xdf, 0xe1, 0xd8, - 0x6c, 0xfb, 0x0d, 0x3d, 0xf7, 0x86, 0x1f, 0x46, 0x2a, 0x6f, 0xa0, 0xb8, 0xd5, 0xbe, 0xb5, 0xcc, - 0xcb, 0x50, 0x43, 0xed, 0x3f, 0xb5, 0xa0, 0xb2, 0xbe, 0xbe, 0xa2, 0x8d, 0x5d, 0x08, 0x8f, 0x86, - 0xa2, 0x85, 0xaa, 0x9b, 0x11, 0x35, 0xdd, 0x67, 0xc4, 0x4a, 0x34, 0xbb, 0xbf, 0x37, 0xf7, 0x68, - 0x3d, 0x13, 0x03, 0x07, 0xd4, 0x24, 0xcb, 0x70, 0xce, 0x84, 0xc8, 0x7c, 0x2e, 0x52, 0x2f, 0xe0, - 0x0f, 0xcf, 0xd7, 0xfb, 0xc1, 0x98, 0x55, 0x27, 0x4d, 0x4a, 0xaa, 0xb8, 0xe6, 0x1b, 0xf6, 0xf5, - 0x7e, 0x30, 0x66, 0xd5, 0xb1, 0x9f, 0x83, 0xa9, 0x94, 0x5f, 0xc7, 0x11, 0xf2, 0x68, 0xfd, 0x6e, - 0x01, 0x26, 0xcc, 0xeb, 0xfd, 0x23, 0xec, 0xd9, 0x47, 0x57, 0x85, 0x32, 0xae, 0xe4, 0x0b, 0xc7, - 0xbc, 0x92, 0x37, 0x7d, 0x20, 0x46, 0x4f, 0xd7, 0x07, 0xa2, 0x98, 0x8f, 0x0f, 0x84, 0xe1, 0xab, - 0x33, 0xf6, 0xf0, 0x7c, 0x75, 0x7e, 0xa7, 0x08, 0x93, 0xc9, 0xc4, 0xcc, 0x47, 0xe8, 0xc9, 0x67, - 0xfb, 0x7a, 0xf2, 0x98, 0x77, 0x80, 0x85, 0x61, 0xef, 0x00, 0x47, 0x87, 0xbd, 0x03, 0x2c, 0x9e, - 0xe0, 0x0e, 0xb0, 0xff, 0x06, 0x6f, 0xec, 0xc8, 0x37, 0x78, 0x1f, 0xd7, 0x1b, 0xc5, 0x78, 0xc2, - 0xed, 0x2d, 0xde, 0x2c, 0x48, 0xb2, 0x1b, 0x16, 0xfd, 0x66, 0xa6, 0x3b, 0x76, 0xe9, 0x10, 0xf5, - 0x21, 0xc8, 0xf4, 0x42, 0x3e, 0xbe, 0x9b, 0xc1, 0xa3, 0xc7, 0xf0, 0x40, 0x7e, 0x01, 0x2a, 0x72, - 0x3c, 0xf1, 0x03, 0x27, 0x24, 0x0f, 0xab, 0xf5, 0x18, 0x84, 0x26, 0x1e, 0x1b, 0x18, 0xdd, 0x78, - 0x82, 0xf0, 0xdb, 0xe8, 0x4a, 0xf2, 0x36, 0x7a, 0x2d, 0x09, 0xc6, 0x34, 0xbe, 0xfd, 0x39, 0xb8, - 0x90, 0x69, 0x76, 0xe4, 0x57, 0x3e, 0xfc, 0x2c, 0x44, 0x9b, 0x12, 0xc1, 0x10, 0x23, 0xf5, 0x5e, - 0xd3, 0xec, 0xdd, 0x81, 0x98, 0x78, 0x00, 0x15, 0xfb, 0xb7, 0x0b, 0x30, 0x99, 0x7c, 0xbf, 0x9c, - 0xdc, 0xd7, 0x97, 0x14, 0xb9, 0xdc, 0x8f, 0x08, 0xb2, 0x46, 0xb2, 0xdf, 0x81, 0x97, 0x9b, 0xf7, - 0xf9, 0xf8, 0xda, 0xd0, 0x99, 0x87, 0x4f, 0x8f, 0xb1, 0xbc, 0x55, 0x94, 0xec, 0xf8, 0x2b, 0xe0, - 0x71, 0xbc, 0xbf, 0xb4, 0x5d, 0xe5, 0xce, 0x3d, 0x0e, 0xcd, 0xd6, 0xac, 0xd0, 0x60, 0xcb, 0xf6, - 0x96, 0x1d, 0x1a, 0xb8, 0x9b, 0x2e, 0x6d, 0xca, 0x87, 0x20, 0xf8, 0xca, 0xfd, 0xba, 0x2c, 0x43, - 0x0d, 0xb5, 0xdf, 0x1e, 0x81, 0x32, 0x4f, 0x63, 0x78, 0x3d, 0xf0, 0x3b, 0xfc, 0x65, 0xdb, 0xd0, - 0xb0, 0x13, 0xc8, 0x6e, 0xbb, 0x39, 0xec, 0x63, 0xd5, 0x31, 0x45, 0x19, 0xe2, 0x61, 0x94, 0x60, - 0x82, 0x23, 0xe9, 0x42, 0x69, 0x53, 0xa6, 0x5d, 0x97, 0x7d, 0x37, 0x64, 0xea, 0x60, 0x95, 0xc4, - 0x5d, 0x34, 0x81, 0xfa, 0x87, 0x9a, 0x8b, 0xed, 0xc0, 0x54, 0x2a, 0x0f, 0x55, 0xee, 0xc9, 0xda, - 0xff, 0xd7, 0x28, 0x94, 0x75, 0xe4, 0x25, 0xf9, 0x68, 0xc2, 0x68, 0x1b, 0xeb, 0xf0, 0xd2, 0xda, - 0xca, 0xce, 0x4d, 0x1a, 0x39, 0x65, 0x80, 0xbd, 0x08, 0x85, 0x5e, 0xd0, 0x4e, 0x5b, 0x65, 0xee, - 0xe0, 0x0a, 0xb2, 0x72, 0x33, 0x5a, 0xb4, 0xf0, 0x70, 0xa3, 0x45, 0x2f, 0xc3, 0xe8, 0x86, 0xdf, - 0xdc, 0x4d, 0x3f, 0xd3, 0x58, 0xf3, 0x9b, 0xbb, 0xc8, 0x21, 0xe4, 0x65, 0x98, 0x94, 0x21, 0xb0, - 0x4a, 0x89, 0x29, 0x72, 0x3d, 0x55, 0x3b, 0xeb, 0xac, 0x27, 0xa0, 0x98, 0xc2, 0x66, 0xbb, 0x2c, - 0x3b, 0x36, 0xf0, 0x14, 0xfc, 0x63, 0xc9, 0x9b, 0xfd, 0x9b, 0xf5, 0xdb, 0xb7, 0xb8, 0xf1, 0x58, - 0x63, 0x24, 0xa2, 0x6c, 0xc7, 0x0f, 0x8d, 0xb2, 0x5d, 0x12, 0xb4, 0x99, 0xb4, 0x7c, 0x47, 0x99, - 0xa8, 0x5d, 0x51, 0x74, 0x59, 0xd9, 0x81, 0x67, 0x17, 0x5d, 0x33, 0x2b, 0x1e, 0xb9, 0xfc, 0xde, - 0xc5, 0x23, 0xdb, 0x77, 0x60, 0x2a, 0xd5, 0x7f, 0xca, 0xa8, 0x67, 0x65, 0x1b, 0xf5, 0x8e, 0xf6, - 0xd0, 0xe3, 0x3f, 0xb7, 0xe0, 0x6c, 0xdf, 0x8a, 0x74, 0xd4, 0xc0, 0xf0, 0xf4, 0xde, 0x38, 0x72, - 0xf2, 0xbd, 0xb1, 0x70, 0xbc, 0xbd, 0xb1, 0xb6, 0xf1, 0xdd, 0x1f, 0x5d, 0x7a, 0xe4, 0x07, 0x3f, - 0xba, 0xf4, 0xc8, 0xef, 0xff, 0xe8, 0xd2, 0x23, 0x6f, 0xef, 0x5f, 0xb2, 0xbe, 0xbb, 0x7f, 0xc9, - 0xfa, 0xc1, 0xfe, 0x25, 0xeb, 0xf7, 0xf7, 0x2f, 0x59, 0xff, 0x75, 0xff, 0x92, 0xf5, 0x8d, 0x3f, - 0xba, 0xf4, 0xc8, 0x27, 0x3f, 0x1e, 0xf7, 0xd4, 0x82, 0xea, 0x29, 0xfe, 0xe3, 0x43, 0xaa, 0x5f, - 0x16, 0xba, 0xdb, 0xad, 0x05, 0xd6, 0x53, 0x0b, 0xba, 0x44, 0xf5, 0xd4, 0xff, 0x0b, 0x00, 0x00, - 0xff, 0xff, 0x4e, 0x36, 0xf6, 0x90, 0xb2, 0xad, 0x00, 0x00, + 0x05, 0xfb, 0xf7, 0xc6, 0x60, 0x42, 0x9c, 0x84, 0xe4, 0xd6, 0xf5, 0x3b, 0x16, 0x3c, 0xd9, 0xe8, + 0x05, 0x01, 0xf5, 0xa2, 0x7a, 0x44, 0xbb, 0xfd, 0x1b, 0x97, 0x75, 0xaa, 0x1b, 0xd7, 0xe5, 0xfd, + 0xbd, 0xb9, 0x27, 0x17, 0x0f, 0xe0, 0x8f, 0x07, 0x4a, 0x47, 0xfe, 0x83, 0x05, 0xb6, 0x44, 0xa8, + 0x39, 0x8d, 0xed, 0x56, 0xe0, 0xf7, 0xbc, 0x66, 0xff, 0x47, 0x8c, 0x9c, 0xea, 0x47, 0x3c, 0xbd, + 0xbf, 0x37, 0x67, 0x2f, 0x1e, 0x2a, 0x05, 0x1e, 0x41, 0x52, 0xf2, 0x0a, 0x9c, 0x95, 0x58, 0xd7, + 0x1e, 0x74, 0x69, 0xe0, 0xb2, 0x33, 0x87, 0x54, 0x1c, 0x63, 0xdf, 0xb4, 0x34, 0x02, 0xf6, 0xd7, + 0x21, 0x21, 0x8c, 0xdf, 0xa7, 0x6e, 0x6b, 0x2b, 0x52, 0xea, 0xd3, 0x90, 0x0e, 0x69, 0xd2, 0x2a, + 0x72, 0x57, 0xd0, 0xac, 0x55, 0xf6, 0xf7, 0xe6, 0xc6, 0xe5, 0x1f, 0x54, 0x9c, 0xc8, 0x2d, 0x98, + 0x14, 0xe7, 0xd4, 0x35, 0xd7, 0x6b, 0xad, 0xf9, 0x9e, 0xf0, 0xaa, 0x2a, 0xd7, 0x9e, 0x56, 0x1b, + 0x7e, 0x3d, 0x01, 0x7d, 0x77, 0x6f, 0x6e, 0x42, 0xfd, 0x5e, 0xdf, 0xed, 0x52, 0x4c, 0xd5, 0x26, + 0x7f, 0xc7, 0x02, 0x12, 0x46, 0xb4, 0xbb, 0xd6, 0xee, 0xb5, 0x5c, 0xd9, 0x44, 0xd2, 0x3f, 0x2a, + 0x07, 0x57, 0xad, 0x24, 0xdd, 0xda, 0xac, 0x14, 0x92, 0xd4, 0xfb, 0x38, 0x62, 0x86, 0x14, 0xf6, + 0xb7, 0xc7, 0x01, 0xd4, 0x5c, 0xa2, 0x5d, 0xf2, 0x41, 0x28, 0x87, 0x34, 0x12, 0x4d, 0x22, 0xaf, + 0xb9, 0xc4, 0xe5, 0xa4, 0x2a, 0xc4, 0x18, 0x4e, 0xb6, 0xa1, 0xd8, 0x75, 0x7a, 0x21, 0xcd, 0xe7, + 0x70, 0x23, 0x47, 0xe6, 0x1a, 0xa3, 0x28, 0x4e, 0xcd, 0xfc, 0x27, 0x0a, 0x1e, 0xe4, 0x4b, 0x16, + 0x00, 0x4d, 0x8e, 0xa6, 0xa1, 0xad, 0x57, 0x92, 0x65, 0x3c, 0xe0, 0x58, 0x1b, 0xd4, 0x26, 0xf7, + 0xf7, 0xe6, 0xc0, 0x18, 0x97, 0x06, 0x5b, 0x72, 0x1f, 0x4a, 0x8e, 0xda, 0x90, 0x46, 0x4f, 0x63, + 0x43, 0xe2, 0x87, 0x59, 0x3d, 0xa3, 0x34, 0x33, 0xf2, 0x15, 0x0b, 0x26, 0x43, 0x1a, 0xc9, 0xae, + 0x62, 0xcb, 0xa2, 0xd4, 0xc6, 0x87, 0x9c, 0x11, 0xf5, 0x04, 0x4d, 0xb1, 0xbc, 0x27, 0xcb, 0x30, + 0xc5, 0x57, 0x89, 0x72, 0x83, 0x3a, 0x4d, 0x1a, 0x70, 0x5b, 0x89, 0x54, 0xf3, 0x86, 0x17, 0xc5, + 0xa0, 0xa9, 0x45, 0x31, 0xca, 0x30, 0xc5, 0x57, 0x89, 0xb2, 0xea, 0x06, 0x81, 0x2f, 0x45, 0x29, + 0xe5, 0x24, 0x8a, 0x41, 0x53, 0x8b, 0x62, 0x94, 0x61, 0x8a, 0x2f, 0x69, 0xc3, 0x58, 0x97, 0x4f, + 0x2d, 0xa9, 0xca, 0x0d, 0x79, 0x47, 0xae, 0xa6, 0x29, 0xed, 0x0a, 0x9b, 0x94, 0xf8, 0x8f, 0x92, + 0x87, 0xfd, 0xad, 0x33, 0x30, 0xa9, 0xa6, 0x6d, 0x7c, 0xc8, 0x11, 0x86, 0xc0, 0x01, 0x87, 0x9c, + 0x45, 0x13, 0x88, 0x49, 0x5c, 0x56, 0x59, 0xac, 0x5a, 0xc9, 0x33, 0x8e, 0xae, 0x5c, 0x37, 0x81, + 0x98, 0xc4, 0x25, 0x1d, 0x28, 0xb2, 0x95, 0x45, 0xb9, 0x5f, 0x0c, 0xf9, 0xe5, 0xf1, 0x6a, 0x64, + 0x18, 0x55, 0x18, 0x79, 0x14, 0x5c, 0xb8, 0x2d, 0x3b, 0x4a, 0x98, 0xb7, 0xe5, 0x54, 0xcc, 0x67, + 0x35, 0x48, 0x5a, 0xce, 0x45, 0xdf, 0x27, 0xcb, 0x30, 0xc5, 0x3e, 0xe3, 0xdc, 0x53, 0x3c, 0xc5, + 0x73, 0xcf, 0x27, 0xa1, 0xd4, 0x71, 0x1e, 0xd4, 0x7b, 0x41, 0xeb, 0xe4, 0xe7, 0x2b, 0xe9, 0x4e, + 0x2b, 0xa8, 0xa0, 0xa6, 0x47, 0xbe, 0x60, 0x19, 0x0b, 0x9c, 0xf0, 0xb5, 0xb8, 0x9b, 0xef, 0x02, + 0xa7, 0xd5, 0x86, 0x81, 0x4b, 0x5d, 0xdf, 0x29, 0xa4, 0xf4, 0xd0, 0x4f, 0x21, 0x4c, 0xa3, 0x16, + 0x13, 0x44, 0x6b, 0xd4, 0xe5, 0x53, 0xd5, 0xa8, 0x17, 0x13, 0xcc, 0x30, 0xc5, 0x9c, 0xcb, 0x23, + 0xe6, 0x9c, 0x96, 0x07, 0x4e, 0x55, 0x9e, 0x7a, 0x82, 0x19, 0xa6, 0x98, 0x0f, 0x3e, 0x7a, 0x57, + 0x4e, 0xe7, 0xe8, 0x3d, 0x91, 0xc3, 0xd1, 0xfb, 0xe0, 0x53, 0xc9, 0x99, 0x61, 0x4f, 0x25, 0xe4, + 0x26, 0x90, 0xe6, 0xae, 0xe7, 0x74, 0xdc, 0x86, 0x5c, 0x2c, 0xf9, 0x26, 0x3d, 0xc9, 0x4d, 0x33, + 0x5a, 0x2b, 0x5b, 0xea, 0xc3, 0xc0, 0x8c, 0x5a, 0x24, 0x82, 0x52, 0x57, 0x29, 0x9f, 0x53, 0x79, + 0x8c, 0x7e, 0xa5, 0x8c, 0x0a, 0x17, 0x1a, 0x36, 0xf1, 0x54, 0x09, 0x6a, 0x4e, 0x64, 0x05, 0xce, + 0x77, 0x5c, 0x6f, 0xcd, 0x6f, 0x86, 0x6b, 0x34, 0x90, 0x86, 0xa7, 0x3a, 0x8d, 0x66, 0xa6, 0x79, + 0xdb, 0x70, 0x63, 0xc2, 0x6a, 0x06, 0x1c, 0x33, 0x6b, 0xd9, 0xff, 0xdb, 0x82, 0xe9, 0xc5, 0xb6, + 0xdf, 0x6b, 0xde, 0x75, 0xa2, 0xc6, 0x96, 0xf0, 0xd8, 0x20, 0x2f, 0x43, 0xc9, 0xf5, 0x22, 0x1a, + 0xec, 0x38, 0x6d, 0xb9, 0x3f, 0xd9, 0xca, 0x92, 0xbc, 0x2c, 0xcb, 0xdf, 0xdd, 0x9b, 0x9b, 0x5c, + 0xea, 0x05, 0xdc, 0x60, 0x2f, 0x56, 0x2b, 0xd4, 0x75, 0xc8, 0xb7, 0x2c, 0x38, 0x2b, 0x7c, 0x3e, + 0x96, 0x9c, 0xc8, 0x79, 0xad, 0x47, 0x03, 0x97, 0x2a, 0xaf, 0x8f, 0x21, 0x17, 0xaa, 0xb4, 0xac, + 0x8a, 0xc1, 0x6e, 0x7c, 0x66, 0x59, 0x4d, 0x73, 0xc6, 0x7e, 0x61, 0xec, 0x5f, 0x2d, 0xc0, 0xe3, + 0x03, 0x69, 0x91, 0x59, 0x18, 0x71, 0x9b, 0xf2, 0xd3, 0x41, 0xd2, 0x1d, 0x59, 0x6e, 0xe2, 0x88, + 0xdb, 0x24, 0xf3, 0x5c, 0xc3, 0x0d, 0x68, 0x18, 0xaa, 0xbb, 0xf7, 0xb2, 0x56, 0x46, 0x65, 0x29, + 0x1a, 0x18, 0x64, 0x0e, 0x8a, 0xdc, 0x95, 0x5a, 0x1e, 0xad, 0xb8, 0xce, 0xcc, 0xbd, 0x96, 0x51, + 0x94, 0x93, 0x2f, 0x5a, 0x00, 0x42, 0x40, 0xa6, 0xef, 0xcb, 0x5d, 0x12, 0xf3, 0x6d, 0x26, 0x46, + 0x59, 0x48, 0x19, 0xff, 0x47, 0x83, 0x2b, 0x59, 0x87, 0x31, 0xa6, 0x3e, 0xfb, 0xcd, 0x13, 0x6f, + 0x8a, 0x42, 0x01, 0xe2, 0x34, 0x50, 0xd2, 0x62, 0x6d, 0x15, 0xd0, 0xa8, 0x17, 0x78, 0xac, 0x69, + 0xf9, 0x36, 0x58, 0x12, 0x52, 0xa0, 0x2e, 0x45, 0x03, 0xc3, 0xfe, 0x17, 0x23, 0x70, 0x3e, 0x4b, + 0x74, 0xb6, 0xdb, 0x8c, 0x09, 0x69, 0xa5, 0x95, 0xe0, 0x67, 0xf3, 0x6f, 0x1f, 0xe9, 0xbe, 0xa4, + 0x6f, 0x6c, 0xa4, 0x2f, 0xa9, 0xe4, 0x4b, 0x7e, 0x56, 0xb7, 0xd0, 0xc8, 0x09, 0x5b, 0x48, 0x53, + 0x4e, 0xb5, 0xd2, 0x65, 0x18, 0x0d, 0x59, 0xcf, 0x17, 0x92, 0x37, 0x3f, 0xbc, 0x8f, 0x38, 0x84, + 0x61, 0xf4, 0x3c, 0x37, 0x92, 0xf1, 0x47, 0x1a, 0xe3, 0x8e, 0xe7, 0x46, 0xc8, 0x21, 0xf6, 0x37, + 0x47, 0x60, 0x76, 0xf0, 0x47, 0x91, 0x6f, 0x5a, 0x00, 0x4d, 0x76, 0x38, 0x0a, 0xb9, 0x13, 0xbf, + 0x70, 0xf7, 0x72, 0x4e, 0xab, 0x0d, 0x97, 0x14, 0xa7, 0xd8, 0x0f, 0x51, 0x17, 0x85, 0x68, 0x08, + 0x42, 0xae, 0xaa, 0xa1, 0xcf, 0x6f, 0xad, 0xc4, 0x64, 0xd2, 0x75, 0x56, 0x35, 0x04, 0x0d, 0x2c, + 0x76, 0xfa, 0xf5, 0x9c, 0x0e, 0x0d, 0xbb, 0x8e, 0x8e, 0xe6, 0xe2, 0xa7, 0xdf, 0x5b, 0xaa, 0x10, + 0x63, 0xb8, 0xdd, 0x86, 0xa7, 0x8e, 0x20, 0x67, 0x4e, 0xc1, 0x32, 0xf6, 0x9f, 0x5a, 0xf0, 0x98, + 0xf4, 0xc4, 0xfb, 0x0b, 0xe3, 0xd6, 0xf9, 0x67, 0x16, 0x3c, 0x31, 0xe0, 0x9b, 0x1f, 0x82, 0x77, + 0xe7, 0x9b, 0x49, 0xef, 0xce, 0x3b, 0xc3, 0x0e, 0xe9, 0xcc, 0xef, 0x18, 0xe0, 0xe4, 0xf9, 0x9d, + 0x51, 0x38, 0xc3, 0x96, 0xad, 0xa6, 0xdf, 0xca, 0x69, 0xe3, 0x7c, 0x0a, 0x8a, 0x9f, 0x65, 0x1b, + 0x50, 0x7a, 0x90, 0xf1, 0x5d, 0x09, 0x05, 0x8c, 0x7c, 0xc9, 0x82, 0xf1, 0xcf, 0xca, 0x3d, 0x55, + 0x9c, 0xe5, 0x86, 0x5c, 0x0c, 0x13, 0xdf, 0x30, 0x2f, 0x77, 0x48, 0x11, 0x83, 0xa3, 0x7d, 0x39, + 0xd5, 0x56, 0xaa, 0x38, 0x93, 0x67, 0x60, 0x7c, 0xd3, 0x0f, 0x3a, 0xbd, 0xb6, 0x93, 0x0e, 0xfc, + 0xbc, 0x2e, 0x8a, 0x51, 0xc1, 0xd9, 0x24, 0x77, 0xba, 0xee, 0xeb, 0x34, 0x08, 0x45, 0x48, 0x46, + 0x62, 0x92, 0x57, 0x35, 0x04, 0x0d, 0x2c, 0x5e, 0xa7, 0xd5, 0x0a, 0x68, 0xcb, 0x89, 0xfc, 0x80, + 0xef, 0x1c, 0x66, 0x1d, 0x0d, 0x41, 0x03, 0x8b, 0x3c, 0x80, 0x72, 0x48, 0x1b, 0x01, 0x8d, 0x90, + 0x6e, 0xca, 0x63, 0xd1, 0x2b, 0xc3, 0x5a, 0x18, 0x24, 0xb9, 0xd8, 0xa9, 0x51, 0x17, 0x61, 0xcc, + 0x6c, 0xf6, 0x63, 0x30, 0x61, 0x36, 0xdb, 0xb1, 0x22, 0x89, 0x3e, 0x0e, 0xd2, 0x9d, 0x34, 0xb5, + 0x18, 0x5a, 0x47, 0x59, 0x0c, 0xed, 0xff, 0x34, 0x02, 0x86, 0x15, 0xec, 0x21, 0x2c, 0x32, 0x5e, + 0x62, 0x91, 0x19, 0xd2, 0x82, 0x63, 0xd8, 0xf4, 0x06, 0xc5, 0x55, 0xee, 0xa4, 0xe2, 0x2a, 0x6f, + 0xe5, 0xc6, 0xf1, 0xe0, 0xb0, 0xca, 0x1f, 0x58, 0xf0, 0x44, 0x8c, 0xdc, 0x6f, 0x3d, 0x3f, 0x7c, + 0xc7, 0x78, 0x01, 0x2a, 0x4e, 0x5c, 0x4d, 0x4e, 0x69, 0x23, 0xa8, 0x4d, 0x83, 0xd0, 0xc4, 0x8b, + 0x03, 0x72, 0x0a, 0x27, 0x0c, 0xc8, 0x19, 0x3d, 0x38, 0x20, 0xc7, 0xfe, 0xf1, 0x08, 0x5c, 0xec, + 0xff, 0x32, 0xd3, 0x4b, 0xfd, 0xf0, 0x6f, 0x4b, 0xfb, 0xb1, 0x8f, 0x9c, 0xd8, 0x8f, 0xbd, 0x70, + 0x54, 0x3f, 0x76, 0xed, 0x3d, 0x3e, 0x7a, 0xea, 0xde, 0xe3, 0x75, 0xb8, 0xa0, 0x5c, 0x55, 0xaf, + 0xfb, 0x81, 0x8c, 0x4a, 0x51, 0x6b, 0x57, 0xa9, 0x76, 0x51, 0x56, 0xb9, 0x80, 0x59, 0x48, 0x98, + 0x5d, 0xd7, 0xfe, 0x41, 0x01, 0xce, 0xc5, 0xcd, 0xbe, 0xe8, 0x7b, 0x4d, 0x97, 0x7b, 0x3b, 0xbd, + 0x04, 0xa3, 0xd1, 0x6e, 0x57, 0x35, 0xf6, 0x5f, 0x56, 0xe2, 0xac, 0xef, 0x76, 0x59, 0x6f, 0x3f, + 0x96, 0x51, 0x85, 0xdf, 0x5f, 0xf0, 0x4a, 0x64, 0x45, 0xcf, 0x0e, 0xd1, 0x03, 0xcf, 0x27, 0x47, + 0xf3, 0xbb, 0x7b, 0x73, 0x19, 0xf9, 0x25, 0xe6, 0x35, 0xa5, 0xe4, 0x98, 0x27, 0xf7, 0x60, 0xb2, + 0xed, 0x84, 0xd1, 0x9d, 0x6e, 0xd3, 0x89, 0xe8, 0xba, 0x2b, 0xfd, 0x88, 0x8e, 0x17, 0xc8, 0xa3, + 0x1d, 0x2e, 0x56, 0x12, 0x94, 0x30, 0x45, 0x99, 0xec, 0x00, 0x61, 0x25, 0xeb, 0x81, 0xe3, 0x85, + 0xe2, 0xab, 0x18, 0xbf, 0xe3, 0x47, 0x65, 0xe9, 0x43, 0xfb, 0x4a, 0x1f, 0x35, 0xcc, 0xe0, 0x40, + 0x9e, 0x86, 0xb1, 0x80, 0x3a, 0xa1, 0xde, 0x88, 0xf4, 0xfc, 0x47, 0x5e, 0x8a, 0x12, 0x6a, 0x4e, + 0xa8, 0xb1, 0x43, 0x26, 0xd4, 0x1f, 0x5a, 0x30, 0x19, 0x77, 0xd3, 0x43, 0x50, 0x7a, 0x3a, 0x49, + 0xa5, 0xe7, 0x46, 0x5e, 0x4b, 0xe2, 0x00, 0x3d, 0xe7, 0x4f, 0xc6, 0xcd, 0xef, 0xe3, 0xa1, 0x23, + 0x9f, 0x33, 0x23, 0x09, 0xac, 0x3c, 0xe2, 0xf9, 0x12, 0x7a, 0xe6, 0x81, 0x21, 0x04, 0x4c, 0xcb, + 0x6a, 0x4a, 0x0d, 0x4a, 0x0e, 0x7b, 0xad, 0x65, 0x29, 0xcd, 0x2a, 0x4b, 0xcb, 0x52, 0x75, 0xc8, + 0x1d, 0x78, 0xac, 0x1b, 0xf8, 0x3c, 0xc3, 0xc1, 0x12, 0x75, 0x9a, 0x6d, 0xd7, 0xa3, 0xca, 0xc0, + 0x24, 0xfc, 0x7d, 0x9e, 0xd8, 0xdf, 0x9b, 0x7b, 0x6c, 0x2d, 0x1b, 0x05, 0x07, 0xd5, 0x4d, 0xc6, + 0xc8, 0x8e, 0x1e, 0x21, 0x46, 0xf6, 0x97, 0xb4, 0x19, 0x57, 0x87, 0x63, 0x7c, 0x2a, 0xaf, 0xae, + 0xcc, 0x0a, 0xcc, 0xd0, 0x43, 0xaa, 0x2a, 0x99, 0xa2, 0x66, 0x3f, 0xd8, 0x56, 0x38, 0x76, 0x42, + 0x5b, 0x61, 0x1c, 0x81, 0x33, 0xfe, 0x5e, 0x46, 0xe0, 0x94, 0xde, 0x57, 0x11, 0x38, 0xdf, 0xb2, + 0xe0, 0x9c, 0xd3, 0x1f, 0xfb, 0x9e, 0x8f, 0xd9, 0x3a, 0x23, 0xa8, 0xbe, 0xf6, 0x84, 0x14, 0x32, + 0x2b, 0xc5, 0x00, 0x66, 0x89, 0x62, 0xbf, 0x53, 0x84, 0xe9, 0xb4, 0x92, 0x74, 0xfa, 0x41, 0xc2, + 0xbf, 0x62, 0xc1, 0xb4, 0x9a, 0xe0, 0xfa, 0xee, 0x5d, 0x1c, 0x6e, 0x56, 0x72, 0x5a, 0x57, 0x84, + 0xba, 0xa7, 0x73, 0xb7, 0xac, 0xa7, 0xb8, 0x61, 0x1f, 0x7f, 0xf2, 0x06, 0x54, 0xf4, 0x7d, 0xce, + 0x89, 0x22, 0x86, 0x79, 0x50, 0x6b, 0x35, 0x26, 0x81, 0x26, 0x3d, 0xf2, 0x8e, 0x05, 0xd0, 0x50, + 0x3b, 0x71, 0x4e, 0xf1, 0x58, 0x19, 0xda, 0x42, 0xac, 0xcf, 0xeb, 0xa2, 0x10, 0x0d, 0xc6, 0xe4, + 0x57, 0xf9, 0x4d, 0x8e, 0x1e, 0x09, 0xca, 0xe7, 0xe1, 0x13, 0x79, 0x2f, 0x45, 0xb1, 0x17, 0x8b, + 0xd6, 0xf6, 0x0c, 0x50, 0x88, 0x09, 0x21, 0xec, 0x97, 0x40, 0x7b, 0x8b, 0xb3, 0x95, 0x95, 0xfb, + 0x8b, 0xaf, 0x39, 0xd1, 0x96, 0x1c, 0x82, 0x7a, 0x65, 0xbd, 0xae, 0x00, 0x18, 0xe3, 0xd8, 0x9f, + 0x81, 0xc9, 0x57, 0x02, 0xa7, 0xbb, 0xe5, 0xf2, 0x1b, 0x13, 0x76, 0x32, 0x7f, 0x06, 0xc6, 0x9d, + 0x66, 0x33, 0x2b, 0xcd, 0x50, 0x55, 0x14, 0xa3, 0x82, 0x1f, 0xe9, 0x10, 0x6e, 0xff, 0x3b, 0x0b, + 0x48, 0x7c, 0xc7, 0xed, 0x7a, 0xad, 0x55, 0x27, 0x6a, 0x6c, 0xb1, 0x23, 0xdc, 0x16, 0x2f, 0xcd, + 0x3a, 0xc2, 0xdd, 0xd0, 0x10, 0x34, 0xb0, 0xc8, 0x5b, 0x50, 0x11, 0xff, 0x5e, 0xd7, 0x07, 0xc4, + 0xe1, 0x9d, 0xde, 0xf9, 0x9e, 0xc7, 0x65, 0x12, 0xa3, 0xf0, 0x46, 0xcc, 0x01, 0x4d, 0x76, 0xac, + 0xa9, 0x96, 0xbd, 0xcd, 0x76, 0xef, 0x41, 0x73, 0x23, 0x6e, 0xaa, 0x6e, 0xe0, 0x6f, 0xba, 0x6d, + 0x9a, 0x6e, 0xaa, 0x35, 0x51, 0x8c, 0x0a, 0x7e, 0xb4, 0xa6, 0xfa, 0xb7, 0x16, 0x9c, 0x5f, 0x0e, + 0x23, 0xd7, 0x5f, 0xa2, 0x61, 0xc4, 0x76, 0x3e, 0xb6, 0x3e, 0xf6, 0xda, 0x47, 0x09, 0xfc, 0x58, + 0x82, 0x69, 0x79, 0x03, 0xde, 0xdb, 0x08, 0x69, 0x64, 0x1c, 0x35, 0xf4, 0x3c, 0x5e, 0x4c, 0xc1, + 0xb1, 0xaf, 0x06, 0xa3, 0x22, 0xaf, 0xc2, 0x63, 0x2a, 0x85, 0x24, 0x95, 0x7a, 0x0a, 0x8e, 0x7d, + 0x35, 0xec, 0xef, 0x17, 0xe0, 0x1c, 0xff, 0x8c, 0x54, 0xd0, 0xd6, 0xd7, 0x07, 0x05, 0x6d, 0x0d, + 0x39, 0x95, 0x39, 0xaf, 0x13, 0x84, 0x6c, 0xfd, 0x4d, 0x0b, 0xa6, 0x9a, 0xc9, 0x96, 0xce, 0xc7, + 0x22, 0x98, 0xd5, 0x87, 0xc2, 0xf7, 0x31, 0x55, 0x88, 0x69, 0xfe, 0xe4, 0xd7, 0x2c, 0x98, 0x4a, + 0x8a, 0xa9, 0x56, 0xf7, 0x53, 0x68, 0x24, 0x1d, 0xac, 0x90, 0x2c, 0x0f, 0x31, 0x2d, 0x82, 0xfd, + 0xbd, 0x11, 0xd9, 0xa5, 0xa7, 0x11, 0x91, 0x44, 0xee, 0x43, 0x39, 0x6a, 0x87, 0xa2, 0x50, 0x7e, + 0xed, 0x90, 0x87, 0xd6, 0xf5, 0x95, 0xba, 0x70, 0x75, 0x89, 0xf5, 0x4a, 0x59, 0xc2, 0xf4, 0x63, + 0xc5, 0x8b, 0x33, 0x6e, 0x74, 0x25, 0xe3, 0x5c, 0x4e, 0xcb, 0xeb, 0x8b, 0x6b, 0x69, 0xc6, 0xb2, + 0x84, 0x31, 0x56, 0xbc, 0xec, 0xdf, 0xb2, 0xa0, 0x7c, 0xd3, 0x57, 0xeb, 0xc8, 0xcf, 0xe5, 0x60, + 0x8b, 0xd2, 0x2a, 0xab, 0x56, 0x5a, 0xe2, 0x53, 0xd0, 0xcb, 0x09, 0x4b, 0xd4, 0x93, 0x06, 0xed, + 0x79, 0x9e, 0x6d, 0x91, 0x91, 0xba, 0xe9, 0x6f, 0x0c, 0x34, 0x5c, 0xff, 0x7a, 0x11, 0xce, 0xbc, + 0xea, 0xec, 0x52, 0x2f, 0x72, 0x8e, 0xbf, 0x49, 0xbc, 0x00, 0x15, 0xa7, 0xcb, 0x6f, 0x51, 0x8d, + 0x63, 0x48, 0x6c, 0xdc, 0x89, 0x41, 0x68, 0xe2, 0xc5, 0x0b, 0x9a, 0x08, 0x0f, 0xca, 0x5a, 0x8a, + 0x16, 0x53, 0x70, 0xec, 0xab, 0x41, 0x6e, 0x02, 0x91, 0x21, 0xf5, 0xd5, 0x46, 0xc3, 0xef, 0x79, + 0x62, 0x49, 0x13, 0x76, 0x1f, 0x7d, 0x1e, 0x5e, 0xed, 0xc3, 0xc0, 0x8c, 0x5a, 0xe4, 0xd3, 0x30, + 0xd3, 0xe0, 0x94, 0xe5, 0xe9, 0xc8, 0xa4, 0x28, 0x4e, 0xc8, 0x3a, 0xe0, 0x66, 0x71, 0x00, 0x1e, + 0x0e, 0xa4, 0xc0, 0x24, 0x0d, 0x23, 0x3f, 0x70, 0x5a, 0xd4, 0xa4, 0x3b, 0x96, 0x94, 0xb4, 0xde, + 0x87, 0x81, 0x19, 0xb5, 0xc8, 0xe7, 0xa1, 0x1c, 0x6d, 0x05, 0x34, 0xdc, 0xf2, 0xdb, 0x4d, 0x69, + 0xde, 0x1d, 0xd2, 0x18, 0x28, 0x7b, 0x7f, 0x5d, 0x51, 0x35, 0x86, 0xb7, 0x2a, 0xc2, 0x98, 0x27, + 0x09, 0x60, 0x2c, 0x6c, 0xf8, 0x5d, 0x1a, 0xca, 0x53, 0xc5, 0xcd, 0x5c, 0xb8, 0x73, 0xe3, 0x96, + 0x61, 0x86, 0xe4, 0x1c, 0x50, 0x72, 0xb2, 0x7f, 0x77, 0x04, 0x26, 0x4c, 0xc4, 0x23, 0xac, 0x4d, + 0x5f, 0xb2, 0x60, 0xa2, 0xe1, 0x7b, 0x51, 0xe0, 0xb7, 0xe3, 0x54, 0x11, 0xc3, 0x6b, 0x14, 0x8c, + 0xd4, 0x12, 0x8d, 0x1c, 0xb7, 0x6d, 0x58, 0xeb, 0x0c, 0x36, 0x98, 0x60, 0x4a, 0xbe, 0x66, 0xc1, + 0x54, 0xec, 0x92, 0x19, 0xdb, 0xfa, 0x72, 0x15, 0x44, 0x2f, 0xf5, 0xd7, 0x92, 0x9c, 0x30, 0xcd, + 0xda, 0xde, 0x80, 0xe9, 0x74, 0x6f, 0xb3, 0xa6, 0xec, 0x3a, 0x72, 0xae, 0x17, 0xe2, 0xa6, 0x5c, + 0x73, 0xc2, 0x10, 0x39, 0x84, 0x3c, 0x0b, 0xa5, 0x8e, 0x13, 0xb4, 0x5c, 0xcf, 0x69, 0xf3, 0x56, + 0x2c, 0x18, 0x0b, 0x92, 0x2c, 0x47, 0x8d, 0x61, 0x7f, 0x18, 0x26, 0x56, 0x1d, 0xaf, 0x45, 0x9b, + 0x72, 0x1d, 0x3e, 0x3c, 0x26, 0xf6, 0x8f, 0x47, 0xa1, 0x62, 0x1c, 0x1f, 0x4f, 0xff, 0x9c, 0x95, + 0x48, 0x81, 0x54, 0xc8, 0x31, 0x05, 0xd2, 0x27, 0x01, 0x36, 0x5d, 0xcf, 0x0d, 0xb7, 0x4e, 0x98, + 0x5c, 0x89, 0x7b, 0x05, 0x5c, 0xd7, 0x14, 0xd0, 0xa0, 0x16, 0x5f, 0xbd, 0x16, 0x0f, 0xc8, 0x53, + 0xf8, 0x8e, 0x65, 0x6c, 0x37, 0x63, 0x79, 0xb8, 0x9a, 0x18, 0x1d, 0x33, 0xaf, 0xb6, 0x1f, 0x71, + 0x2b, 0x76, 0xd0, 0xae, 0xb4, 0x0e, 0xa5, 0x80, 0x86, 0xbd, 0x0e, 0x3d, 0x51, 0x1a, 0x24, 0xee, + 0xf4, 0x83, 0xb2, 0x3e, 0x6a, 0x4a, 0xb3, 0x2f, 0xc1, 0x99, 0x84, 0x08, 0xc7, 0xba, 0x61, 0xf2, + 0x21, 0xd3, 0x46, 0x71, 0x92, 0xfb, 0x26, 0xd6, 0x17, 0x6d, 0x23, 0xfd, 0x91, 0xee, 0x0b, 0xe1, + 0xda, 0x25, 0x60, 0xf6, 0x8f, 0xc7, 0x40, 0x7a, 0x4f, 0x1c, 0x61, 0xb9, 0x32, 0xef, 0x4c, 0x47, + 0x4e, 0x70, 0x67, 0x7a, 0x13, 0x26, 0x5c, 0xcf, 0x8d, 0x5c, 0xa7, 0xcd, 0xed, 0x4f, 0x72, 0x3b, + 0x55, 0x61, 0x00, 0x13, 0xcb, 0x06, 0x2c, 0x83, 0x4e, 0xa2, 0x2e, 0x79, 0x0d, 0x8a, 0x7c, 0xbf, + 0x91, 0x03, 0xf8, 0xf8, 0x2e, 0x1e, 0xdc, 0xbb, 0x47, 0xc4, 0x06, 0x0a, 0x4a, 0xfc, 0xf0, 0x21, + 0xf2, 0x3f, 0xe9, 0xe3, 0xb7, 0x1c, 0xc7, 0xf1, 0xe1, 0x23, 0x05, 0xc7, 0xbe, 0x1a, 0x8c, 0xca, + 0xa6, 0xe3, 0xb6, 0x7b, 0x01, 0x8d, 0xa9, 0x8c, 0x25, 0xa9, 0x5c, 0x4f, 0xc1, 0xb1, 0xaf, 0x06, + 0xd9, 0x84, 0x09, 0x59, 0x26, 0x1c, 0xf6, 0xc6, 0x4f, 0xf8, 0x95, 0xdc, 0x31, 0xf3, 0xba, 0x41, + 0x09, 0x13, 0x74, 0x49, 0x0f, 0xce, 0xba, 0x5e, 0xc3, 0xf7, 0x1a, 0xed, 0x5e, 0xe8, 0xee, 0xd0, + 0x38, 0x30, 0xef, 0x24, 0xcc, 0x2e, 0xec, 0xef, 0xcd, 0x9d, 0x5d, 0x4e, 0x93, 0xc3, 0x7e, 0x0e, + 0xe4, 0x0b, 0x16, 0x5c, 0x68, 0xf8, 0x5e, 0xc8, 0xf3, 0x87, 0xec, 0xd0, 0x6b, 0x41, 0xe0, 0x07, + 0x82, 0x77, 0xf9, 0x84, 0xbc, 0xb9, 0xd9, 0x73, 0x31, 0x8b, 0x24, 0x66, 0x73, 0x22, 0x6f, 0x42, + 0xa9, 0x1b, 0xf8, 0x3b, 0x6e, 0x93, 0x06, 0xd2, 0xf9, 0x73, 0x25, 0x8f, 0xa4, 0x4a, 0x6b, 0x92, + 0x66, 0xbc, 0xf4, 0xa8, 0x12, 0xd4, 0xfc, 0xec, 0xff, 0x5b, 0x81, 0xc9, 0x24, 0x3a, 0xf9, 0x05, + 0x80, 0x6e, 0xe0, 0x77, 0x68, 0xb4, 0x45, 0x75, 0x80, 0xd5, 0xad, 0x61, 0xd3, 0xe6, 0x28, 0x7a, + 0xca, 0x61, 0x8a, 0x2d, 0x17, 0x71, 0x29, 0x1a, 0x1c, 0x49, 0x00, 0xe3, 0xdb, 0x62, 0xdb, 0x95, + 0x5a, 0xc8, 0xab, 0xb9, 0xe8, 0x4c, 0x92, 0x33, 0x8f, 0x0c, 0x92, 0x45, 0xa8, 0x18, 0x91, 0x0d, + 0x28, 0xdc, 0xa7, 0x1b, 0xf9, 0xe4, 0x6c, 0xb8, 0x4b, 0xe5, 0x69, 0xa6, 0x36, 0xbe, 0xbf, 0x37, + 0x57, 0xb8, 0x4b, 0x37, 0x90, 0x11, 0x67, 0xdf, 0xd5, 0x14, 0x5e, 0x13, 0x72, 0xa9, 0x78, 0x35, + 0x47, 0x17, 0x0c, 0xf1, 0x5d, 0xb2, 0x08, 0x15, 0x23, 0xf2, 0x26, 0x94, 0xef, 0x3b, 0x3b, 0x74, + 0x33, 0xf0, 0xbd, 0x48, 0x7a, 0xe9, 0x0d, 0x19, 0xd6, 0x72, 0x57, 0x91, 0x93, 0x7c, 0xf9, 0xf6, + 0xae, 0x0b, 0x31, 0x66, 0x47, 0x76, 0xa0, 0xe4, 0xd1, 0xfb, 0x48, 0xdb, 0x6e, 0x23, 0x9f, 0x30, + 0x92, 0x5b, 0x92, 0x9a, 0xe4, 0xcc, 0xf7, 0x3d, 0x55, 0x86, 0x9a, 0x17, 0xeb, 0xcb, 0x7b, 0xfe, + 0x46, 0x3e, 0xce, 0x1c, 0xfa, 0x64, 0x2a, 0xfa, 0xf2, 0xa6, 0xbf, 0x81, 0x8c, 0x38, 0x9b, 0x23, + 0x0d, 0xed, 0x22, 0x26, 0x97, 0xa9, 0x5b, 0xf9, 0xba, 0xc6, 0x89, 0x39, 0x12, 0x97, 0xa2, 0xc1, + 0x91, 0xb5, 0x6d, 0x4b, 0x1a, 0x2b, 0xe5, 0x42, 0x35, 0x64, 0xdb, 0x26, 0x4d, 0x9f, 0xa2, 0x6d, + 0x55, 0x19, 0x6a, 0x5e, 0x8c, 0xaf, 0x2b, 0x2d, 0x7f, 0xf9, 0x2c, 0x55, 0x49, 0x3b, 0xa2, 0xe0, + 0xab, 0xca, 0x50, 0xf3, 0x62, 0xed, 0x1d, 0x6e, 0xef, 0xde, 0x77, 0xda, 0xdb, 0xae, 0xd7, 0x92, + 0x01, 0xc3, 0xc3, 0x06, 0xd8, 0x6d, 0xef, 0xde, 0x15, 0xf4, 0xcc, 0xf6, 0x8e, 0x4b, 0xd1, 0xe0, + 0x48, 0xfe, 0x9e, 0xa5, 0x83, 0x80, 0x26, 0xf2, 0x70, 0x9f, 0x4a, 0x2e, 0xb9, 0x32, 0x26, 0x48, + 0x28, 0x8a, 0x3f, 0xad, 0x3d, 0x3e, 0x79, 0xe1, 0x57, 0xff, 0x68, 0x6e, 0x86, 0x7a, 0x0d, 0xbf, + 0xe9, 0x7a, 0xad, 0x85, 0x7b, 0xa1, 0xef, 0xcd, 0xa3, 0x73, 0x5f, 0xe9, 0xe8, 0x52, 0xa6, 0xd9, + 0x8f, 0x42, 0xc5, 0x20, 0x71, 0x98, 0xa2, 0x37, 0x61, 0x2a, 0x7a, 0xbf, 0x35, 0x06, 0x13, 0x66, + 0x06, 0xd4, 0x23, 0x68, 0x5f, 0xfa, 0xc4, 0x31, 0x72, 0x9c, 0x13, 0x07, 0x3b, 0x62, 0x1a, 0x17, + 0x5c, 0xca, 0xbc, 0xb5, 0x9c, 0x9b, 0xc2, 0x1d, 0x1f, 0x31, 0x8d, 0xc2, 0x10, 0x13, 0x4c, 0x8f, + 0xe1, 0xf3, 0xc2, 0xd4, 0x56, 0xa1, 0xd8, 0x15, 0x93, 0x6a, 0x6b, 0x42, 0x55, 0xbb, 0x0a, 0x10, + 0xa7, 0xea, 0x94, 0x17, 0x9f, 0x5a, 0x1f, 0x36, 0x52, 0x88, 0x1a, 0x58, 0xe4, 0x69, 0x18, 0x63, + 0xaa, 0x0f, 0x6d, 0xca, 0x7c, 0x06, 0xfa, 0x1c, 0x7f, 0x9d, 0x97, 0xa2, 0x84, 0x92, 0x17, 0x99, + 0x96, 0x1a, 0x2b, 0x2c, 0x32, 0x4d, 0xc1, 0xf9, 0x58, 0x4b, 0x8d, 0x61, 0x98, 0xc0, 0x64, 0xa2, + 0x53, 0xa6, 0x5f, 0xf0, 0xb5, 0xc1, 0x10, 0x9d, 0x2b, 0x1d, 0x28, 0x60, 0xdc, 0xae, 0x94, 0xd2, + 0x47, 0xf8, 0x9c, 0x2e, 0x1a, 0x76, 0xa5, 0x14, 0x1c, 0xfb, 0x6a, 0xb0, 0x8f, 0x91, 0x77, 0xb6, + 0x15, 0xe1, 0xaa, 0x3d, 0xe0, 0xb6, 0xf5, 0x17, 0xcd, 0xb3, 0x56, 0x8e, 0x73, 0x48, 0x8c, 0xda, + 0xa3, 0x1f, 0xb6, 0x86, 0x3b, 0x16, 0x7d, 0xd9, 0x82, 0xc9, 0xe4, 0x36, 0x94, 0xf7, 0xd5, 0x07, + 0xf9, 0x4b, 0x30, 0x1e, 0xb9, 0x1d, 0xea, 0xf7, 0xc4, 0x61, 0xbb, 0x20, 0x76, 0xf6, 0x75, 0x51, + 0x84, 0x0a, 0x66, 0xff, 0xc3, 0x31, 0x38, 0x77, 0xab, 0xe5, 0x7a, 0xe9, 0xac, 0x74, 0x59, 0x4f, + 0x50, 0x58, 0xc7, 0x7e, 0x82, 0x42, 0x47, 0x0d, 0xca, 0x07, 0x1e, 0xb2, 0xa3, 0x06, 0xd5, 0x6b, + 0x1b, 0x49, 0x5c, 0xf2, 0x87, 0x16, 0x3c, 0xe9, 0x34, 0xc5, 0xf9, 0xc1, 0x69, 0xcb, 0x52, 0x23, + 0x73, 0xba, 0x9c, 0xf9, 0xe1, 0x90, 0xda, 0x40, 0xff, 0xc7, 0xcf, 0x57, 0x0f, 0xe0, 0x2a, 0x46, + 0xc6, 0x4f, 0xc9, 0x2f, 0x78, 0xf2, 0x20, 0x54, 0x3c, 0x50, 0x7c, 0xf2, 0x57, 0x61, 0x2a, 0xf1, + 0xc1, 0xd2, 0x62, 0x5e, 0x16, 0x17, 0x1b, 0xf5, 0x24, 0x08, 0xd3, 0xb8, 0xe4, 0x7b, 0x16, 0xcc, + 0x08, 0xf3, 0x6c, 0x46, 0xd3, 0x88, 0x1b, 0x5d, 0x3f, 0xff, 0xa6, 0x59, 0x1c, 0xc0, 0x51, 0x34, + 0x4b, 0x6c, 0xaf, 0x1d, 0x80, 0x86, 0x03, 0x45, 0x9e, 0xbd, 0x0d, 0x1f, 0x38, 0xb4, 0xdd, 0x8f, + 0x95, 0x67, 0xff, 0x55, 0xb8, 0x78, 0xa0, 0xb4, 0xc7, 0x9a, 0xb1, 0xdf, 0xb5, 0x60, 0xc2, 0xcc, + 0xae, 0x45, 0x9e, 0x85, 0x52, 0xe4, 0x6f, 0x53, 0xef, 0x4e, 0xa0, 0xfc, 0xad, 0xf5, 0x6a, 0xb1, + 0xce, 0xcb, 0x71, 0x05, 0x35, 0x06, 0xc3, 0x6e, 0xb4, 0x5d, 0xea, 0x45, 0xcb, 0x4d, 0x39, 0x07, + 0x34, 0xf6, 0xa2, 0x28, 0x5f, 0x42, 0x8d, 0x21, 0x1c, 0x15, 0xd9, 0x6f, 0xe1, 0xf1, 0x2b, 0xed, + 0x0a, 0x86, 0xa3, 0x62, 0x0c, 0xc3, 0x04, 0x26, 0xb1, 0xb5, 0x9d, 0x78, 0x34, 0xbe, 0x1c, 0x4a, + 0xd9, 0x75, 0xbf, 0x6d, 0x41, 0x59, 0xdc, 0x73, 0x20, 0xdd, 0x4c, 0x79, 0x48, 0xa7, 0x2c, 0x31, + 0xd5, 0xb5, 0xe5, 0x2c, 0x0f, 0xe9, 0xcb, 0x30, 0xba, 0xed, 0x7a, 0xea, 0x4b, 0xf4, 0xde, 0xfe, + 0xaa, 0xeb, 0x35, 0x91, 0x43, 0xf4, 0xee, 0x5f, 0x18, 0xb8, 0xfb, 0x2f, 0x40, 0x59, 0x7b, 0xef, + 0xc8, 0x3d, 0x34, 0x76, 0x74, 0x56, 0x00, 0x8c, 0x71, 0xec, 0xdf, 0xb0, 0x60, 0x92, 0x07, 0xfc, + 0xc7, 0x46, 0x85, 0x17, 0xb4, 0x43, 0x9d, 0x90, 0xfb, 0x62, 0xd2, 0xa1, 0xee, 0xdd, 0xbd, 0xb9, + 0x8a, 0x48, 0x11, 0x90, 0xf4, 0xaf, 0xfb, 0x94, 0xb4, 0x44, 0x72, 0xb7, 0xbf, 0x91, 0x63, 0x1b, + 0xca, 0x62, 0x31, 0x15, 0x11, 0x8c, 0xe9, 0xd9, 0x6f, 0xc1, 0x84, 0x19, 0x4b, 0x47, 0x5e, 0x80, + 0x4a, 0xd7, 0xf5, 0x5a, 0xc9, 0x98, 0x6b, 0x7d, 0x5b, 0xb3, 0x16, 0x83, 0xd0, 0xc4, 0xe3, 0xd5, + 0xfc, 0xb8, 0x5a, 0xea, 0x92, 0x67, 0xcd, 0x37, 0xab, 0xc5, 0x7f, 0x6c, 0x0f, 0x20, 0x0e, 0x0c, + 0x3f, 0x92, 0x05, 0x6c, 0x4c, 0x5c, 0xa0, 0x08, 0x8d, 0x8e, 0x27, 0xf9, 0x18, 0x13, 0x23, 0xfc, + 0xdd, 0xbd, 0x83, 0x34, 0x46, 0x51, 0x8b, 0x3f, 0x21, 0x92, 0x11, 0x23, 0x9a, 0xfb, 0x13, 0x22, + 0x19, 0x3c, 0xde, 0xbb, 0x27, 0x44, 0xb2, 0x84, 0xf9, 0xf3, 0xf5, 0x84, 0xc8, 0x27, 0xe0, 0xb8, + 0xd9, 0x84, 0x99, 0x82, 0x76, 0xdf, 0xcc, 0xfa, 0xa1, 0x5b, 0x5c, 0xa6, 0xfd, 0x90, 0x50, 0xfb, + 0xf7, 0x46, 0x61, 0x3a, 0x6d, 0xa7, 0xc9, 0xdb, 0x05, 0x86, 0x7c, 0xcd, 0x82, 0x49, 0x27, 0x91, + 0xb9, 0x31, 0xa7, 0xf7, 0xc8, 0x12, 0x34, 0x8d, 0xcc, 0x81, 0x89, 0x72, 0x4c, 0xf1, 0x36, 0x75, + 0xad, 0xd1, 0xc1, 0xba, 0x16, 0xdb, 0x04, 0x5c, 0xae, 0xf6, 0x06, 0x54, 0xba, 0x73, 0x4f, 0xc7, + 0xe6, 0x66, 0x51, 0x8e, 0x1a, 0x83, 0x3c, 0x80, 0x71, 0xe1, 0x2c, 0xa3, 0xbc, 0xa2, 0x56, 0x73, + 0xb2, 0x27, 0x09, 0x7f, 0x9c, 0xb8, 0x0b, 0xc4, 0xff, 0x10, 0x15, 0x3b, 0xa6, 0x63, 0x43, 0xe0, + 0x78, 0x2d, 0xca, 0xdb, 0x5c, 0x5a, 0x40, 0x5e, 0xcf, 0xcb, 0x74, 0x87, 0x9a, 0x72, 0x35, 0x68, + 0x85, 0x32, 0x26, 0x53, 0x97, 0xa1, 0xc1, 0xd9, 0xfe, 0x15, 0x0b, 0x66, 0x06, 0x55, 0x64, 0x03, + 0x85, 0xaf, 0xba, 0x72, 0x44, 0x19, 0xa9, 0x20, 0x9c, 0x20, 0x42, 0x01, 0x23, 0x17, 0xa1, 0x40, + 0xf5, 0x46, 0xa5, 0xf3, 0x56, 0x5e, 0xf3, 0x9a, 0xc8, 0xca, 0xc9, 0x55, 0x18, 0x0d, 0x23, 0xda, + 0x4d, 0xc5, 0x3b, 0x8c, 0xb2, 0xc5, 0x33, 0xc3, 0x60, 0xcf, 0x71, 0xed, 0x0f, 0xc3, 0x31, 0x93, + 0x4f, 0xdb, 0xd7, 0x80, 0xa0, 0xdf, 0x6e, 0x6f, 0x38, 0x8d, 0xed, 0xbb, 0xae, 0xd7, 0xf4, 0xef, + 0xf3, 0x8d, 0x61, 0x01, 0xca, 0x81, 0x8c, 0x3f, 0x0f, 0xe5, 0x9c, 0xd2, 0x3b, 0x8b, 0x0a, 0x4c, + 0x0f, 0x31, 0xc6, 0xb1, 0xbf, 0x37, 0x02, 0xe3, 0x32, 0x59, 0xc2, 0x43, 0x08, 0xb6, 0xd9, 0x4e, + 0xb8, 0x38, 0x2c, 0xe7, 0x92, 0xe3, 0x61, 0x60, 0xa4, 0x4d, 0x98, 0x8a, 0xb4, 0x79, 0x35, 0x1f, + 0x76, 0x07, 0x87, 0xd9, 0x7c, 0xa7, 0x08, 0x53, 0xa9, 0xe4, 0x13, 0xa9, 0x3c, 0xf5, 0xd6, 0x7b, + 0x92, 0xa7, 0x9e, 0x84, 0x89, 0xb7, 0x0a, 0xf2, 0x73, 0xcd, 0xfd, 0xc9, 0xb3, 0x05, 0x79, 0x39, + 0x4d, 0x17, 0xdf, 0x3f, 0x4e, 0xd3, 0xff, 0xcd, 0x82, 0xc7, 0x07, 0xa6, 0x50, 0xe1, 0xc9, 0x08, + 0x83, 0x24, 0x54, 0xae, 0x17, 0x39, 0xa7, 0xa5, 0xd2, 0xee, 0x10, 0xe9, 0xfc, 0x71, 0x69, 0xf6, + 0xe4, 0x79, 0x98, 0xe0, 0x6b, 0x33, 0x5b, 0x39, 0xd9, 0xda, 0x2b, 0x6e, 0x73, 0xf9, 0xbd, 0x5e, + 0xdd, 0x28, 0xc7, 0x04, 0x96, 0xfd, 0x2d, 0x0b, 0x66, 0x06, 0xa5, 0xa6, 0x3b, 0x82, 0x9e, 0xfb, + 0x57, 0x52, 0xc1, 0x4a, 0x73, 0x7d, 0xc1, 0x4a, 0x29, 0x6b, 0xa3, 0x8a, 0x4b, 0x32, 0x0c, 0x7d, + 0x85, 0x43, 0x62, 0x71, 0x7e, 0xbf, 0x00, 0xd3, 0x52, 0xc4, 0xf8, 0x88, 0xf2, 0x62, 0x22, 0xc4, + 0xea, 0xa7, 0x52, 0x21, 0x56, 0xe7, 0xd3, 0xf8, 0x3f, 0x89, 0xaf, 0x7a, 0x7f, 0xc5, 0x57, 0x7d, + 0xb5, 0x08, 0x17, 0x32, 0x93, 0xc0, 0x91, 0xaf, 0x64, 0xec, 0x14, 0x77, 0x73, 0xce, 0x36, 0xa7, + 0x83, 0xc0, 0x4f, 0x37, 0x28, 0xe9, 0xd7, 0xcc, 0x60, 0x20, 0xb1, 0xfa, 0x6f, 0x9e, 0x42, 0xde, + 0xbc, 0xe3, 0xc6, 0x05, 0x3d, 0xdc, 0x77, 0xfc, 0xfe, 0x1c, 0x2c, 0xf5, 0x5f, 0x2d, 0xc0, 0x95, + 0xa3, 0xb6, 0xec, 0xfb, 0x34, 0x90, 0x36, 0x4c, 0x04, 0xd2, 0x3e, 0x24, 0xd5, 0xe6, 0x54, 0x62, + 0x6a, 0xff, 0xc1, 0xa8, 0xde, 0x77, 0xfb, 0x27, 0xec, 0x91, 0x2c, 0x2f, 0xe3, 0x4c, 0xf5, 0x55, + 0xaf, 0x1d, 0xc4, 0x7b, 0xc3, 0x78, 0x5d, 0x14, 0xbf, 0xbb, 0x37, 0x77, 0x36, 0xce, 0x96, 0x24, + 0x0b, 0x51, 0x55, 0x22, 0x57, 0xa0, 0x14, 0x08, 0xa8, 0x0a, 0x1d, 0x94, 0x0e, 0x5c, 0xa2, 0x0c, + 0x35, 0x94, 0x7c, 0xde, 0x38, 0x2b, 0x8c, 0x9e, 0x56, 0x52, 0xb0, 0x83, 0xfc, 0xd2, 0xde, 0x80, + 0x52, 0xa8, 0x52, 0xf2, 0x8b, 0xe9, 0xf4, 0xdc, 0x11, 0x23, 0x52, 0x9d, 0x0d, 0xda, 0x56, 0xf9, + 0xf9, 0xc5, 0xf7, 0xe9, 0xec, 0xfd, 0x9a, 0x24, 0xb1, 0xb5, 0x65, 0x42, 0xdc, 0x9b, 0x41, 0xbf, + 0x55, 0x82, 0x44, 0x30, 0x2e, 0xdf, 0xe5, 0x96, 0xc7, 0xd9, 0xd5, 0x9c, 0x42, 0xbb, 0xa4, 0xe3, + 0x3f, 0x3f, 0xf0, 0x2b, 0x8b, 0x9c, 0x62, 0x65, 0xff, 0xc0, 0x82, 0x8a, 0x1c, 0x23, 0x0f, 0x21, + 0x34, 0xf7, 0x5e, 0x32, 0x34, 0xf7, 0x5a, 0x2e, 0x4b, 0xf8, 0x80, 0xb8, 0xdc, 0x7b, 0x30, 0x61, + 0xa6, 0x63, 0x25, 0x9f, 0x34, 0xb6, 0x20, 0x6b, 0x98, 0x94, 0x83, 0x6a, 0x93, 0x8a, 0xb7, 0x27, + 0xfb, 0x9f, 0x96, 0x75, 0x2b, 0xf2, 0x83, 0xb3, 0x39, 0xf2, 0xad, 0x03, 0x47, 0xbe, 0x39, 0xf0, + 0x46, 0xf2, 0x1f, 0x78, 0xaf, 0x41, 0x49, 0x2d, 0x8b, 0x52, 0x9b, 0x7a, 0xca, 0x8c, 0x04, 0x60, + 0x2a, 0x19, 0x23, 0x66, 0x4c, 0x17, 0x7e, 0x00, 0x8e, 0xef, 0x09, 0xd4, 0x72, 0xad, 0xc9, 0x90, + 0x37, 0xa1, 0x72, 0xdf, 0x0f, 0xb6, 0xdb, 0xbe, 0xc3, 0xdf, 0x41, 0x81, 0x3c, 0x9c, 0x4f, 0xb4, + 0xad, 0x5f, 0x84, 0x63, 0xdd, 0x8d, 0xe9, 0xa3, 0xc9, 0x8c, 0x54, 0x61, 0xaa, 0xe3, 0x7a, 0x48, + 0x9d, 0xa6, 0x8e, 0xc0, 0x1d, 0x15, 0x6f, 0x10, 0x28, 0xdd, 0x7e, 0x35, 0x09, 0xc6, 0x34, 0x3e, + 0xb7, 0xcb, 0x05, 0x09, 0x53, 0x87, 0x4c, 0x34, 0xbe, 0x36, 0xfc, 0x60, 0x4c, 0x9a, 0x4f, 0x44, + 0x3c, 0x52, 0xb2, 0x1c, 0x53, 0xbc, 0xc9, 0xe7, 0xa0, 0x14, 0xaa, 0x17, 0x6f, 0x8b, 0x39, 0x9e, + 0x7a, 0xf4, 0xab, 0xb7, 0xba, 0x2b, 0xf5, 0xb3, 0xb7, 0x9a, 0x21, 0x59, 0x81, 0xf3, 0xca, 0x76, + 0x93, 0x78, 0xbc, 0x73, 0x2c, 0x4e, 0x96, 0x87, 0x19, 0x70, 0xcc, 0xac, 0xc5, 0x74, 0x5b, 0x9e, + 0xe6, 0x58, 0x5c, 0xf6, 0x1b, 0xf7, 0xe3, 0x7c, 0xfe, 0x35, 0x51, 0x42, 0x0f, 0x0a, 0x30, 0x2f, + 0x0d, 0x11, 0x60, 0x5e, 0x87, 0x0b, 0x69, 0x10, 0xcf, 0x82, 0xc8, 0x13, 0x2f, 0x1a, 0x5b, 0xe8, + 0x5a, 0x16, 0x12, 0x66, 0xd7, 0x25, 0x77, 0xa1, 0x1c, 0x50, 0x7e, 0xca, 0xab, 0x2a, 0x3f, 0xc9, + 0x63, 0x7b, 0x84, 0xa3, 0x22, 0x80, 0x31, 0x2d, 0xd6, 0xef, 0x4e, 0xf2, 0x55, 0x80, 0xd7, 0x72, + 0x7c, 0x12, 0x5f, 0xf6, 0xfd, 0x80, 0xec, 0xa4, 0xf6, 0xbf, 0x9f, 0x82, 0x33, 0x09, 0x03, 0x14, + 0x79, 0x0a, 0x8a, 0x3c, 0x2d, 0x24, 0x5f, 0xad, 0x4a, 0xf1, 0x8a, 0x2a, 0x1a, 0x47, 0xc0, 0xc8, + 0x2f, 0x5b, 0x30, 0xd5, 0x4d, 0x5c, 0x6f, 0xa9, 0x85, 0x7c, 0x48, 0x9b, 0x76, 0xf2, 0xce, 0xcc, + 0x78, 0x4f, 0x27, 0xc9, 0x0c, 0xd3, 0xdc, 0xd9, 0x7a, 0x20, 0xc3, 0x2a, 0xda, 0x34, 0xe0, 0xd8, + 0x52, 0xd1, 0xd3, 0x24, 0x16, 0x93, 0x60, 0x4c, 0xe3, 0xb3, 0x1e, 0xe6, 0x5f, 0x37, 0xcc, 0xb3, + 0xc7, 0x55, 0x45, 0x00, 0x63, 0x5a, 0xe4, 0x65, 0x98, 0x94, 0xc9, 0xe0, 0xd7, 0xfc, 0xe6, 0x0d, + 0x27, 0xdc, 0x92, 0x47, 0x3e, 0x7d, 0x44, 0x5d, 0x4c, 0x40, 0x31, 0x85, 0xcd, 0xbf, 0x2d, 0xce, + 0xb8, 0xcf, 0x09, 0x8c, 0x25, 0x9f, 0x1b, 0x5a, 0x4c, 0x82, 0x31, 0x8d, 0x4f, 0x9e, 0x35, 0xb6, + 0x21, 0xe1, 0x80, 0xa3, 0x57, 0x83, 0x8c, 0xad, 0xa8, 0x0a, 0x53, 0x3d, 0x7e, 0x42, 0x6e, 0x2a, + 0xa0, 0x9c, 0x8f, 0x9a, 0xe1, 0x9d, 0x24, 0x18, 0xd3, 0xf8, 0xe4, 0x25, 0x38, 0x13, 0xb0, 0xc5, + 0x56, 0x13, 0x10, 0x5e, 0x39, 0xda, 0x99, 0x02, 0x4d, 0x20, 0x26, 0x71, 0xc9, 0x2b, 0x70, 0x36, + 0x4e, 0x18, 0xac, 0x08, 0x08, 0x37, 0x1d, 0x9d, 0xbd, 0xb2, 0x9a, 0x46, 0xc0, 0xfe, 0x3a, 0xe4, + 0xaf, 0xc3, 0xb4, 0xd1, 0x12, 0xcb, 0x5e, 0x93, 0x3e, 0x90, 0x49, 0x5d, 0xf9, 0xf3, 0x79, 0x8b, + 0x29, 0x18, 0xf6, 0x61, 0x93, 0x8f, 0xc1, 0x64, 0xc3, 0x6f, 0xb7, 0xf9, 0x1a, 0x27, 0x9e, 0xba, + 0x11, 0xd9, 0x5b, 0x45, 0x9e, 0xdb, 0x04, 0x04, 0x53, 0x98, 0xe4, 0x26, 0x10, 0x7f, 0x83, 0xa9, + 0x57, 0xb4, 0xf9, 0x0a, 0xf5, 0xa8, 0xd4, 0x38, 0xce, 0x24, 0x83, 0xba, 0x6e, 0xf7, 0x61, 0x60, + 0x46, 0x2d, 0x9e, 0xfc, 0xd2, 0x08, 0x82, 0x9f, 0xcc, 0x23, 0xdd, 0x7e, 0xda, 0x9e, 0x73, 0x68, + 0x04, 0x7c, 0x00, 0x63, 0xc2, 0x23, 0x22, 0x9f, 0x34, 0xae, 0xe6, 0xab, 0x17, 0xf1, 0x1e, 0x21, + 0x4a, 0x51, 0x72, 0x22, 0xbf, 0x00, 0xe5, 0x0d, 0xf5, 0x04, 0x12, 0xcf, 0xdd, 0x3a, 0xf4, 0xbe, + 0x98, 0x7a, 0xcd, 0x2b, 0xb6, 0x57, 0x68, 0x00, 0xc6, 0x2c, 0xc9, 0xd3, 0x50, 0xb9, 0xb1, 0x56, + 0xd5, 0xa3, 0xf0, 0x2c, 0xef, 0xfd, 0x51, 0x56, 0x05, 0x4d, 0x00, 0x9b, 0x61, 0x5a, 0x7d, 0x23, + 0x49, 0xa7, 0x89, 0x0c, 0x6d, 0x8c, 0x61, 0x73, 0x17, 0x19, 0xac, 0xcf, 0x9c, 0x4b, 0x61, 0xcb, + 0x72, 0xd4, 0x18, 0xe4, 0x0d, 0xa8, 0xc8, 0xfd, 0x82, 0xaf, 0x4d, 0xe7, 0x4f, 0x96, 0x60, 0x01, + 0x63, 0x12, 0x68, 0xd2, 0xe3, 0xd7, 0xf7, 0xfc, 0x65, 0x18, 0x7a, 0xbd, 0xd7, 0x6e, 0xcf, 0x5c, + 0xe0, 0xeb, 0x66, 0x7c, 0x7d, 0x1f, 0x83, 0xd0, 0xc4, 0x23, 0xcf, 0x29, 0x97, 0xc8, 0x47, 0x13, + 0xfe, 0x0c, 0xda, 0x25, 0x52, 0x2b, 0xdd, 0x03, 0x62, 0xb0, 0x1e, 0x3b, 0xc4, 0x17, 0x71, 0x03, + 0x66, 0x95, 0xc6, 0xd7, 0x3f, 0x49, 0x66, 0x66, 0x12, 0xb6, 0xa3, 0xd9, 0xbb, 0x03, 0x31, 0xf1, + 0x00, 0x2a, 0x64, 0x03, 0x0a, 0x4e, 0x7b, 0x63, 0xe6, 0xf1, 0x3c, 0x54, 0xd7, 0xea, 0x4a, 0x4d, + 0x8e, 0x28, 0xee, 0x37, 0x5d, 0x5d, 0xa9, 0x21, 0x23, 0x4e, 0x5c, 0x18, 0x75, 0xda, 0x1b, 0xe1, + 0xcc, 0x2c, 0x9f, 0xb3, 0xb9, 0x31, 0x89, 0x8d, 0x07, 0x2b, 0xb5, 0x10, 0x39, 0x0b, 0xfb, 0x0b, + 0x23, 0xfa, 0x96, 0x48, 0x67, 0xd2, 0x7f, 0xcb, 0x9c, 0x40, 0xe2, 0xb8, 0x73, 0x3b, 0xb7, 0x09, + 0x24, 0xd5, 0x8b, 0x33, 0x03, 0xa7, 0x4f, 0x57, 0x2f, 0x19, 0xb9, 0x24, 0xc2, 0x4b, 0xbe, 0x12, + 0x20, 0x4e, 0xcf, 0xc9, 0x05, 0xc3, 0xfe, 0x62, 0x45, 0x5b, 0x41, 0x53, 0x6e, 0x82, 0x01, 0x14, + 0xdd, 0x30, 0x72, 0xfd, 0x1c, 0xf3, 0x0e, 0xa4, 0xd2, 0xeb, 0xf3, 0xb0, 0x26, 0x0e, 0x40, 0xc1, + 0x8a, 0xf1, 0xf4, 0x5a, 0xae, 0xf7, 0x40, 0x7e, 0xfe, 0x6b, 0xb9, 0x3b, 0xb9, 0x09, 0x9e, 0x1c, + 0x80, 0x82, 0x15, 0xb9, 0x27, 0x06, 0x75, 0x21, 0x8f, 0xbe, 0xae, 0xae, 0xd4, 0x52, 0xfc, 0x92, + 0x83, 0xfb, 0x1e, 0x14, 0xc2, 0x8e, 0x2b, 0xd5, 0xa5, 0x21, 0x79, 0xd5, 0x57, 0x97, 0xb3, 0x78, + 0xd5, 0x57, 0x97, 0x91, 0x31, 0xe1, 0x57, 0xfd, 0x4e, 0x67, 0xc3, 0x09, 0x43, 0xa7, 0xa9, 0xad, + 0x33, 0x43, 0x5e, 0xf5, 0x57, 0x35, 0xbd, 0x14, 0x6b, 0x7e, 0xd5, 0x1f, 0x43, 0xd1, 0xe0, 0x4c, + 0xde, 0x84, 0x71, 0x47, 0x3c, 0xd1, 0x2a, 0x83, 0x3c, 0xf2, 0x79, 0x77, 0x38, 0x25, 0x01, 0x37, + 0xd3, 0x48, 0x10, 0x2a, 0x86, 0x8c, 0x77, 0x14, 0x38, 0x74, 0xd3, 0xdd, 0x96, 0xc6, 0xa1, 0xfa, + 0xd0, 0x8f, 0x08, 0x31, 0x62, 0x59, 0xbc, 0x25, 0x08, 0x15, 0x43, 0xf2, 0x65, 0x0b, 0xce, 0x74, + 0x1c, 0xcf, 0xd1, 0xa1, 0xbb, 0xf9, 0x04, 0x78, 0x9b, 0xc1, 0xc0, 0xb1, 0x86, 0xb8, 0x6a, 0x32, + 0xc2, 0x24, 0x5f, 0xb2, 0x03, 0x63, 0x0e, 0x7f, 0x3c, 0x5a, 0x1e, 0xc5, 0x30, 0x8f, 0x87, 0xa8, + 0x53, 0x6d, 0xc0, 0x17, 0x17, 0xf9, 0x44, 0xb5, 0xe4, 0x46, 0x7e, 0xd3, 0x82, 0x71, 0x11, 0x7f, + 0xc0, 0x14, 0x52, 0xf6, 0xed, 0x9f, 0x39, 0x85, 0x67, 0x3a, 0x64, 0x6c, 0x84, 0x74, 0xce, 0xfa, + 0xa0, 0xf6, 0xad, 0x16, 0xa5, 0x07, 0x46, 0x47, 0x28, 0xe9, 0x98, 0xea, 0xdb, 0x71, 0x1e, 0x24, + 0x9e, 0x88, 0x32, 0x55, 0xdf, 0xd5, 0x14, 0x0c, 0xfb, 0xb0, 0x67, 0x3f, 0x06, 0x13, 0xa6, 0x1c, + 0xc7, 0x8a, 0xb0, 0xf8, 0x51, 0x01, 0x80, 0x77, 0x95, 0x48, 0xf7, 0xd3, 0xe1, 0x59, 0xc9, 0xb7, + 0xfc, 0x66, 0x4e, 0x4f, 0xd5, 0x1a, 0x59, 0x7b, 0x40, 0xa6, 0x20, 0xdf, 0xf2, 0x9b, 0x28, 0x99, + 0x90, 0x16, 0x8c, 0x76, 0x9d, 0x68, 0x2b, 0xff, 0x14, 0x41, 0x25, 0x11, 0xf7, 0x1e, 0x6d, 0x21, + 0x67, 0x40, 0xde, 0xb6, 0x62, 0xbf, 0xa7, 0x42, 0x1e, 0x89, 0x95, 0xe3, 0x36, 0x9b, 0x97, 0x9e, + 0x4e, 0xa9, 0xfc, 0xc2, 0x69, 0xff, 0xa7, 0xd9, 0x77, 0x2c, 0x98, 0x30, 0x51, 0x33, 0xba, 0xe9, + 0xe7, 0xcd, 0x6e, 0xca, 0xb3, 0x3d, 0xcc, 0x1e, 0xff, 0x1f, 0x16, 0x00, 0xf6, 0xbc, 0x7a, 0xaf, + 0xd3, 0x61, 0x6a, 0xbb, 0x0e, 0x24, 0xb1, 0x8e, 0x1c, 0x48, 0x32, 0x72, 0xcc, 0x40, 0x92, 0xc2, + 0xb1, 0x02, 0x49, 0x46, 0x8f, 0x1f, 0x48, 0x52, 0x1c, 0x1c, 0x48, 0x62, 0x7f, 0xc3, 0x82, 0xb3, + 0x7d, 0xfb, 0x15, 0xd3, 0xa4, 0x03, 0xdf, 0x8f, 0x06, 0xf8, 0xcf, 0x62, 0x0c, 0x42, 0x13, 0x8f, + 0x2c, 0xc1, 0xb4, 0x7c, 0x83, 0xa7, 0xde, 0x6d, 0xbb, 0x99, 0xe9, 0x9b, 0xd6, 0x53, 0x70, 0xec, + 0xab, 0x61, 0xff, 0x6b, 0x0b, 0x2a, 0x46, 0xd2, 0x07, 0xee, 0x73, 0xc6, 0x6f, 0xbc, 0xd2, 0x3e, + 0x67, 0xfc, 0xaa, 0x4b, 0xc0, 0xc4, 0x35, 0x74, 0xcb, 0x78, 0xa1, 0x21, 0xbe, 0x86, 0x66, 0xa5, + 0x28, 0xa1, 0x22, 0xf7, 0xbe, 0x74, 0x3e, 0x2b, 0x98, 0xb9, 0xf7, 0x69, 0x57, 0xb8, 0x9a, 0xc5, + 0x2e, 0x6e, 0xa3, 0x87, 0xbb, 0xb8, 0x15, 0xb3, 0x5d, 0xdc, 0xec, 0xdb, 0x30, 0x21, 0x7c, 0xc3, + 0x5f, 0xa5, 0xbb, 0x47, 0x7e, 0xeb, 0x99, 0x8d, 0xf6, 0x94, 0xcf, 0x1c, 0xab, 0xce, 0xca, 0x6d, + 0x07, 0xe2, 0x44, 0xd4, 0x47, 0xa0, 0x76, 0x15, 0x40, 0xa7, 0xc4, 0x17, 0x8e, 0x78, 0xa5, 0x78, + 0x40, 0xea, 0xbc, 0xf9, 0x4d, 0x34, 0xb0, 0xec, 0x7f, 0x62, 0x41, 0xea, 0x8d, 0x31, 0xe3, 0x92, + 0xc7, 0x1a, 0x78, 0xc9, 0x63, 0x5e, 0x0c, 0x8c, 0x1c, 0x78, 0x31, 0x70, 0x13, 0x48, 0x87, 0xcd, + 0xb6, 0xe4, 0x5a, 0x5e, 0x48, 0x3e, 0xc5, 0xb2, 0xda, 0x87, 0x81, 0x19, 0xb5, 0xec, 0x7f, 0x2c, + 0x84, 0x35, 0x5f, 0x1d, 0x3b, 0xbc, 0x55, 0x7a, 0x50, 0xe4, 0xa4, 0xa4, 0x89, 0x6f, 0x48, 0xf3, + 0x78, 0x7f, 0x36, 0xb8, 0x78, 0xac, 0xc8, 0x55, 0x85, 0x73, 0xb3, 0x7f, 0x5f, 0xc8, 0x6a, 0x3e, + 0x4b, 0x76, 0xb8, 0xac, 0x9d, 0xa4, 0xac, 0x37, 0xf2, 0x5a, 0x8e, 0xb3, 0x65, 0x24, 0xf3, 0x00, + 0x5d, 0x1a, 0x34, 0xa8, 0x17, 0xa9, 0xe8, 0xba, 0xa2, 0x8c, 0xf3, 0xd6, 0xa5, 0x68, 0x60, 0xd8, + 0x5f, 0x67, 0x73, 0x34, 0x7e, 0x68, 0x9d, 0x5c, 0x49, 0xfb, 0x1a, 0xa7, 0xe7, 0x9f, 0x76, 0x35, + 0x36, 0x42, 0xae, 0x46, 0x0e, 0x09, 0xb9, 0x7a, 0x06, 0xc6, 0x03, 0xbf, 0x4d, 0xab, 0x81, 0x97, + 0x76, 0x03, 0x42, 0x56, 0x8c, 0xb7, 0x50, 0xc1, 0xed, 0x5f, 0xb7, 0x60, 0x3a, 0x1d, 0x14, 0x9a, + 0xbb, 0x03, 0xb4, 0x99, 0xb9, 0xa2, 0x70, 0xfc, 0xcc, 0x15, 0xf6, 0x9f, 0x16, 0x61, 0x3a, 0xfd, + 0x00, 0x24, 0xe3, 0xec, 0x72, 0x7b, 0x5e, 0x6a, 0x83, 0x11, 0x86, 0x3c, 0x01, 0xd3, 0xe3, 0x65, + 0x64, 0xe0, 0x78, 0xb9, 0x0e, 0x65, 0xbf, 0xab, 0x6c, 0x0a, 0x42, 0xb8, 0x2b, 0xca, 0x1e, 0x74, + 0x5b, 0x01, 0xde, 0xdd, 0x9b, 0x3b, 0x17, 0x0b, 0xa0, 0x8b, 0x31, 0xae, 0x4a, 0x7e, 0x46, 0x19, + 0x43, 0x46, 0x13, 0xb9, 0xa0, 0xb4, 0x31, 0x64, 0x2a, 0xae, 0x3f, 0xc8, 0x1e, 0x52, 0x3c, 0x4e, + 0x4e, 0x9a, 0xb1, 0x1c, 0x73, 0xd2, 0xdc, 0x85, 0xb2, 0x34, 0xdf, 0x9e, 0x28, 0x17, 0x0b, 0x27, + 0x7c, 0x47, 0x11, 0xc0, 0x98, 0x56, 0x2a, 0xd9, 0x4d, 0x29, 0xd7, 0x64, 0x37, 0x2f, 0xc1, 0xf8, + 0x86, 0xd3, 0xd8, 0xf6, 0x37, 0x37, 0xf9, 0x11, 0xa0, 0x5c, 0xfb, 0x80, 0x6a, 0xb8, 0x9a, 0x28, + 0xce, 0x18, 0x52, 0xaa, 0x06, 0x5b, 0xe7, 0xa9, 0xf2, 0x78, 0x56, 0x96, 0x65, 0xbd, 0xce, 0x6b, + 0x5f, 0xe8, 0x10, 0x0d, 0x2c, 0xf2, 0x2c, 0x94, 0x9a, 0x6e, 0x28, 0x9e, 0x28, 0xaf, 0x24, 0x1d, + 0xe2, 0x97, 0x64, 0x39, 0x6a, 0x0c, 0xf2, 0xb2, 0x76, 0x88, 0x9b, 0x88, 0x63, 0x55, 0xb4, 0x33, + 0xdc, 0x01, 0xb1, 0x2a, 0xd2, 0xdf, 0xf7, 0x6d, 0x36, 0x31, 0x23, 0xb7, 0xb1, 0xed, 0x7a, 0x22, + 0xc1, 0x09, 0x5b, 0x2d, 0x9e, 0x81, 0x71, 0x2a, 0x1f, 0x49, 0x17, 0xb7, 0x33, 0x7a, 0xb0, 0xa8, + 0xb7, 0xd1, 0x15, 0x9c, 0x54, 0x61, 0x4a, 0xdd, 0x49, 0xab, 0x2b, 0x35, 0x91, 0x98, 0x49, 0x9b, + 0xf0, 0x97, 0x92, 0x60, 0x4c, 0xe3, 0xdb, 0x9f, 0x87, 0x8a, 0xa1, 0xeb, 0x71, 0xb5, 0xe8, 0x81, + 0xd3, 0xe8, 0x73, 0x61, 0xbf, 0xc6, 0x0a, 0x51, 0xc0, 0xf8, 0xcd, 0x9f, 0x88, 0xbf, 0x4c, 0xa9, + 0x13, 0x32, 0xea, 0x52, 0x42, 0x19, 0xb1, 0x80, 0xb6, 0xe8, 0x03, 0xf5, 0x2e, 0x8d, 0x22, 0x86, + 0xac, 0x10, 0x05, 0xcc, 0x7e, 0x16, 0x4a, 0x2a, 0x7d, 0x1e, 0xcf, 0x41, 0xa5, 0x6e, 0xa5, 0xcc, + 0x1c, 0x54, 0x7e, 0x10, 0x21, 0x87, 0xd8, 0xaf, 0x43, 0x49, 0x65, 0xf9, 0x3b, 0x1c, 0x9b, 0x6d, + 0xbf, 0xa1, 0xe7, 0xde, 0xf0, 0xc3, 0x48, 0xa5, 0x26, 0x14, 0x17, 0xe7, 0xb7, 0x96, 0x79, 0x19, + 0x6a, 0xa8, 0xfd, 0x67, 0x16, 0x54, 0xd6, 0xd7, 0x57, 0xb4, 0x3d, 0x0d, 0xe1, 0xd1, 0x50, 0xb4, + 0x50, 0x75, 0x33, 0xa2, 0xa6, 0x87, 0x8e, 0x58, 0x89, 0x66, 0xf7, 0xf7, 0xe6, 0x1e, 0xad, 0x67, + 0x62, 0xe0, 0x80, 0x9a, 0x64, 0x19, 0xce, 0x99, 0x10, 0x99, 0x32, 0x46, 0xea, 0x05, 0xfc, 0x55, + 0xfd, 0x7a, 0x3f, 0x18, 0xb3, 0xea, 0xa4, 0x49, 0x49, 0x2d, 0xda, 0x7c, 0xa0, 0xbf, 0xde, 0x0f, + 0xc6, 0xac, 0x3a, 0xf6, 0x73, 0x30, 0x95, 0x72, 0x1d, 0x39, 0x42, 0xaa, 0xae, 0xdf, 0x2d, 0xc0, + 0x84, 0xe9, 0x41, 0x70, 0x84, 0x3d, 0xfb, 0xe8, 0xaa, 0x50, 0xc6, 0xad, 0x7f, 0xe1, 0x98, 0xb7, + 0xfe, 0xa6, 0x9b, 0xc5, 0xe8, 0xe9, 0xba, 0x59, 0x14, 0xf3, 0x71, 0xb3, 0x30, 0xdc, 0x81, 0xc6, + 0x1e, 0x9e, 0x3b, 0xd0, 0xef, 0x14, 0x61, 0x32, 0x99, 0xfb, 0xf9, 0x08, 0x3d, 0xf9, 0x6c, 0x5f, + 0x4f, 0x1e, 0xf3, 0x9a, 0xb1, 0x30, 0xec, 0x35, 0xe3, 0xe8, 0xb0, 0xd7, 0x8c, 0xc5, 0x13, 0x5c, + 0x33, 0xf6, 0x5f, 0x12, 0x8e, 0x1d, 0xf9, 0x92, 0xf0, 0xe3, 0x7a, 0xa3, 0x18, 0x4f, 0x78, 0xd6, + 0xc5, 0x9b, 0x05, 0x49, 0x76, 0xc3, 0xa2, 0xdf, 0xcc, 0xf4, 0xf8, 0x2e, 0x1d, 0xa2, 0x3e, 0x04, + 0x99, 0x8e, 0xce, 0xc7, 0xf7, 0x64, 0x78, 0xf4, 0x18, 0x4e, 0xce, 0x2f, 0x40, 0x45, 0x8e, 0x27, + 0x7e, 0xa6, 0x85, 0xe4, 0x79, 0xb8, 0x1e, 0x83, 0xd0, 0xc4, 0x63, 0x03, 0xa3, 0x1b, 0x4f, 0x10, + 0x7e, 0xe1, 0x5d, 0x49, 0x5e, 0x78, 0xaf, 0x25, 0xc1, 0x98, 0xc6, 0xb7, 0x3f, 0x07, 0x17, 0x32, + 0x2d, 0x9b, 0xfc, 0x56, 0x89, 0x9f, 0x85, 0x68, 0x53, 0x22, 0x18, 0x62, 0xa4, 0x1e, 0xa3, 0x9a, + 0xbd, 0x3b, 0x10, 0x13, 0x0f, 0xa0, 0x62, 0xff, 0x76, 0x01, 0x26, 0x93, 0x8f, 0xb3, 0x93, 0xfb, + 0xfa, 0x1e, 0x24, 0x97, 0x2b, 0x18, 0x41, 0xd6, 0xc8, 0x27, 0x3c, 0xf0, 0xfe, 0xf4, 0x3e, 0x1f, + 0x5f, 0x1b, 0x3a, 0xb9, 0xf1, 0xe9, 0x31, 0x96, 0x17, 0x97, 0x92, 0x1d, 0x7f, 0xe2, 0x3c, 0x4e, + 0x29, 0x20, 0xcd, 0x63, 0xb9, 0x73, 0x8f, 0xa3, 0xbf, 0x35, 0x2b, 0x34, 0xd8, 0xb2, 0xbd, 0x65, + 0x87, 0x06, 0xee, 0xa6, 0x4b, 0x9b, 0xf2, 0xad, 0x09, 0xbe, 0x72, 0xbf, 0x2e, 0xcb, 0x50, 0x43, + 0xed, 0xb7, 0x47, 0xa0, 0xcc, 0x33, 0x25, 0x5e, 0x0f, 0xfc, 0x0e, 0x7f, 0xb6, 0x37, 0x34, 0x4c, + 0x11, 0xb2, 0xdb, 0x6e, 0xe6, 0xf1, 0x4e, 0x96, 0xa0, 0x28, 0xa3, 0x48, 0x8c, 0x12, 0x4c, 0x70, + 0x24, 0x5d, 0x28, 0x6d, 0xca, 0xcc, 0xee, 0xb2, 0xef, 0x86, 0xcc, 0x4e, 0xac, 0xf2, 0xc4, 0x8b, + 0x26, 0x50, 0xff, 0x50, 0x73, 0xb1, 0x1d, 0x98, 0x4a, 0xa5, 0xba, 0xca, 0x3d, 0x1f, 0xfc, 0xff, + 0x1a, 0x85, 0xb2, 0x0e, 0xee, 0x24, 0x1f, 0x4d, 0xd8, 0x85, 0x63, 0x1d, 0x5e, 0x1a, 0x74, 0xd9, + 0xb9, 0x49, 0x23, 0xa7, 0x6c, 0xbc, 0x17, 0xa1, 0xd0, 0x0b, 0xda, 0x69, 0xc3, 0xcf, 0x1d, 0x5c, + 0x41, 0x56, 0x6e, 0x06, 0xa4, 0x16, 0x1e, 0x6e, 0x40, 0xea, 0x65, 0x18, 0xdd, 0xf0, 0x9b, 0xbb, + 0xe9, 0x37, 0x28, 0x6b, 0x7e, 0x73, 0x17, 0x39, 0x84, 0xbc, 0x0c, 0x93, 0x32, 0xca, 0x56, 0x29, + 0x31, 0x45, 0xae, 0xa7, 0x6a, 0x7f, 0xa0, 0xf5, 0x04, 0x14, 0x53, 0xd8, 0x6c, 0x97, 0x65, 0xc7, + 0x06, 0x9e, 0xe5, 0x7f, 0x2c, 0xe9, 0x3c, 0x70, 0xb3, 0x7e, 0xfb, 0x16, 0xb7, 0x4f, 0x6b, 0x8c, + 0x44, 0x20, 0xef, 0xf8, 0xa1, 0x81, 0xbc, 0x4b, 0x82, 0x36, 0x93, 0x96, 0xef, 0x28, 0x13, 0xb5, + 0x2b, 0x8a, 0x2e, 0x2b, 0x3b, 0xf0, 0xec, 0xa2, 0x6b, 0x66, 0x85, 0x3c, 0x97, 0xdf, 0xbb, 0x90, + 0x67, 0xfb, 0x0e, 0x4c, 0xa5, 0xfa, 0x4f, 0xd9, 0x0d, 0xad, 0x6c, 0xbb, 0xe1, 0xd1, 0x5e, 0xb1, + 0xfc, 0xe7, 0x16, 0x9c, 0xed, 0x5b, 0x91, 0x8e, 0x1a, 0x7b, 0x9e, 0xde, 0x1b, 0x47, 0x4e, 0xbe, + 0x37, 0x16, 0x8e, 0xb7, 0x37, 0xd6, 0x36, 0xbe, 0xfb, 0xc3, 0x4b, 0x8f, 0x7c, 0xff, 0x87, 0x97, + 0x1e, 0xf9, 0x83, 0x1f, 0x5e, 0x7a, 0xe4, 0xed, 0xfd, 0x4b, 0xd6, 0x77, 0xf7, 0x2f, 0x59, 0xdf, + 0xdf, 0xbf, 0x64, 0xfd, 0xc1, 0xfe, 0x25, 0xeb, 0xbf, 0xee, 0x5f, 0xb2, 0xbe, 0xf1, 0xc7, 0x97, + 0x1e, 0xf9, 0xe4, 0xc7, 0xe3, 0x9e, 0x5a, 0x50, 0x3d, 0xc5, 0x7f, 0x7c, 0x48, 0xf5, 0xcb, 0x42, + 0x77, 0xbb, 0xb5, 0xc0, 0x7a, 0x6a, 0x41, 0x97, 0xa8, 0x9e, 0xfa, 0x7f, 0x01, 0x00, 0x00, 0xff, + 0xff, 0x68, 0x77, 0xe5, 0x89, 0x8f, 0xae, 0x00, 0x00, } func (m *ALBStatus) Marshal() (dAtA []byte, err error) { @@ -6192,6 +6224,16 @@ func (m *DatadogMetric) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size, err := m.SecretRef.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a i -= len(m.Aggregator) copy(dAtA[i:], m.Aggregator) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Aggregator))) @@ -9760,6 +9802,42 @@ func (m *SecretKeyRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *SecretRef) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SecretRef) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SecretRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Namespaced { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *SetCanaryScale) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -11591,6 +11669,8 @@ func (m *DatadogMetric) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = len(m.Aggregator) n += 1 + l + sovGenerated(uint64(l)) + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) return n } @@ -12878,6 +12958,18 @@ func (m *SecretKeyRef) Size() (n int) { return n } +func (m *SecretRef) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + func (m *SetCanaryScale) Size() (n int) { if m == nil { return 0 @@ -13860,6 +13952,7 @@ func (this *DatadogMetric) String() string { `Formula:` + fmt.Sprintf("%v", this.Formula) + `,`, `ApiVersion:` + fmt.Sprintf("%v", this.ApiVersion) + `,`, `Aggregator:` + fmt.Sprintf("%v", this.Aggregator) + `,`, + `SecretRef:` + strings.Replace(strings.Replace(this.SecretRef.String(), "SecretRef", "SecretRef", 1), `&`, ``, 1) + `,`, `}`, }, "") return s @@ -14863,6 +14956,17 @@ func (this *SecretKeyRef) String() string { }, "") return s } +func (this *SecretRef) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretRef{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Namespaced:` + fmt.Sprintf("%v", this.Namespaced) + `,`, + `}`, + }, "") + return s +} func (this *SetCanaryScale) String() string { if this == nil { return "nil" @@ -21963,6 +22067,39 @@ func (m *DatadogMetric) Unmarshal(dAtA []byte) error { } m.Aggregator = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.SecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -33557,6 +33694,108 @@ func (m *SecretKeyRef) Unmarshal(dAtA []byte) error { } return nil } +func (m *SecretRef) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretRef: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretRef: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespaced", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Namespaced = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *SetCanaryScale) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/apis/rollouts/v1alpha1/generated.proto b/pkg/apis/rollouts/v1alpha1/generated.proto index 1f69804e81..832258d4b9 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.proto +++ b/pkg/apis/rollouts/v1alpha1/generated.proto @@ -664,6 +664,10 @@ message DatadogMetric { // +kubebuilder:validation:Enum=avg;min;max;sum;last;percentile;mean;l2norm;area // Aggregator is a type of aggregator to use for metrics-based queries (default: ""). Used for v2 optional string aggregator = 6; + + // Secret refers to the name of the secret that should be used for an analysis and should exists in the namespace where the controller is. + // +optional + optional SecretRef secretRef = 7; } // DryRun defines the settings for running the analysis in Dry-Run mode. @@ -1718,6 +1722,14 @@ message SecretKeyRef { optional string key = 2; } +message SecretRef { + // Name refers to the name of the secret that should be used to integrate with Datadog. + optional string name = 1; + + // Namespaced indicates whether the secret is in the namespace where rollouts it installed or in the namespace where the metric was found + optional bool namespaced = 2; +} + // SetCanaryScale defines how to scale the newRS without changing traffic weight message SetCanaryScale { // Weight sets the percentage of replicas the newRS should have diff --git a/pkg/apis/rollouts/v1alpha1/openapi_generated.go b/pkg/apis/rollouts/v1alpha1/openapi_generated.go index cc82d6bac0..69b7cd50a2 100644 --- a/pkg/apis/rollouts/v1alpha1/openapi_generated.go +++ b/pkg/apis/rollouts/v1alpha1/openapi_generated.go @@ -123,6 +123,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SMITrafficRouting": schema_pkg_apis_rollouts_v1alpha1_SMITrafficRouting(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.ScopeDetail": schema_pkg_apis_rollouts_v1alpha1_ScopeDetail(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SecretKeyRef": schema_pkg_apis_rollouts_v1alpha1_SecretKeyRef(ref), + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SecretRef": schema_pkg_apis_rollouts_v1alpha1_SecretRef(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SetCanaryScale": schema_pkg_apis_rollouts_v1alpha1_SetCanaryScale(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SetHeaderRoute": schema_pkg_apis_rollouts_v1alpha1_SetHeaderRoute(ref), "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SetMirrorRoute": schema_pkg_apis_rollouts_v1alpha1_SetMirrorRoute(ref), @@ -1963,9 +1964,18 @@ func schema_pkg_apis_rollouts_v1alpha1_DatadogMetric(ref common.ReferenceCallbac Format: "", }, }, + "secretRef": { + SchemaProps: spec.SchemaProps{ + Description: "Secret refers to the name of the secret that should be used for an analysis and should exists in the namespace where the controller is.", + Default: map[string]interface{}{}, + Ref: ref("github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SecretRef"), + }, + }, }, }, }, + Dependencies: []string{ + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.SecretRef"}, } } @@ -5063,6 +5073,32 @@ func schema_pkg_apis_rollouts_v1alpha1_SecretKeyRef(ref common.ReferenceCallback } } +func schema_pkg_apis_rollouts_v1alpha1_SecretRef(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "name": { + SchemaProps: spec.SchemaProps{ + Description: "Name refers to the name of the secret that should be used to integrate with Datadog.", + Type: []string{"string"}, + Format: "", + }, + }, + "namespaced": { + SchemaProps: spec.SchemaProps{ + Description: "Namespaced indicates whether the secret is in the namespace where rollouts it installed or in the namespace where the metric was found", + Type: []string{"boolean"}, + Format: "", + }, + }, + }, + }, + }, + } +} + func schema_pkg_apis_rollouts_v1alpha1_SetCanaryScale(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ diff --git a/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go index ab36a4b653..5229bb83f8 100644 --- a/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go @@ -1147,6 +1147,7 @@ func (in *DatadogMetric) DeepCopyInto(out *DatadogMetric) { (*out)[key] = val } } + out.SecretRef = in.SecretRef return } @@ -2696,6 +2697,22 @@ func (in *SecretKeyRef) DeepCopy() *SecretKeyRef { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretRef) DeepCopyInto(out *SecretRef) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretRef. +func (in *SecretRef) DeepCopy() *SecretRef { + if in == nil { + return nil + } + out := new(SecretRef) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SetCanaryScale) DeepCopyInto(out *SetCanaryScale) { *out = *in diff --git a/pkg/kubectl-argo-rollouts/info/pod_info.go b/pkg/kubectl-argo-rollouts/info/pod_info.go index 463657d70d..e53f350848 100644 --- a/pkg/kubectl-argo-rollouts/info/pod_info.go +++ b/pkg/kubectl-argo-rollouts/info/pod_info.go @@ -53,12 +53,6 @@ func newPodInfo(pod *corev1.Pod) rollout.PodInfo { }, } restarts := 0 - rs := make(map[string]bool, len(pod.Spec.InitContainers)) - for _, c := range pod.Spec.InitContainers { - p := c.RestartPolicy - rs[c.Name] = p != nil && *p == corev1.ContainerRestartPolicyAlways - } - totalContainers := len(pod.Spec.Containers) readyContainers := 0 @@ -75,7 +69,7 @@ func newPodInfo(pod *corev1.Pod) rollout.PodInfo { continue case container.State.Terminated != nil: // initialization is failed - if container.State.Terminated.Reason == "" { + if len(container.State.Terminated.Reason) == 0 { if container.State.Terminated.Signal != 0 { reason = fmt.Sprintf("Init:Signal:%d", container.State.Terminated.Signal) } else { @@ -85,10 +79,6 @@ func newPodInfo(pod *corev1.Pod) rollout.PodInfo { reason = "Init:" + container.State.Terminated.Reason } initializing = true - case rs[container.Name] && container.Started != nil && *container.Started: - if container.Ready { - continue - } case container.State.Waiting != nil && len(container.State.Waiting.Reason) > 0 && container.State.Waiting.Reason != "PodInitializing": reason = "Init:" + container.State.Waiting.Reason initializing = true diff --git a/ui/src/models/rollout/generated/api.ts b/ui/src/models/rollout/generated/api.ts index 135408898b..63068ec02c 100755 --- a/ui/src/models/rollout/generated/api.ts +++ b/ui/src/models/rollout/generated/api.ts @@ -1055,6 +1055,12 @@ export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DatadogMetr * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DatadogMetric */ aggregator?: string; + /** + * + * @type {GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SecretRef} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DatadogMetric + */ + secretRef?: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SecretRef; } /** * DryRun defines the settings for running the analysis in Dry-Run mode. @@ -2713,6 +2719,25 @@ export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SecretKeyRe */ key?: string; } +/** + * + * @export + * @interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SecretRef + */ +export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SecretRef { + /** + * Name refers to the name of the secret that should be used to integrate with Datadog. + * @type {string} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SecretRef + */ + name?: string; + /** + * + * @type {boolean} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SecretRef + */ + namespaced?: boolean; +} /** * * @export From 4135fae152e9aaadde71e2cdfa1a89c321d16a73 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 14:23:49 -0500 Subject: [PATCH 131/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.31 to 1.27.33 (#3822) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.31 to 1.27.33. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.31...config/v1.27.33) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 20 ++++++++++---------- go.sum | 40 ++++++++++++++++++++-------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index c0e60a69fb..6f99d01d88 100644 --- a/go.mod +++ b/go.mod @@ -8,8 +8,8 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.30.4 - github.com/aws/aws-sdk-go-v2/config v1.27.31 + github.com/aws/aws-sdk-go-v2 v1.30.5 + github.com/aws/aws-sdk-go-v2/config v1.27.33 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.5 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.4 @@ -83,17 +83,17 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.30 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.32 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.22.5 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.5 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.30.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.22.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.7 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.30.7 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect diff --git a/go.sum b/go.sum index ce3b4763a7..d57a247f43 100644 --- a/go.sum +++ b/go.sum @@ -96,18 +96,18 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.30.4 h1:frhcagrVNrzmT95RJImMHgabt99vkXGslubDaDagTk8= -github.com/aws/aws-sdk-go-v2 v1.30.4/go.mod h1:CT+ZPWXbYrci8chcARI3OmI/qgd+f6WtuLOoaIA8PR0= -github.com/aws/aws-sdk-go-v2/config v1.27.31 h1:kxBoRsjhT3pq0cKthgj6RU6bXTm/2SgdoUMyrVw0rAI= -github.com/aws/aws-sdk-go-v2/config v1.27.31/go.mod h1:z04nZdSWFPaDwK3DdJOG2r+scLQzMYuJeW0CujEm9FM= -github.com/aws/aws-sdk-go-v2/credentials v1.17.30 h1:aau/oYFtibVovr2rDt8FHlU17BTicFEMAi29V1U+L5Q= -github.com/aws/aws-sdk-go-v2/credentials v1.17.30/go.mod h1:BPJ/yXV92ZVq6G8uYvbU0gSl8q94UB63nMT5ctNO38g= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12 h1:yjwoSyDZF8Jth+mUk5lSPJCkMC0lMy6FaCD51jm6ayE= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12/go.mod h1:fuR57fAgMk7ot3WcNQfb6rSEn+SUffl7ri+aa8uKysI= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16 h1:TNyt/+X43KJ9IJJMjKfa3bNTiZbUP7DeCxfbTROESwY= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16/go.mod h1:2DwJF39FlNAUiX5pAc0UNeiz16lK2t7IaFcm0LFHEgc= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 h1:jYfy8UPmd+6kJW5YhY0L1/KftReOGxI/4NtVSTh9O/I= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16/go.mod h1:7ZfEPZxkW42Afq4uQB8H2E2e6ebh6mXTueEpYzjCzcs= +github.com/aws/aws-sdk-go-v2 v1.30.5 h1:mWSRTwQAb0aLE17dSzztCVJWI9+cRMgqebndjwDyK0g= +github.com/aws/aws-sdk-go-v2 v1.30.5/go.mod h1:CT+ZPWXbYrci8chcARI3OmI/qgd+f6WtuLOoaIA8PR0= +github.com/aws/aws-sdk-go-v2/config v1.27.33 h1:Nof9o/MsmH4oa0s2q9a0k7tMz5x/Yj5k06lDODWz3BU= +github.com/aws/aws-sdk-go-v2/config v1.27.33/go.mod h1:kEqdYzRb8dd8Sy2pOdEbExTTF5v7ozEXX0McgPE7xks= +github.com/aws/aws-sdk-go-v2/credentials v1.17.32 h1:7Cxhp/BnT2RcGy4VisJ9miUPecY+lyE9I8JvcZofn9I= +github.com/aws/aws-sdk-go-v2/credentials v1.17.32/go.mod h1:P5/QMF3/DCHbXGEGkdbilXHsyTBX5D3HSwcrSc9p20I= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13 h1:pfQ2sqNpMVK6xz2RbqLEL0GH87JOwSxPV2rzm8Zsb74= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13/go.mod h1:NG7RXPUlqfsCLLFfi0+IpKN4sCB9D9fw/qTaSB+xRoU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17 h1:pI7Bzt0BJtYA0N/JEC6B8fJ4RBrEMi1LBrkMdFYNSnQ= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17/go.mod h1:Dh5zzJYMtxfIjYW+/evjQ8uj2OyR/ve2KROHGHlSFqE= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17 h1:Mqr/V5gvrhA2gvgnF42Zh5iMiQNcOYthFYwCyrnuWlc= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17/go.mod h1:aLJpZlCmjE+V+KtN1q1uyZkfnUWpQGpbsn89XPKyzfU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.5 h1:/YvqO1j75i4leoV+Z3a5s/dAlEszf2wTKBW8jc3Gd4s= @@ -116,16 +116,16 @@ github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sg github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 h1:KypMCbLPPHEmf9DgMGw51jMj77VfGPAN2Kv4cfhlfgI= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4/go.mod h1:Vz1JQXliGcQktFTN/LN6uGppAIRoLBR2bMvIMP0gOjc= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18 h1:tJ5RnkHCiSH0jyd6gROjlJtNwov0eGYNz8s8nFcR0jQ= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18/go.mod h1:++NHzT+nAF7ZPrHPsA+ENvsXkOO8wEu+C6RXltAG4/c= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19 h1:rfprUlsdzgl7ZL2KlXiUAoJnI/VxfHCvDFr2QDFj6u4= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19/go.mod h1:SCWkEdRq8/7EK60NcvvQ6NXKuTcchAD4ROAsC37VEZE= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.5 h1:zCsFCKvbj25i7p1u94imVoO447I/sFv8qq+lGJhRN0c= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.5/go.mod h1:ZeDX1SnKsVlejeuz41GiajjZpRSWR7/42q/EyA/QEiM= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.5 h1:SKvPgvdvmiTWoi0GAJ7AsJfOz3ngVkD/ERbs5pUnHNI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.5/go.mod h1:20sz31hv/WsPa3HhU3hfrIet2kxM4Pe0r20eBZ20Tac= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.5 h1:OMsEmCyz2i89XwRwPouAJvhj81wINh+4UK+k/0Yo/q8= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.5/go.mod h1:vmSqFK+BVIwVpDAGZB3CoCXHzurt4qBE8lf+I/kRTh0= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.7 h1:pIaGg+08llrP7Q5aiz9ICWbY8cqhTkyy+0SHvfzQpTc= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.7/go.mod h1:eEygMHnTKH/3kNp9Jr1n3PdejuSNcgwLe1dWgQtO0VQ= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.7 h1:/Cfdu0XV3mONYKaOt1Gr0k1KvQzkzPyiKUdlWJqy+J4= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.7/go.mod h1:bCbAxKDqNvkHxRaIMnyVPXPo+OaPRwvmgzMxbz1VKSA= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.7 h1:NKTa1eqZYw8tiHSRGpP0VtTdub/8KNk8sDkNPFaOKDE= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.7/go.mod h1:NXi1dIAGteSaRLqYgarlhP/Ij0cFT+qmCwiJqWh/U5o= github.com/aws/smithy-go v1.20.4 h1:2HK1zBdPgRbjFOHlfeQZfpC4r72MOb9bZkiFwggKO+4= github.com/aws/smithy-go v1.20.4/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= From b8a9bf54f80008bd74ae5aa40c1ab6c3d3a24de1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 14:25:12 -0500 Subject: [PATCH 132/219] chore(deps): bump peter-evans/create-pull-request from 6 to 7 (#3819) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6 to 7. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v6...v7) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/changelog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 326772bb06..c3c4e138e2 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -23,7 +23,7 @@ jobs: ./git-chglog --sort semver -o CHANGELOG.md v1.3.1.. rm git-chglog - name: Create Pull Request - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v7 with: commit-message: update changelog title: "docs: Update Changelog" From e51e924133a1571bed872b8003e6c68ea07136d3 Mon Sep 17 00:00:00 2001 From: Bishal Thapa <83717860+bishalthapa-t@users.noreply.github.com> Date: Wed, 18 Sep 2024 15:31:58 +0100 Subject: [PATCH 133/219] chore: Add Trustly to USERS.md (#3837) * chore: Add Trustly to users Signed-off-by: Bishal Thapa * Update USERS.md Co-authored-by: Zach Aller --------- Signed-off-by: Bishal Thapa Co-authored-by: Zach Aller --- USERS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/USERS.md b/USERS.md index a22b403410..aa6c4d5eb8 100644 --- a/USERS.md +++ b/USERS.md @@ -23,6 +23,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit 1. [Flipkart](https://flipkart.com) 1. [GetYourGuide](https://www.getyourguide.com) 1. [Gllue](https://gllue.com) +1. [Groww](https://groww.in/) 1. [HashiCorp](https://www.hashicorp.com/) 1. [Ibotta](https://home.ibotta.com/) 1. [Intuit](https://www.intuit.com/) @@ -47,6 +48,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit 1. [Skillz](https://www.skillz.com) 1. [Spotify](https://www.spotify.com/) 1. [Synamedia](https://www.synamedia.com) +2. [Trustly](https://www.trustly.com/) 1. [Tuhu](https://www.tuhu.cn/) 1. [Twilio SendGrid](https://sendgrid.com) 1. [Ubie](https://ubie.life/) @@ -54,4 +56,3 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit 1. [WeLab Bank](https://www.welab.bank/) 1. [Yotpo](https://www.yotpo.com/) 1. [VGS](https://www.vgs.io) -2. [Groww](https://groww.in/) From 0258071ccf7a642e870f27f9cccff95ecdce2a9c Mon Sep 17 00:00:00 2001 From: maru Date: Wed, 18 Sep 2024 23:44:10 +0900 Subject: [PATCH 134/219] docs: fix a link to e2e.yaml (#3834) Signed-off-by: maru --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 7fae1d6d61..c2d9853290 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -116,7 +116,7 @@ docker run quay.io/argoproj/kubectl-argo-rollouts:master version ## Supported versions -Check [e2e testing file]( https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/e2e.yaml#L40-L44) to see what the Kubernetes version is being fully tested. +Check [e2e testing file](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/testing.yaml#L82-L89) to see what the Kubernetes version is being fully tested. You can switch to different tags to see what relevant Kubernetes versions were being tested for the respective version. From d750376137c958a7a3a356fa4ad6bcca952053c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 09:47:29 -0500 Subject: [PATCH 135/219] chore(deps): bump google.golang.org/grpc from 1.65.0 to 1.66.2 (#3831) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.65.0 to 1.66.2. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.65.0...v1.66.2) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 20 ++++++++++---------- go.sum | 40 ++++++++++++++++++++-------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index 6f99d01d88..719a26a29e 100644 --- a/go.mod +++ b/go.mod @@ -41,8 +41,8 @@ require ( github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 golang.org/x/oauth2 v0.22.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 - google.golang.org/grpc v1.65.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 + google.golang.org/grpc v1.66.2 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.29.3 @@ -201,21 +201,21 @@ require ( go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.19.0 // indirect - golang.org/x/crypto v0.23.0 // indirect + golang.org/x/crypto v0.24.0 // indirect golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect - golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.25.0 // indirect + golang.org/x/mod v0.17.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.16.1 // indirect + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 // indirect gomodules.xyz/notify v0.1.1 // indirect google.golang.org/api v0.162.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index d57a247f43..716bd0a54a 100644 --- a/go.sum +++ b/go.sum @@ -783,8 +783,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -820,8 +820,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -869,8 +869,8 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -961,8 +961,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -971,8 +971,8 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -985,8 +985,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1044,8 +1044,8 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= -golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1112,10 +1112,10 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU= +google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1130,8 +1130,8 @@ google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= +google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From c3db7611f431adafac540c1a9148a99f9f3ddf87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 09:47:46 -0500 Subject: [PATCH 136/219] chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.43.1 to 2.45.0 (#3829) chore(deps): bump github.com/newrelic/newrelic-client-go/v2 Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.43.1 to 2.45.0. - [Release notes](https://github.com/newrelic/newrelic-client-go/releases) - [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.43.1...v2.45.0) --- updated-dependencies: - dependency-name: github.com/newrelic/newrelic-client-go/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 719a26a29e..6551c2132c 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/juju/ansiterm v1.0.0 github.com/machinebox/graphql v0.2.2 github.com/mitchellh/mapstructure v1.5.0 - github.com/newrelic/newrelic-client-go/v2 v2.43.1 + github.com/newrelic/newrelic-client-go/v2 v2.45.0 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.18.0 github.com/prometheus/client_model v0.6.1 diff --git a/go.sum b/go.sum index 716bd0a54a..cfd38062a8 100644 --- a/go.sum +++ b/go.sum @@ -556,8 +556,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/newrelic/newrelic-client-go/v2 v2.43.1 h1:ewnyHowf77wq3Of5zlwq7NxY02vzHKENipc6et2y5AA= -github.com/newrelic/newrelic-client-go/v2 v2.43.1/go.mod h1:pDFY24/6iIMEbPIdowTRrRn9YYwkXc3j+B+XpTb4oF4= +github.com/newrelic/newrelic-client-go/v2 v2.45.0 h1:3zaJqE4V2n07b8Fx3byV+WeJSdeTeR4sW6yVSXrrNN4= +github.com/newrelic/newrelic-client-go/v2 v2.45.0/go.mod h1:pDFY24/6iIMEbPIdowTRrRn9YYwkXc3j+B+XpTb4oF4= github.com/nlopes/slack v0.5.0/go.mod h1:jVI4BBK3lSktibKahxBF74txcK2vyvkza1z/+rRnVAM= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oapi-codegen/runtime v1.0.0 h1:P4rqFX5fMFWqRzY9M/3YF9+aPSPPB06IzP2P7oOxrWo= From 00e39b114849010dd96221a8db441d58e860d4d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 09:48:56 -0500 Subject: [PATCH 137/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.5 to 1.40.8 (#3838) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.40.5 to 1.40.8. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/rds/v1.40.5...service/athena/v1.40.8) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6551c2132c..287674a3a9 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.30.5 github.com/aws/aws-sdk-go-v2/config v1.27.33 - github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.5 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.8 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.20.4 github.com/blang/semver v3.5.1+incompatible diff --git a/go.sum b/go.sum index cfd38062a8..307bb32e25 100644 --- a/go.sum +++ b/go.sum @@ -110,8 +110,8 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17 h1:Mqr/V5gvrhA2gvgnF4 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17/go.mod h1:aLJpZlCmjE+V+KtN1q1uyZkfnUWpQGpbsn89XPKyzfU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.5 h1:/YvqO1j75i4leoV+Z3a5s/dAlEszf2wTKBW8jc3Gd4s= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.5/go.mod h1:maEDlnDRdhsc0xrUljh3dUJbej11AHz+VTQJsNw1QmE= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.8 h1:+TC6bH5yzGSJPDQ+NKmbXpy2r346JGJb5QT0Mpe4xLE= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.8/go.mod h1:HeDvLYJALo05N6wCx3Ufa1rHGL1mz9ON312O2yVclIs= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 h1:KypMCbLPPHEmf9DgMGw51jMj77VfGPAN2Kv4cfhlfgI= From a964a8078ce358ed6533d7971c14440009fe9ded Mon Sep 17 00:00:00 2001 From: Leonardo Luz Almeida Date: Tue, 24 Sep 2024 10:30:14 -0400 Subject: [PATCH 138/219] docs: Clarify analysis count with value 0 (#3847) Signed-off-by: Leonardo Luz Almeida --- docs/features/analysis.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/features/analysis.md b/docs/features/analysis.md index 5675022501..bc54c88c43 100644 --- a/docs/features/analysis.md +++ b/docs/features/analysis.md @@ -154,8 +154,7 @@ spec: )) ``` -Multiple measurements can be performed over a longer duration period, by specifying the `count` and -`interval` fields: +Multiple measurements can be performed over a longer duration period, by specifying the `count` and `interval` fields: ```yaml hl_lines="4 5" metrics: @@ -169,6 +168,13 @@ Multiple measurements can be performed over a longer duration period, by specify query: ... ``` +!!! note + The `count` can have 0 as value which means that it will run until + the end of the Rollout execution for background analysis (outside + of steps). However if the `count` has value 0 and the analysis is + defined in the steps, the analysis won't be executed. + + ## ClusterAnalysisTemplates !!! important From ff937861947275b3e30e89e943248cdc0da00240 Mon Sep 17 00:00:00 2001 From: mitchell amihod Date: Tue, 24 Sep 2024 14:51:17 -0400 Subject: [PATCH 139/219] docs: Update metric job docs with some of the available config options (#3839) [chore] Update metric job docs with some of the available config options Signed-off-by: mitchell amihod <4623+meeech@users.noreply.github.com> --- docs/analysis/job.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/docs/analysis/job.md b/docs/analysis/job.md index eae1e077ca..27c16db66f 100644 --- a/docs/analysis/job.md +++ b/docs/analysis/job.md @@ -4,7 +4,7 @@ A Kubernetes Job can be used to run analysis. When a Job is used, the metric is successful if the Job completes and had an exit code of zero, otherwise it is failed. ```yaml - metrics: +metrics: - name: test provider: job: @@ -18,8 +18,19 @@ successful if the Job completes and had an exit code of zero, otherwise it is fa template: spec: containers: - - name: test - image: my-image:latest - command: [my-test-script, my-service.default.svc.cluster.local] + - name: test + image: my-image:latest + command: + [my-test-script, my-service.default.svc.cluster.local] restartPolicy: Never ``` + +## Control where the jobs run + +Argo Rollouts allows you some control over where your metric job runs. + +The following env vars can be set on the Rollouts controller: + +`ARGO_ROLLOUTS_ANALYSIS_JOB_NAMESPACE` will allow you to run your metric jobs in a namespace other than the default (which can vary depending on if you are running Rollouts in cluster mode or not). + +`ARGO_ROLLOUTS_ANALYSIS_JOB_KUBECONFIG` will allow running metric jobs in a different cluster entirely. This should be a path to the kubeconfig you want to use. From f32b2f3fb5626e55baf5177dc4230782d512eeec Mon Sep 17 00:00:00 2001 From: Youssef Rabie Date: Fri, 27 Sep 2024 17:02:05 +0300 Subject: [PATCH 140/219] =?UTF-8?q?fix(trafficrouting):=20add=20nil=20chec?= =?UTF-8?q?k=20for=20desired=20annotations=20map=20in=20ALB=E2=80=A6=20(#3?= =?UTF-8?q?853)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(trafficrouting): add nil check for desired annotations map in ALB ingress Signed-off-by: Youssef Rabie --- rollout/trafficrouting/alb/alb.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rollout/trafficrouting/alb/alb.go b/rollout/trafficrouting/alb/alb.go index 0a053857d6..5bda94d712 100644 --- a/rollout/trafficrouting/alb/alb.go +++ b/rollout/trafficrouting/alb/alb.go @@ -409,6 +409,9 @@ func getDesiredAnnotations(current *ingressutil.Ingress, r *v1alpha1.Rollout, po if err != nil { return nil, err } + if desired == nil { + desired = make(map[string]string) + } desired[key] = value return modifyManagedAnnotation(desired, r.Name, true, key) } From a0a520c4d70139546711fc17bf1238827507321d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:02:22 -0500 Subject: [PATCH 141/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.33 to 1.27.38 (#3851) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.33 to 1.27.38. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.33...config/v1.27.38) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 24 ++++++++++++------------ go.sum | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/go.mod b/go.mod index 287674a3a9..ffdc6c870e 100644 --- a/go.mod +++ b/go.mod @@ -8,11 +8,11 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.30.5 - github.com/aws/aws-sdk-go-v2/config v1.27.33 + github.com/aws/aws-sdk-go-v2 v1.31.0 + github.com/aws/aws-sdk-go-v2/config v1.27.38 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.8 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 - github.com/aws/smithy-go v1.20.4 + github.com/aws/smithy-go v1.21.0 github.com/blang/semver v3.5.1+incompatible github.com/bombsimon/logrusr/v4 v4.1.0 github.com/evanphx/json-patch/v5 v5.9.0 @@ -83,17 +83,17 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.32 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.36 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.22.7 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.30.7 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.23.2 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.31.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect diff --git a/go.sum b/go.sum index 307bb32e25..6a6bd12f11 100644 --- a/go.sum +++ b/go.sum @@ -96,38 +96,38 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.30.5 h1:mWSRTwQAb0aLE17dSzztCVJWI9+cRMgqebndjwDyK0g= -github.com/aws/aws-sdk-go-v2 v1.30.5/go.mod h1:CT+ZPWXbYrci8chcARI3OmI/qgd+f6WtuLOoaIA8PR0= -github.com/aws/aws-sdk-go-v2/config v1.27.33 h1:Nof9o/MsmH4oa0s2q9a0k7tMz5x/Yj5k06lDODWz3BU= -github.com/aws/aws-sdk-go-v2/config v1.27.33/go.mod h1:kEqdYzRb8dd8Sy2pOdEbExTTF5v7ozEXX0McgPE7xks= -github.com/aws/aws-sdk-go-v2/credentials v1.17.32 h1:7Cxhp/BnT2RcGy4VisJ9miUPecY+lyE9I8JvcZofn9I= -github.com/aws/aws-sdk-go-v2/credentials v1.17.32/go.mod h1:P5/QMF3/DCHbXGEGkdbilXHsyTBX5D3HSwcrSc9p20I= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13 h1:pfQ2sqNpMVK6xz2RbqLEL0GH87JOwSxPV2rzm8Zsb74= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13/go.mod h1:NG7RXPUlqfsCLLFfi0+IpKN4sCB9D9fw/qTaSB+xRoU= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17 h1:pI7Bzt0BJtYA0N/JEC6B8fJ4RBrEMi1LBrkMdFYNSnQ= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17/go.mod h1:Dh5zzJYMtxfIjYW+/evjQ8uj2OyR/ve2KROHGHlSFqE= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17 h1:Mqr/V5gvrhA2gvgnF42Zh5iMiQNcOYthFYwCyrnuWlc= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17/go.mod h1:aLJpZlCmjE+V+KtN1q1uyZkfnUWpQGpbsn89XPKyzfU= +github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U= +github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA= +github.com/aws/aws-sdk-go-v2/config v1.27.38 h1:mMVyJJuSUdbD4zKXoxDgWrgM60QwlFEg+JhihCq6wCw= +github.com/aws/aws-sdk-go-v2/config v1.27.38/go.mod h1:6xOiNEn58bj/64MPKx89r6G/el9JZn8pvVbquSqTKK4= +github.com/aws/aws-sdk-go-v2/credentials v1.17.36 h1:zwI5WrT+oWWfzSKoTNmSyeBKQhsFRJRv+PGW/UZW+Yk= +github.com/aws/aws-sdk-go-v2/credentials v1.17.36/go.mod h1:3AG/sY1rc9NJrNWcN/3KPU4SIDPGTrd/qegKB0TnFdE= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14/go.mod h1:7I0Ju7p9mCIdlrfS+JCgqcYD0VXz/N4yozsox+0o078= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 h1:kYQ3H1u0ANr9KEKlGs/jTLrBFPo8P8NaH/w7A01NeeM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18/go.mod h1:r506HmK5JDUh9+Mw4CfGJGSSoqIiLCndAuqXuhbv67Y= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 h1:Z7IdFUONvTcvS7YuhtVxN99v2cCoHRXOS4mTr0B/pUc= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18/go.mod h1:DkKMmksZVVyat+Y+r1dEOgJEfUeA7UngIHWeKsi0yNc= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.8 h1:+TC6bH5yzGSJPDQ+NKmbXpy2r346JGJb5QT0Mpe4xLE= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.8/go.mod h1:HeDvLYJALo05N6wCx3Ufa1rHGL1mz9ON312O2yVclIs= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 h1:KypMCbLPPHEmf9DgMGw51jMj77VfGPAN2Kv4cfhlfgI= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4/go.mod h1:Vz1JQXliGcQktFTN/LN6uGppAIRoLBR2bMvIMP0gOjc= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19 h1:rfprUlsdzgl7ZL2KlXiUAoJnI/VxfHCvDFr2QDFj6u4= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19/go.mod h1:SCWkEdRq8/7EK60NcvvQ6NXKuTcchAD4ROAsC37VEZE= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGfT8wMXtuP3D5CRmMjARHv9ZmzFUMJznHDOY3w= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5/go.mod h1:QdZ3OmoIjSX+8D1OPAzPxDfjXASbBMDsz9qvtyIhtik= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 h1:Xbwbmk44URTiHNx6PNo0ujDE6ERlsCKJD3u1zfnzAPg= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20/go.mod h1:oAfOFzUB14ltPZj1rWwRc3d/6OgD76R8KlvU3EqM9Fg= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.7 h1:pIaGg+08llrP7Q5aiz9ICWbY8cqhTkyy+0SHvfzQpTc= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.7/go.mod h1:eEygMHnTKH/3kNp9Jr1n3PdejuSNcgwLe1dWgQtO0VQ= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.7 h1:/Cfdu0XV3mONYKaOt1Gr0k1KvQzkzPyiKUdlWJqy+J4= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.7/go.mod h1:bCbAxKDqNvkHxRaIMnyVPXPo+OaPRwvmgzMxbz1VKSA= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.7 h1:NKTa1eqZYw8tiHSRGpP0VtTdub/8KNk8sDkNPFaOKDE= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.7/go.mod h1:NXi1dIAGteSaRLqYgarlhP/Ij0cFT+qmCwiJqWh/U5o= -github.com/aws/smithy-go v1.20.4 h1:2HK1zBdPgRbjFOHlfeQZfpC4r72MOb9bZkiFwggKO+4= -github.com/aws/smithy-go v1.20.4/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= +github.com/aws/aws-sdk-go-v2/service/sso v1.23.2 h1:yzi/y/vKlLyzOfG7pSu5ONNGRxHIgLeDrV4w2AMRCo0= +github.com/aws/aws-sdk-go-v2/service/sso v1.23.2/go.mod h1:XRlMvmad0ZNL+75C5FYdMvbbLkd6qiqz6foR1nA1PXY= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2 h1:3gb6pYhYLjo8rB1h2Tqs61wpjRd3rQymYcVq/pp0yxI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E= +github.com/aws/aws-sdk-go-v2/service/sts v1.31.2 h1:O6tyji8mXmBGsHvTCB0VIhrDw19lGTUSbKIyjnw79s8= +github.com/aws/aws-sdk-go-v2/service/sts v1.31.2/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= +github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= +github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= From 9b60ecaaa2f7840ce7eeb0f41b72092edd26b8e2 Mon Sep 17 00:00:00 2001 From: John Wood Date: Fri, 27 Sep 2024 09:13:16 -0500 Subject: [PATCH 142/219] docs: clarify supported deployment strategies (#3823) Signed-off-by: John Wood --- docs/concepts.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/concepts.md b/docs/concepts.md index af85d7b4e2..6f8312cdbf 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -3,7 +3,7 @@ ## Rollout A Rollout is Kubernetes workload resource which is equivalent to a Kubernetes Deployment object. -It is intended to replace a Deployment object in scenarios when more advanced deployment or +It is intended to replace a Deployment object in scenarios when more advanced deployment or progressive delivery functionality is needed. A Rollout provides the following features which a Kubernetes Deployment cannot: @@ -17,17 +17,17 @@ a Kubernetes Deployment cannot: Progressive delivery is the process of releasing updates of a product in a controlled and gradual manner, thereby reducing the risk of the release, typically coupling automation and metric analysis -to drive the automated promotion or rollback of the update. +to drive the automated promotion or rollback of the update. Progressive delivery is often described as an evolution of continuous delivery, extending the speed benefits made in CI/CD to the deployment process. This is accomplished by limiting the -exposure of the new version to a subset of users, observing and analyzing for correct behavior, +exposure of the new version to a subset of users, observing and analyzing for correct behavior, then progressively increasing the exposure to a broader and wider audience while continuously verifying correctness. ## Deployment Strategies -While the industry has used a consistent terminology to describe various deployment strategies, the implementations of these strategies tend to differ across tooling. To make it clear how the Argo Rollouts will behave, here are the descriptions of the various deployment strategies implementations offered by the Argo Rollouts. +While the industry has used a consistent terminology to describe various deployment strategies, the implementations of these strategies tend to differ across tooling. To make it clear how the Argo Rollouts will behave, here are the descriptions of the various deployment strategy implementations. Argo Rollouts only supports Blue-Green and Canary. ### Rolling Update A `RollingUpdate` slowly replaces the old version with the new version. As the new version comes up, the old version is scaled down in order to maintain the overall count of the application. This is the default strategy of the Deployment object. @@ -66,7 +66,7 @@ Here is a summary table for the possible approaches. |--------------------------:|:-------------------------:|:--------------------------:| :-----------------------------:| | Adoption Complexity | Low | Medium | High | | Flexibility | Low | High | Maximum | -| Needs traffic provider | No | No | Yes | +| Needs traffic provider | No | No | Yes | | Works with queue workers | Yes | No | No | | Works with shared/locked resources | Yes | No | No | | Traffic switch | All or nothing | Gradual percentage | Gradual percentage | @@ -75,4 +75,4 @@ Here is a summary table for the possible approaches. | Advanced routing scenarios | No | No | Yes | | Failure Blast Radius | Massive impact | Low impact | Low impact | -Note that that traffic manager can be any compatible Service Mesh or Ingress Controller or Gateway API implementation (via a plugin). \ No newline at end of file +Note that that traffic manager can be any compatible Service Mesh or Ingress Controller or Gateway API implementation (via a plugin). From 4e44913329f115251fe9fb4dd3519642de888a83 Mon Sep 17 00:00:00 2001 From: Miles Date: Fri, 27 Sep 2024 09:50:53 -0500 Subject: [PATCH 143/219] fix: stop rollout from entering degraded state during blueGreen pause. Fixes #3843 (#3845) add check for overall pause condition to indefinite step Signed-off-by: Miles Co-authored-by: Miles --- rollout/sync.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rollout/sync.go b/rollout/sync.go index 541657ff17..3585612197 100644 --- a/rollout/sync.go +++ b/rollout/sync.go @@ -562,7 +562,10 @@ func isIndefiniteStep(r *v1alpha1.Rollout) bool { if currentStep != nil && (currentStep.Experiment != nil || currentStep.Analysis != nil || currentStep.Pause != nil) { return true } - return false + // also check the pause condition to cover blueGreen + pauseCond := conditions.GetRolloutCondition(r.Status, v1alpha1.RolloutPaused) + pausedCondTrue := pauseCond != nil && pauseCond.Status == corev1.ConditionTrue + return pausedCondTrue } // isWaitingForReplicaSetScaleDown returns whether or not the rollout still has other replica sets with a scale down deadline annotation From 3df034c86527acb32b3901d72ead536ce93422fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 19:10:28 -0500 Subject: [PATCH 144/219] chore(deps): bump docker/build-push-action from 6.7.0 to 6.8.0 (#3860) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.7.0 to 6.8.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/5cd11c3a4ced054e52742c5fd54dca954e0edd85...32945a339266b759abcbdc89316275140b0fc960) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 7ebb3fbbf4..03809b92d1 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 #v6.7.0 + uses: docker/build-push-action@32945a339266b759abcbdc89316275140b0fc960 #v6.8.0 with: context: . platforms: ${{ inputs.platforms }} From 6ced7fc986694fbcf6bbe2e80a645fb591b19d26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 09:55:52 -0500 Subject: [PATCH 145/219] chore(deps): bump docker/build-push-action from 6.8.0 to 6.9.0 (#3863) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.8.0 to 6.9.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/32945a339266b759abcbdc89316275140b0fc960...4f58ea79222b3b9dc2c8bbdd6debcef730109a75) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 03809b92d1..5cf6809e61 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@32945a339266b759abcbdc89316275140b0fc960 #v6.8.0 + uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 #v6.9.0 with: context: . platforms: ${{ inputs.platforms }} From 5bcf340a23be8691877ba2d522bac7c4e63e9e84 Mon Sep 17 00:00:00 2001 From: Taehong Kim Date: Tue, 8 Oct 2024 00:42:38 +0900 Subject: [PATCH 146/219] docs: Update specification document (#3877) doc: Update specification document about setCanaryScale Signed-off-by: kth496 --- docs/features/specification.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/features/specification.md b/docs/features/specification.md index 6ec9c65dd8..ebe8f4ac69 100644 --- a/docs/features/specification.md +++ b/docs/features/specification.md @@ -285,7 +285,8 @@ spec: - setCanaryScale: replicas: 3 - # set canary scale to a percentage of spec.replicas without changing traffic weight + # set canary scale to spec.Replica * (setweight / maxTrafficWeight) without changing traffic weight + # if maxTrafficWeight unspecified, it defaults to 100 # (supported only with trafficRouting) - setCanaryScale: weight: 25 From 50300e5525848e09c68d7e89c02cdc8fa022b414 Mon Sep 17 00:00:00 2001 From: Mate Gogiberidze <101423812+mategogiberidze@users.noreply.github.com> Date: Mon, 7 Oct 2024 19:42:55 +0400 Subject: [PATCH 147/219] docs: add TBC Bank to USERS.md (#3871) * docs: add TBC Bank to USERS.md Signed-off-by: Mate Gogiberidze * docs: reordered alpabethical Signed-off-by: Mate Gogiberidze --------- Signed-off-by: Mate Gogiberidze --- USERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/USERS.md b/USERS.md index aa6c4d5eb8..c6878dc90b 100644 --- a/USERS.md +++ b/USERS.md @@ -48,6 +48,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit 1. [Skillz](https://www.skillz.com) 1. [Spotify](https://www.spotify.com/) 1. [Synamedia](https://www.synamedia.com) +1. [TBC Bank](https://tbcbank.ge/) 2. [Trustly](https://www.trustly.com/) 1. [Tuhu](https://www.tuhu.cn/) 1. [Twilio SendGrid](https://sendgrid.com) From e9dad9981079b2919464eab8517ed6f191878c80 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 12:58:06 -0500 Subject: [PATCH 148/219] chore(deps): bump sigstore/cosign-installer from 3.6.0 to 3.7.0 (#3875) Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.6.0 to 3.7.0. - [Release notes](https://github.com/sigstore/cosign-installer/releases) - [Commits](https://github.com/sigstore/cosign-installer/compare/4959ce089c160fddf62f7b42464195ba1a56d382...dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da) --- updated-dependencies: - dependency-name: sigstore/cosign-installer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 5cf6809e61..e11f92306c 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -74,7 +74,7 @@ jobs: go-version: ${{ inputs.go-version }} - name: Install cosign - uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0 + uses: sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da # v3.7.0 with: cosign-release: 'v2.2.0' diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4f7c5c9dea..8872b5470f 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -168,7 +168,7 @@ jobs: go-version: ${{ env.GOLANG_VERSION }} - name: Install cosign - uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0 + uses: sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da # v3.7.0 with: cosign-release: 'v2.2.0' From d49b3fa1669f9996b7688d53feeec11c2770ff36 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 12:58:23 -0500 Subject: [PATCH 149/219] chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.45.0 to 2.48.2 (#3874) chore(deps): bump github.com/newrelic/newrelic-client-go/v2 Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.45.0 to 2.48.2. - [Release notes](https://github.com/newrelic/newrelic-client-go/releases) - [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.45.0...v2.48.2) --- updated-dependencies: - dependency-name: github.com/newrelic/newrelic-client-go/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index ffdc6c870e..38ae8ea4f5 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/juju/ansiterm v1.0.0 github.com/machinebox/graphql v0.2.2 github.com/mitchellh/mapstructure v1.5.0 - github.com/newrelic/newrelic-client-go/v2 v2.45.0 + github.com/newrelic/newrelic-client-go/v2 v2.48.2 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.18.0 github.com/prometheus/client_model v0.6.1 diff --git a/go.sum b/go.sum index 6a6bd12f11..cf03833091 100644 --- a/go.sum +++ b/go.sum @@ -556,8 +556,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/newrelic/newrelic-client-go/v2 v2.45.0 h1:3zaJqE4V2n07b8Fx3byV+WeJSdeTeR4sW6yVSXrrNN4= -github.com/newrelic/newrelic-client-go/v2 v2.45.0/go.mod h1:pDFY24/6iIMEbPIdowTRrRn9YYwkXc3j+B+XpTb4oF4= +github.com/newrelic/newrelic-client-go/v2 v2.48.2 h1:Pd8/ADdidF/dISMCy9B2UHvcD11lnj4Use6j++OOEf4= +github.com/newrelic/newrelic-client-go/v2 v2.48.2/go.mod h1:pDFY24/6iIMEbPIdowTRrRn9YYwkXc3j+B+XpTb4oF4= github.com/nlopes/slack v0.5.0/go.mod h1:jVI4BBK3lSktibKahxBF74txcK2vyvkza1z/+rRnVAM= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oapi-codegen/runtime v1.0.0 h1:P4rqFX5fMFWqRzY9M/3YF9+aPSPPB06IzP2P7oOxrWo= From 4afdb85224f6db05cfe033247cbec145bd777fc3 Mon Sep 17 00:00:00 2001 From: Ashu <11219262+ashutosh16@users.noreply.github.com> Date: Wed, 9 Oct 2024 11:32:09 -0700 Subject: [PATCH 150/219] fix(dashboard): analysis modal crashed when value not valid (#3881) * handle the parse issue Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com> * handle the parse error Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com> * handle the parse error Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com> * handle the parse error Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com> --------- Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com> --- .../analysis-modal/transforms.test.ts | 72 +++++++++++++++++-- .../components/analysis-modal/transforms.ts | 27 ++++--- ui/src/app/components/pods/pods.tsx | 3 + 3 files changed, 87 insertions(+), 15 deletions(-) diff --git a/ui/src/app/components/analysis-modal/transforms.test.ts b/ui/src/app/components/analysis-modal/transforms.test.ts index 5c2c2a667e..60f7b37a7e 100644 --- a/ui/src/app/components/analysis-modal/transforms.test.ts +++ b/ui/src/app/components/analysis-modal/transforms.test.ts @@ -5,6 +5,7 @@ import { GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1CloudWatchMetric, GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MetricProvider, GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MetricResult, + GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Measurement, } from '../../../models/rollout/generated'; import { analysisEndTime, @@ -25,6 +26,7 @@ import { metricSubstatus, printableCloudWatchQuery, printableDatadogQuery, + transformMeasurements, } from './transforms'; import {AnalysisStatus, FunctionalStatus} from './types'; @@ -376,12 +378,12 @@ describe('analysis modal transforms', () => { }); test('interpolateQuery() for prometheus query and args', () => { expect(interpolateQuery(MOCK_QUERY_PROMETHEUS, MOCK_ARGS_PROMETHEUS)).toBe( - 'sum(irate(istio_requests_total{reporter="source",destination_service=~"istio-host-split-canary",response_code!~"5.*"}[5m])) / sum(irate(istio_requests_total{reporter="source",destination_service=~"istio-host-split-canary"}[5m]))' + 'sum(irate(istio_requests_total{reporter="source",destination_service=~"istio-host-split-canary",response_code!~"5.*"}[5m])) / sum(irate(istio_requests_total{reporter="source",destination_service=~"istio-host-split-canary"}[5m]))', ); }); test('interpolateQuery() for newrelic query and args', () => { expect(interpolateQuery(MOCK_QUERY_NEWRELIC, MOCK_ARGS_NEWRELIC)).toBe( - "FROM Transaction SELECT percentage(count(*), WHERE httpResponseCode != 500) as successRate where appName = 'myApp'" + "FROM Transaction SELECT percentage(count(*), WHERE httpResponseCode != 500) as successRate where appName = 'myApp'", ); }); test('interpolateQuery() for simple datadog query and args', () => { @@ -389,22 +391,22 @@ describe('analysis modal transforms', () => { }); test('interpolateQuery() for wavefront query and args', () => { expect(interpolateQuery(MOCK_QUERY_WAVEFRONT, MOCK_ARGS_WAVEFRONT)).toBe( - 'sum(rate(5m, ts("istio.requestcount.count", response_code!=500 and destination_service="istio-host-split-canary"))) / sum(rate(5m, ts("istio.requestcount.count", reporter=client and destination_service="istio-host-split-canary")))' + 'sum(rate(5m, ts("istio.requestcount.count", response_code!=500 and destination_service="istio-host-split-canary"))) / sum(rate(5m, ts("istio.requestcount.count", reporter=client and destination_service="istio-host-split-canary")))', ); }); test('interpolateQuery() for graphite query and args', () => { expect(interpolateQuery(MOCK_QUERY_GRAPHITE, MOCK_ARGS_GRAPHITE)).toBe( - "target=summarize(asPercent(sumSeries(stats.timers.httpServerRequests.app.istio-host-split-canary.exception.*.method.*.outcome.{CLIENT_ERROR,INFORMATIONAL,REDIRECTION,SUCCESS}.status.*.uri.*.count), sumSeries(stats.timers.httpServerRequests.app.istio-host-split-canary.exception.*.method.*.outcome.*.status.*.uri.*.count)),'5min','avg')" + "target=summarize(asPercent(sumSeries(stats.timers.httpServerRequests.app.istio-host-split-canary.exception.*.method.*.outcome.{CLIENT_ERROR,INFORMATIONAL,REDIRECTION,SUCCESS}.status.*.uri.*.count), sumSeries(stats.timers.httpServerRequests.app.istio-host-split-canary.exception.*.method.*.outcome.*.status.*.uri.*.count)),'5min','avg')", ); }); test('interpolateQuery() for influxdb query and args', () => { expect(interpolateQuery(MOCK_QUERY_INFLUXDB, MOCK_ARGS_INFLUXDB)).toBe( - 'from(bucket: "app_istio") range(start: -15m) filter(fn: (r) => r["destination_workload"] == "myApp")|> filter(fn: (r) => r["_measurement"] == "istio:istio_requests_errors_percentage:rate1m:5xx")' + 'from(bucket: "app_istio") range(start: -15m) filter(fn: (r) => r["destination_workload"] == "myApp")|> filter(fn: (r) => r["_measurement"] == "istio:istio_requests_errors_percentage:rate1m:5xx")', ); }); test('interpolateQuery() for skywalking query and args', () => { expect(interpolateQuery(MOCK_QUERY_SKYWALKING, MOCK_ARGS_SKYWALKING)).toBe( - 'query queryData($duration: Duration!) { service_apdex: readMetricsValues(condition: { name: "service_apdex", entity: { scope: Service, serviceName: "istio-host-split-canary", normal: true } }, duration: $duration) { label values { values { value } } } }' + 'query queryData($duration: Duration!) { service_apdex: readMetricsValues(condition: { name: "service_apdex", entity: { scope: Service, serviceName: "istio-host-split-canary", normal: true } }, duration: $duration) { label values { values { value } } } }', ); }); @@ -545,4 +547,62 @@ describe('analysis modal transforms', () => { tableValue: {latency: null, cpuUsage: null}, }); }); + const MOCK_MEASUREMENTS: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Measurement[] = [{value: '[5]'}, {value: '[10]'}, {value: '[15]'}]; + const MOCK_MEASUREMENTS_WITH_NAN: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Measurement[] = [{value: '[NaN]'}, {value: '[10]'}, {value: '[15]'}]; + const MOCK_MEASUREMENTS_WITH_STRING: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Measurement[] = [{value: 'NaN'}, {value: '10'}, {value: '15'}]; + + it('transforms measurements correctly with valid numbers', () => { + expect(transformMeasurements(['0'], MOCK_MEASUREMENTS)).toEqual({ + chartable: true, + min: 0, + max: null, + measurements: [ + {value: '[5]', chartValue: {'0': 5}, tableValue: {'0': 5}}, + {value: '[10]', chartValue: {'0': 10}, tableValue: {'0': 10}}, + {value: '[15]', chartValue: {'0': 15}, tableValue: {'0': 15}}, + ], + }); + }); + it('transforms measurements correctly with NaN numbers in list', () => { + expect(transformMeasurements(['0'], MOCK_MEASUREMENTS_WITH_NAN)).toEqual({ + chartable: true, + min: 0, + max: null, + measurements: [ + {value: '[NaN]', chartValue: null, tableValue: null}, + {value: '[10]', chartValue: {'0': 10}, tableValue: {'0': 10}}, + {value: '[15]', chartValue: {'0': 15}, tableValue: {'0': 15}}, + ], + }); + }); + it('returns default values when measurements are undefined', () => { + expect(transformMeasurements(['0'])).toEqual({ + chartable: false, + min: 0, + max: null, + measurements: [], + }); + }); + + it('returns default values when measurements are empty', () => { + expect(transformMeasurements(['0'], [])).toEqual({ + chartable: false, + min: 0, + max: null, + measurements: [], + }); + }); + + it('handles measurements with string values', () => { + expect(transformMeasurements(['0'], MOCK_MEASUREMENTS_WITH_STRING)).toEqual({ + chartable: true, + min: 0, + max: 15, + measurements: [ + {value: 'NaN', chartValue: null, tableValue: null}, + {value: '10', chartValue: 10, tableValue: 10}, + {value: '15', chartValue: 15, tableValue: 15}, + ], + }); + }); }); diff --git a/ui/src/app/components/analysis-modal/transforms.ts b/ui/src/app/components/analysis-modal/transforms.ts index 6d869328ae..63459e4e5c 100644 --- a/ui/src/app/components/analysis-modal/transforms.ts +++ b/ui/src/app/components/analysis-modal/transforms.ts @@ -1,5 +1,4 @@ // eslint-disable-file @typescript-eslint/ban-ts-comment -import JSON5 from 'json5' import * as moment from 'moment'; import { @@ -132,7 +131,7 @@ const PROVIDER_CONDITION_SUPPORT: { export const conditionDetails = ( condition?: string, args: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Argument[] = [], - provider?: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MetricProvider + provider?: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MetricProvider, ): { label: string | null; thresholds: number[]; @@ -209,7 +208,7 @@ export const chartMax = (valueMax: number, failThresholds: number[] | null, succ * @param phase analysis phase * @returns analysis phase adjusted to render the UI status with a more accurate functional status */ -export const getAdjustedMetricPhase = (phase?: AnalysisStatus): AnalysisStatus => (phase === AnalysisStatus.Error ? AnalysisStatus.Failed : phase ?? AnalysisStatus.Unknown); +export const getAdjustedMetricPhase = (phase?: AnalysisStatus): AnalysisStatus => (phase === AnalysisStatus.Error ? AnalysisStatus.Failed : (phase ?? AnalysisStatus.Unknown)); /** * @@ -379,7 +378,7 @@ export const interpolateQuery = (query?: string, args?: GithubComArgoprojArgoRol */ export const printableDatadogQuery = ( datadog: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DatadogMetric, - args: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Argument[] + args: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Argument[], ): string[] | undefined => { if ((datadog.apiVersion ?? '').toLowerCase() === 'v1' && 'query' in datadog) { return [interpolateQuery(datadog.query, args)]; @@ -418,7 +417,7 @@ export const printableCloudWatchQuery = (cloudWatch: GithubComArgoprojArgoRollou */ export const metricQueries = ( provider?: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MetricProvider | null, - args: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Argument[] = [] + args: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Argument[] = [], ): string[] | undefined => { if (provider === undefined || provider === null) { return undefined; @@ -468,7 +467,7 @@ export const transformMeasurements = (conditionKeys: string[], measurements?: Gi return measurements.reduce( ( acc: {chartable: boolean; min: number; max: number | null; measurements: TransformedMeasurement[]}, - currMeasurement: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Measurement + currMeasurement: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Measurement, ) => { const transformedValue = transformMeasurementValue(conditionKeys, currMeasurement.value); const {canChart, tableValue} = transformedValue; @@ -488,7 +487,7 @@ export const transformMeasurements = (conditionKeys: string[], measurements?: Gi ], }; }, - {chartable: true, min: 0, max: null, measurements: [] as TransformedMeasurement[]} + {chartable: true, min: 0, max: null, measurements: [] as TransformedMeasurement[]}, ); }; @@ -508,7 +507,7 @@ type FormattedMeasurementValue = number | string | null; */ export const formattedValue = (value: any): FormattedMeasurementValue => { const isNum = isFiniteNumber(value); - return isNum ? roundNumber(Number(value)) : value?.toString() ?? null; + return isNum ? roundNumber(Number(value)) : (value?.toString() ?? null); }; /** @@ -534,6 +533,7 @@ const formatNumberMeasurement = (value: number): MeasurementValueInfo => { export const formatSingleItemArrayMeasurement = (value: FormattedMeasurementValue[], accessor: number): MeasurementValueInfo => { if (isFiniteNumber(accessor)) { const measurementValue = value?.[accessor] ?? null; + // if it's a number or null, chart it if (isFiniteNumber(measurementValue) || measurementValue === null) { const displayValue = formattedValue(measurementValue); @@ -618,7 +618,16 @@ const transformMeasurementValue = (conditionKeys: string[], value?: string): Mea }; } - const parsedValue = JSON5.parse(value); + let parsedValue; + try { + parsedValue = JSON.parse(value); + } catch { + return { + canChart: true, + chartValue: null, + tableValue: null, + }; + } // single number measurement value if (isFiniteNumber(parsedValue)) { diff --git a/ui/src/app/components/pods/pods.tsx b/ui/src/app/components/pods/pods.tsx index 5e7005fcbd..6b44aa3d41 100644 --- a/ui/src/app/components/pods/pods.tsx +++ b/ui/src/app/components/pods/pods.tsx @@ -21,6 +21,9 @@ export enum PodStatus { } const isPodReady = (ready: string) => { + if (!ready) { + return false; + } // Ready is a string in the format "0/1", "1/1", etc. const [current, total] = ready.split('/'); return current === total; From 9f182220f5bc616f394a525bb415ab42453b6c33 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 14:52:05 -0500 Subject: [PATCH 151/219] chore(deps): bump codecov/codecov-action from 4.5.0 to 4.6.0 (#3865) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.5.0 to 4.6.0. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/e28ff129e5465c2c0dcc6f003fc735cb6ae0c673...b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/testing.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml index 7c4282bea7..7122e8308b 100644 --- a/.github/workflows/testing.yaml +++ b/.github/workflows/testing.yaml @@ -184,7 +184,7 @@ jobs: run: | go tool covdata textfmt -i=coverage-output-unit/,coverage-output-e2e/ -o full-coverage.out - name: Upload code coverage information to codecov.io - uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0 + uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0 with: file: full-coverage.out fail_ci_if_error: false From b0d74e5def390e8d7f33fb98c7450519037d30be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 15:04:58 -0500 Subject: [PATCH 152/219] chore(deps): bump golang.org/x/oauth2 from 0.22.0 to 0.23.0 (#3841) Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/oauth2/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/oauth2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 38ae8ea4f5..2f8f3c195f 100644 --- a/go.mod +++ b/go.mod @@ -40,7 +40,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 - golang.org/x/oauth2 v0.22.0 + golang.org/x/oauth2 v0.23.0 google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 google.golang.org/grpc v1.66.2 google.golang.org/protobuf v1.34.2 diff --git a/go.sum b/go.sum index cf03833091..1613b1752c 100644 --- a/go.sum +++ b/go.sum @@ -878,8 +878,8 @@ golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= -golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From 785ea175630e7621d4434262c969a2d6b3c40835 Mon Sep 17 00:00:00 2001 From: Youssef Rabie Date: Tue, 15 Oct 2024 05:00:33 +0300 Subject: [PATCH 153/219] fix(metricprovider): fix handling null values in datadog (#3893) Signed-off-by: Youssef Rabie --- metricproviders/datadog/datadog.go | 6 +++--- metricproviders/datadog/datadogV2_test.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/metricproviders/datadog/datadog.go b/metricproviders/datadog/datadog.go index 8778b51827..021731dd62 100644 --- a/metricproviders/datadog/datadog.go +++ b/metricproviders/datadog/datadog.go @@ -67,7 +67,7 @@ type datadogResponseV2 struct { Data struct { Attributes struct { Columns []struct { - Values []float64 + Values []*float64 } } Errors string @@ -320,7 +320,7 @@ func (p *Provider) parseResponseV2(metric v1alpha1.Metric, response *http.Respon } // Handle an empty query result - if reflect.ValueOf(res.Data.Attributes).IsZero() || len(res.Data.Attributes.Columns) == 0 || len(res.Data.Attributes.Columns[0].Values) == 0 { + if reflect.ValueOf(res.Data.Attributes).IsZero() || len(res.Data.Attributes.Columns) == 0 || len(res.Data.Attributes.Columns[0].Values) == 0 || res.Data.Attributes.Columns[0].Values[0] == nil { var nilFloat64 *float64 status, err := evaluate.EvaluateResult(nilFloat64, metric, p.logCtx) @@ -343,7 +343,7 @@ func (p *Provider) parseResponseV2(metric v1alpha1.Metric, response *http.Respon // Handle a populated query result column := res.Data.Attributes.Columns[0] - value := column.Values[0] + value := *column.Values[0] status, err := evaluate.EvaluateResult(value, metric, p.logCtx) return strconv.FormatFloat(value, 'f', -1, 64), status, err } diff --git a/metricproviders/datadog/datadogV2_test.go b/metricproviders/datadog/datadogV2_test.go index 9723580340..b370e5c371 100644 --- a/metricproviders/datadog/datadogV2_test.go +++ b/metricproviders/datadog/datadogV2_test.go @@ -248,7 +248,7 @@ func TestRunSuiteV2(t *testing.T) { }, expectedIntervalSeconds: 300, expectedPhase: v1alpha1.AnalysisPhaseError, - expectedErrorMessage: "Could not parse JSON body: json: cannot unmarshal string into Go struct field .Data.Attributes.Columns.Values of type []float64", + expectedErrorMessage: "Could not parse JSON body: json: cannot unmarshal string into Go struct field .Data.Attributes.Columns.Values of type []*float64", useEnvVarForKeys: false, }, From 6c61ed2a22c626252bc47c7f59cc1bb7fd65cfaa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:49:57 -0500 Subject: [PATCH 154/219] chore(deps): bump google.golang.org/protobuf from 1.34.2 to 1.35.1 (#3887) Bumps google.golang.org/protobuf from 1.34.2 to 1.35.1. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2f8f3c195f..b82730fc5f 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( golang.org/x/oauth2 v0.23.0 google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 google.golang.org/grpc v1.66.2 - google.golang.org/protobuf v1.34.2 + google.golang.org/protobuf v1.35.1 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.29.3 k8s.io/apiextensions-apiserver v0.29.3 diff --git a/go.sum b/go.sum index 1613b1752c..b3a0f9d4fb 100644 --- a/go.sum +++ b/go.sum @@ -1145,8 +1145,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= From ac5a0d736863c19ed01892bfb433a2595cafeb96 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:50:14 -0500 Subject: [PATCH 155/219] chore(deps): bump github.com/aws/aws-sdk-go-v2 from 1.31.0 to 1.32.2 (#3886) Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.31.0 to 1.32.2. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.31.0...v1.32.2) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index b82730fc5f..f329ccd199 100644 --- a/go.mod +++ b/go.mod @@ -8,11 +8,11 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.31.0 + github.com/aws/aws-sdk-go-v2 v1.32.2 github.com/aws/aws-sdk-go-v2/config v1.27.38 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.8 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 - github.com/aws/smithy-go v1.21.0 + github.com/aws/smithy-go v1.22.0 github.com/blang/semver v3.5.1+incompatible github.com/bombsimon/logrusr/v4 v4.1.0 github.com/evanphx/json-patch/v5 v5.9.0 diff --git a/go.sum b/go.sum index b3a0f9d4fb..762bbb19f1 100644 --- a/go.sum +++ b/go.sum @@ -96,8 +96,8 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U= -github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA= +github.com/aws/aws-sdk-go-v2 v1.32.2 h1:AkNLZEyYMLnx/Q/mSKkcMqwNFXMAvFto9bNsHqcTduI= +github.com/aws/aws-sdk-go-v2 v1.32.2/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo= github.com/aws/aws-sdk-go-v2/config v1.27.38 h1:mMVyJJuSUdbD4zKXoxDgWrgM60QwlFEg+JhihCq6wCw= github.com/aws/aws-sdk-go-v2/config v1.27.38/go.mod h1:6xOiNEn58bj/64MPKx89r6G/el9JZn8pvVbquSqTKK4= github.com/aws/aws-sdk-go-v2/credentials v1.17.36 h1:zwI5WrT+oWWfzSKoTNmSyeBKQhsFRJRv+PGW/UZW+Yk= @@ -126,8 +126,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2 h1:3gb6pYhYLjo8rB1h2Tqs61wp github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E= github.com/aws/aws-sdk-go-v2/service/sts v1.31.2 h1:O6tyji8mXmBGsHvTCB0VIhrDw19lGTUSbKIyjnw79s8= github.com/aws/aws-sdk-go-v2/service/sts v1.31.2/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= -github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= -github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= +github.com/aws/smithy-go v1.22.0 h1:uunKnWlcoL3zO7q+gG2Pk53joueEOsnNB28QdMsmiMM= +github.com/aws/smithy-go v1.22.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= From 806d07cca172090e9ba7c9dd101af89b6e8957c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Oct 2024 16:50:37 +0000 Subject: [PATCH 156/219] chore(deps): bump github.com/aws/smithy-go from 1.21.0 to 1.22.0 (#3885) Bumps [github.com/aws/smithy-go](https://github.com/aws/smithy-go) from 1.21.0 to 1.22.0. - [Release notes](https://github.com/aws/smithy-go/releases) - [Changelog](https://github.com/aws/smithy-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/aws/smithy-go/compare/v1.21.0...v1.22.0) --- updated-dependencies: - dependency-name: github.com/aws/smithy-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> From 060566cbf0ae510667178f78928e3c8b00de2660 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Oct 2024 21:05:19 -0500 Subject: [PATCH 157/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.8 to 1.42.2 (#3901) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.40.8 to 1.42.2. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/athena/v1.40.8...service/s3/v1.42.2) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index f329ccd199..74d60f9ad4 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.32.2 github.com/aws/aws-sdk-go-v2/config v1.27.38 - github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.8 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.2 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.22.0 github.com/blang/semver v3.5.1+incompatible @@ -85,8 +85,8 @@ require ( github.com/aws/aws-sdk-go v1.44.116 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.36 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 // indirect diff --git a/go.sum b/go.sum index 762bbb19f1..0bb5eed3f6 100644 --- a/go.sum +++ b/go.sum @@ -104,14 +104,14 @@ github.com/aws/aws-sdk-go-v2/credentials v1.17.36 h1:zwI5WrT+oWWfzSKoTNmSyeBKQhs github.com/aws/aws-sdk-go-v2/credentials v1.17.36/go.mod h1:3AG/sY1rc9NJrNWcN/3KPU4SIDPGTrd/qegKB0TnFdE= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14/go.mod h1:7I0Ju7p9mCIdlrfS+JCgqcYD0VXz/N4yozsox+0o078= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 h1:kYQ3H1u0ANr9KEKlGs/jTLrBFPo8P8NaH/w7A01NeeM= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18/go.mod h1:r506HmK5JDUh9+Mw4CfGJGSSoqIiLCndAuqXuhbv67Y= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 h1:Z7IdFUONvTcvS7YuhtVxN99v2cCoHRXOS4mTr0B/pUc= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18/go.mod h1:DkKMmksZVVyat+Y+r1dEOgJEfUeA7UngIHWeKsi0yNc= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 h1:UAsR3xA31QGf79WzpG/ixT9FZvQlh5HY1NRqSHBNOCk= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21/go.mod h1:JNr43NFf5L9YaG3eKTm7HQzls9J+A9YYcGI5Quh1r2Y= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 h1:6jZVETqmYCadGFvrYEQfC5fAQmlo80CeL5psbno6r0s= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21/go.mod h1:1SR0GbLlnN3QUmYaflZNiH1ql+1qrSiB2vwcJ+4UM60= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.8 h1:+TC6bH5yzGSJPDQ+NKmbXpy2r346JGJb5QT0Mpe4xLE= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.40.8/go.mod h1:HeDvLYJALo05N6wCx3Ufa1rHGL1mz9ON312O2yVclIs= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.2 h1:eMh+iBTF1CbpHMfiRvIaVm+rzrH1DOzuSFaR55O+bBo= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.2/go.mod h1:/A4zNqF1+RS5RV+NNLKIzUX1KtK5SoWgf/OpiqrwmBo= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGfT8wMXtuP3D5CRmMjARHv9ZmzFUMJznHDOY3w= From de827d41446303d3a260a09cb6f79dd46f9c140b Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Thu, 17 Oct 2024 10:49:48 -0500 Subject: [PATCH 158/219] fix: check isScalingEvent only on stable and newRS (#3883) * test Signed-off-by: Zach Aller * add comments Signed-off-by: Zach Aller * comments Signed-off-by: Zach Aller * add test Signed-off-by: Zach Aller * no need to check length, same in both versions Signed-off-by: Zach Aller * add active filter back Signed-off-by: Zach Aller * rename vars add comments Signed-off-by: Zach Aller * remove comment Signed-off-by: Zach Aller --------- Signed-off-by: Zach Aller --- rollout/sync.go | 5 +++- rollout/sync_test.go | 64 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/rollout/sync.go b/rollout/sync.go index 3585612197..c0d394a74b 100644 --- a/rollout/sync.go +++ b/rollout/sync.go @@ -324,7 +324,10 @@ func (c *rolloutContext) isScalingEvent() (bool, error) { return false, fmt.Errorf("failed to getAllReplicaSetsAndSyncRevision in isScalingEvent: %w", err) } - for _, rs := range controller.FilterActiveReplicaSets(c.allRSs) { + // We only care about scaling events on the newRS and stableRS because these are the only replicasets that we ever + // adjust the replicas counts on as well as the desired annotation. When we have stacked rollouts going the middle + // replicasets will never have the desired annotation updated this can cause a tight loop of isScalingEvent -> syncReplicasOnly -> isScalingEvent + for _, rs := range controller.FilterActiveReplicaSets([]*appsv1.ReplicaSet{c.newRS, c.stableRS}) { desired, ok := annotations.GetDesiredReplicasAnnotation(rs) if !ok { continue diff --git a/rollout/sync_test.go b/rollout/sync_test.go index 7b2552e6c9..d71bb9e496 100644 --- a/rollout/sync_test.go +++ b/rollout/sync_test.go @@ -1,6 +1,7 @@ package rollout import ( + "encoding/json" "strconv" "testing" "time" @@ -639,3 +640,66 @@ func TestScaleDownDeploymentOnSuccess(t *testing.T) { assert.NotNil(t, err) } + +// This tests validates that when there are old replicasets that have miss matched desired-count annotations aka they do +// not match the spec.replicas field. When this happens we get stuck in a reconcile loop of only trying to scale replicasets +// only because of a supposed scaling event. This test validates that we do not get stuck in this loop by checking that status.replicas +// and status.readyreplicas are updated because those will not be updated in that loop. +func TestIsScalingEventMissMatchedDesiredOldReplicas(t *testing.T) { + f := newFixture(t) + defer f.Close() + + // these steps should be ignored + steps := []v1alpha1.CanaryStep{ + { + SetWeight: int32Ptr(10), + }, + { + Pause: &v1alpha1.RolloutPause{ + Duration: v1alpha1.DurationFromInt(60), + }, + }, + } + + r0 := newCanaryRollout("foo", 10, int32Ptr(4), steps, int32Ptr(0), intstr.FromInt(10), intstr.FromInt(0)) + r0.Annotations[annotations.RevisionAnnotation] = "1" + oldRs := newReplicaSetWithStatus(r0, 3, 3) + oldRs.Annotations[annotations.DesiredReplicasAnnotation] = "2" + + r1 := bumpVersion(r0) + + // Desired rs will be created during reconcile + stableRs := newReplicaSetWithStatus(r1, 10, 10) + r1.Status.StableRS = stableRs.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + r2 := bumpVersion(r1) + r2.Annotations[annotations.RevisionAnnotation] = "2" + + f.rolloutLister = append(f.rolloutLister, r2) + f.objects = append(f.objects, r2) + f.kubeobjects = append(f.kubeobjects, oldRs, stableRs) + f.replicaSetLister = append(f.replicaSetLister, oldRs, stableRs) + + f.expectUpdateRolloutAction(r2) // update rollout revision + f.expectUpdateRolloutStatusAction(r2) + updatedROIndex := f.expectPatchRolloutAction(r2) + createdRS2Index := f.expectCreateReplicaSetAction(stableRs) + updatedRS2Index := f.expectUpdateReplicaSetAction(stableRs) + f.run(getKey(r2, t)) + + createdRS2 := f.getCreatedReplicaSet(createdRS2Index) + assert.Equal(t, int32(0), *createdRS2.Spec.Replicas) + updatedRS2 := f.getUpdatedReplicaSet(updatedRS2Index) + assert.Equal(t, int32(1), *updatedRS2.Spec.Replicas) + + updateRO := f.getPatchedRollout(updatedROIndex) + + //Will only contain status + roStatus := v1alpha1.Rollout{} + err := json.Unmarshal([]byte(updateRO), &roStatus) + assert.Nil(t, err) + + // We have two ReplicaSets, one with 3 pods and one with 10 + assert.Equal(t, int32(13), roStatus.Status.Replicas) + assert.Equal(t, int32(13), roStatus.Status.ReadyReplicas) + assert.Equal(t, int32(0), roStatus.Status.UpdatedReplicas) +} From 3cf177dbee7897dd261bd1ae36a3818cebe6f0a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 10:51:49 -0500 Subject: [PATCH 159/219] chore(deps): bump docker/setup-buildx-action from 3.6.1 to 3.7.1 (#3876) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.6.1 to 3.7.1. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/988b5a0280414f521da01fcc63a27aeeb4b104db...c47758b77c9736f4b2ef4073d4d51994fabfe349) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index e11f92306c..165873dec4 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -79,7 +79,7 @@ jobs: cosign-release: 'v2.2.0' - uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0 - - uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1 + - uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1 - name: Setup tags for container image as a CSV type run: | diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 8872b5470f..d250e7f4e9 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -98,7 +98,7 @@ jobs: uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1 + uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1 - name: Generate release artifacts run: | From b2a6844f2601bbde8d93c980d150b72f0f8f4d56 Mon Sep 17 00:00:00 2001 From: Li Wang Date: Thu, 17 Oct 2024 23:59:52 +0800 Subject: [PATCH 160/219] fix: rollout should skip timeout when paused (#3711) * fix: rollout should timeout when paused Signed-off-by: Li Wang * chore: add test cases for Rollout timeout when paused or aborted Signed-off-by: Li Wang --------- Signed-off-by: Li Wang --- utils/conditions/conditions.go | 2 +- utils/conditions/rollouts_test.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/utils/conditions/conditions.go b/utils/conditions/conditions.go index 2e62cb80fe..738f2120ab 100644 --- a/utils/conditions/conditions.go +++ b/utils/conditions/conditions.go @@ -346,7 +346,7 @@ func RolloutTimedOut(rollout *v1alpha1.Rollout, newStatus *v1alpha1.RolloutStatu // When a rollout is retried, the controller should not evaluate for a timeout based on the // aborted condition because the abort could have happened a while back and the rollout should // not enter degraded as a result of that - if condition == nil || condition.Reason == RolloutAbortedReason { + if condition == nil || condition.Reason == RolloutAbortedReason || condition.Reason == RolloutPausedReason { return false } diff --git a/utils/conditions/rollouts_test.go b/utils/conditions/rollouts_test.go index 842f01f594..289437d758 100644 --- a/utils/conditions/rollouts_test.go +++ b/utils/conditions/rollouts_test.go @@ -555,6 +555,22 @@ func TestRolloutTimedOut(t *testing.T) { }, expected: true, }, + { + name: "Rollout has not time out when paused", + progressDeadlineSeconds: 5, + newStatus: v1alpha1.RolloutStatus{ + Conditions: conditions(RolloutPausedReason, before), + }, + expected: false, + }, + { + name: "Rollout has not time out when aborted", + progressDeadlineSeconds: 5, + newStatus: v1alpha1.RolloutStatus{ + Conditions: conditions(RolloutAbortedReason, before), + }, + expected: false, + }, } for i := range tests { test := tests[i] From ee356d0aebdd04fe1b8b335040f3efd5a9cec0b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Oct 2024 08:38:55 -0500 Subject: [PATCH 161/219] chore(deps): bump google.golang.org/grpc from 1.66.2 to 1.67.1 (#3903) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.66.2 to 1.67.1. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.66.2...v1.67.1) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 22 +++++++++++----------- go.sum | 52 ++++++++++++++++++++++++++-------------------------- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/go.mod b/go.mod index 74d60f9ad4..d9f3a435e6 100644 --- a/go.mod +++ b/go.mod @@ -41,8 +41,8 @@ require ( github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 golang.org/x/oauth2 v0.23.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 - google.golang.org/grpc v1.66.2 + google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 + google.golang.org/grpc v1.67.1 google.golang.org/protobuf v1.35.1 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.29.3 @@ -62,7 +62,7 @@ require ( ) require ( - cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect github.com/PagerDuty/go-pagerduty v1.7.0 // indirect github.com/bradleyfalzon/ghinstallation/v2 v2.5.0 // indirect github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 // indirect @@ -118,7 +118,7 @@ require ( github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/golang/glog v1.2.1 // indirect + github.com/golang/glog v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/btree v1.1.2 // indirect github.com/google/cel-go v0.17.7 // indirect @@ -201,21 +201,21 @@ require ( go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.19.0 // indirect - golang.org/x/crypto v0.24.0 // indirect + golang.org/x/crypto v0.26.0 // indirect golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.26.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.24.0 // indirect + golang.org/x/term v0.23.0 // indirect + golang.org/x/text v0.17.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 // indirect gomodules.xyz/notify v0.1.1 // indirect google.golang.org/api v0.162.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index 0bb5eed3f6..0a1fc4a86b 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUM cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -166,8 +166,8 @@ github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtM github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b h1:ga8SEFjZ60pxLcmhnThWgvH2wg8376yUJmPhEH4H3kw= -github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20 h1:N+3sFI5GUjRKBi+i0TxYVST9h4Ie192jJWpHvthBBgg= +github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -202,8 +202,8 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/evanphx/json-patch v0.0.0-20200808040245-162e5629780b/go.mod h1:NAJj0yf/KaRKURN6nyi7A9IZydMivZEm9oQLWNjfKDc= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= @@ -284,8 +284,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= +github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -783,8 +783,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -869,8 +869,8 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -893,8 +893,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -961,8 +961,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -971,8 +971,8 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -985,8 +985,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1112,10 +1112,10 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU= -google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1130,8 +1130,8 @@ google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= -google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 1264f8d9b31c53177b666a9145bdb02476f271ad Mon Sep 17 00:00:00 2001 From: Alexandre Gaudreault Date: Sat, 19 Oct 2024 14:25:06 -0400 Subject: [PATCH 162/219] chore: add step plugin proposal (#3480) step plugin proposal Signed-off-by: Alexandre Gaudreault --- docs/proposals/step-plugin.md | 334 ++++++++++++++++++++++++++++++++++ 1 file changed, 334 insertions(+) create mode 100644 docs/proposals/step-plugin.md diff --git a/docs/proposals/step-plugin.md b/docs/proposals/step-plugin.md new file mode 100644 index 0000000000..0c170b7fe7 --- /dev/null +++ b/docs/proposals/step-plugin.md @@ -0,0 +1,334 @@ +--- +title: Step Plugin +authors: + - '@agaudreault' +sponsors: + - '@zaller' +creation-date: 2024-03-27 +--- + +# Step Plugin + +Step plugins can be used to call code built outside of argo-rollout's codebase to execute actions during a canary rollout. + +This document provides technical implementation proposals to avoid implementing rollout steps in Argo Rollout’s codebase. + +## Summary + +Rollout steps need to be implemented natively in Argo Rollout source code. +It makes it difficult for the community to add new rollout steps because their implementation +is coupled with Rollout release cycle. The Rollout maintainers also have to acquire +knowledge on the different technologies used in the steps and validate them on each release. + +## Motivation + +This section is for explicitly listing the motivation, goals and non-goals of this proposal. +Describe why the change is important and the benefits to users. + +### Goals + +The goals of this proposal are: + +- Update steps outside Rollout’s release cycle +- Allow the community experts to maintain their steps +- Allow for a faster step development iteration +- Allow for more features without increasing complexity on the controller +- Allow users to use proprietary steps with Argo Rollouts + +### Non-Goals + +Implement plugins. + +## Proposal + +Rollout already has a plugin mechanism for metric providers and traffic routers as +documented in https://argoproj.github.io/argo-rollouts/plugins/. The implementation is based on [hashicorp/go-plugin](https://github.com/hashicorp/go-plugin). +This mechanism can be extended to support the steps plugin. + +- Consistent with existing behavior. +- Add a `stepPluginStatuses` array to the `.status.canary` field. +- Users can consult the Rollout object after the execution to get details on their status. + +### Use cases + +More details in https://github.com/argoproj/argo-rollouts/issues/2685 + +### Implementation Details/Notes/Constraints + +#### Configuration + +The plugin will be configured alongside existing plugins. + +```yaml +kind: ConfigMap +metadata: + name: argo-rollouts-config +data: + metricProviderPlugins: |- + - name: "argoproj-labs/metrics" + location: "file:///tmp/argo-rollouts/metric-plugin" + args: + - "--log-level" + - "debug" + stepPlugins: |- + - name: "argoproj-labs/curl/v2" + disabled: false + location: "file:///tmp/argo-rollouts/step-plugin" + sha256: "08f588b1c799a37bbe8d0fc74cc1b1492dd70abc" + args: + - "--log-level" + - "debug" +``` + +#### Interface + +_The interface implementation details related to go-plugin and rpc calls have been omitted for clarity._ + +```go +type Phase string + +const ( + PhaseRunning Phase = "Running" + PhaseSuccessful Phase = "Successful" + PhaseFailed Phase = "Failed" + PhaseError Phase = "Error" +) + +type StepContext struct { + PluginName string + Config map[string]interface{} + Status map[string]interface{} +} + +type StepStatus struct { + Index int + Name string + Phase Phase + Message string + StartedAt Time + FinishedAt Time + Status map[string]interface{} +} + +type StepResult struct { + Phase Phase + Message string + RequeueAfter Duration + Status map[string]interface{} +} + +type StepPlugin interface { + Init() error + Run(Rollout, StepContext) (StepResult, error) + Terminate(Rollout, StepContext) (StepResult, error) + Abort(Rollout, StepContext) (StepResult, error) +} +``` + +#### Rollout object (plugin input) + +The step will provide rollout specific configuration defined by the users +as a map of key value pairs allowing the user to pass any declarative configs to the plugin. + +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: Rollout +metadata: + name: example-rollout +spec: + strategy: + canary: + ... + steps: + - setWeight: 20 + - plugin: + name: argoproj/curl + abortOnFailure: false # <--- example + progressDeadline: 30s # <--- example + config: + url: https://example.com/ + some_key: some_value + - pause: {} + - setWeight: 40 + +``` + +#### Rollout Status (plugin output) + +The controller will write a new object to the status. +This object will be used to persist the plugin state after the step execution and to allow other steps to use it. + +```yaml +status: + canary: + stepPluginStatuses: + - index: 2 + name: argoproj/curl + message: Call completed with status code 302 + phase: Successful + startedAt: '2024-02-15T20:05:40Z' + finishedAt: '2024-02-15T20:21:40Z' + status: {} + - index: 4 + name: argoproj/async-task + message: Waiting for result + phase: Running + startedAt: '2024-02-15T20:05:40Z' + finishedAt: null + status: + id: 12 + path: /an/example/property + validated: false +``` + +### Detailed execution flow + +1. **At initialization** + + The plugins are loaded based on configuration and started as processes with the provided arguments in the configuration. + The `Init()` method is called for plugins to perform one-time initialization such as creating clients and establishing connections. + +2. **A rollout reach the plugin step for the first time** + + During the rollout, the controller will use the `currentStepIndex` to find the step to run. + If the step is a plugin, the controller will create a StepContext object based + on the configuration on the Rollout’s step object. + + The controller will try to retrieve the value of the current `stepPluginStatuses`, + and if it matches the current step index, it will add the persisted state to the context. + + It will create a StepStatus object otherwise, set the name and index to the current step, + set the startedAt value to the current time and the phase as Running. + +3. **Running the step plugin** + + The plugin `Run()` method is called with the StepContext. + The plugin implementation will use the StepContext to perform the necessary logic. + +4. **Status is updated** + + Based on the return of the Run command, the StepStatus object is updated. + Then, the StepStatus is assigned to the stepPluginStatuses property. + + The status is persisted in the object. + +5. **Validate step completed** + + If the controller current step is of type plugin, the controller will check if the phase is successful, + and if so, go to the next step. + + If the step is still running, the controller will requeue a reconcile operation based on the value of `RequeueAfter`. + + If the phase is failed, it will update the status and conditions, **aborting** the rollout. + +#### Scenarios + +##### Step plugin completes successfully + +The `stepPluginStatuses` will not contain any object for the current step index, the plugin will perform the desired action successfully and return a successful state. + +The state will be persisted and the controller wil execute the next step. + +##### Step plugin completes with failed phase + +If the step plugin returns a failed phase, the controller will set the rollout to **aborted** and persist the state. + +The user will receive the feedback based on the Progressing condition status. This behavior is consistent with existing mechanisms aborting a rollout. + +##### Step plugin completes with running phase + +If the step plugin returns a running phase, the controller will persist the state, but will not increment the current step index. + +The controller will requeue a reconcile operation based on the value of `RequeueAfter` and terminate the current reconciliation. + +On the next reconciliation, the persisted state will be passed to the plugin `Run()` method. + +##### Step plugin is called multiple times + +If an external error happens causing the controller to crash after it called the `Run()` method and before it could persist the status, +the controller will replay the current plugin step, with a new context, like if it was the first time it is called. + +> **A step plugin can be called multiple times and operations should be idempotent.** + +##### Rollout is fully promoted during a step plugin + +If a Rollout is forcefully considered fully promoted while the current step is in a Running phase, +the plugin will call the `Terminate()` method with the current context on the next reconciliation and update the status based on the result. + +##### Rollout aborted during a step plugin + +If a Rollout is aborted while the current step is in a Running phase, the plugin will call the `Abort()` method with the current context on the next reconciliation. +The controller will call the `Abort()` operation for each step that were executed in the reverse order. +The steps may or may not perform any action during the Abort. +The result of the abort will be saved in the status, overriding the state persisted during the `Run()`. +If the Abort operation has an error, the error is propagated to the controller. +The controller has the responsibility to retry the Abort operation, and eventually proceed with the next step if it never succeeds. + +##### The step plugin reports an error + +Before returning the error, the status is persisted with the error phase and message. Other properties of the current status remain unmodified so the step can be re-executed with the last known valid status. + +For an expected retryable error, the plugin should return a Running phase with a RequeueAfter value to retry the execution. +For an expected un-retryable error, the plugin should return a Failed status. +After the state is persisted, the error is propagated to the controller and the controller error-handling logic will handle the error. + +##### The step plugin uses Rollout information + +The step plugin may need to have access to the current state of the Rollout. The step plugin will receive a deep copy of the rollout object in parameter. + +##### I can investigate my step plugin execution + +A user wants to know what happened during their custom step plugin after the execution. They can use the status in the Rollout object. + +##### State is shared between plugins + +A user wants to use an API to publish information about the rollout. The plugin first calls the API that returns a conversation ID. +Other steps need to use the conversationID during their execution. +The plugin step receives in parameters the full rollout object and the pluginName. This information can be used to retrieve the status of other plugin execution. + +An utility function such as `PluginHelper.GetStatuses(rollout, pluginName)` can be implemented and made available to the plugins. + +##### I want my rollout to continue event if my plugin failed + +A parameter such as `abortOnFailure` can be added to the Rollout plugin step configuration object. +When specified, the controller can use the value to modify the default logic. + +##### I dont want my plugin execution time to count towards the progress deadline + +A parameter such as `ignoreProgressDeadline` can be added to the Rollout plugin step configuration object. +When specified, the controller can use the value to modify the default logic. + +### Security Considerations + +- Plugins binary can be validated with the configured `sha256`. + +### Risks and Mitigations + +- Rollout status size can grow more than expected based on plugins hygiene. + - Object size can be validated with `unsafe.Sizeof(struct)` and a size limit can be imposed. +- Plugins that are failing or causing problems cannot be removed without updating all the Rollouts. + - A `disabled` config can be added globally and ignore the plugin execution if true. + +### Upgrade / Downgrade Strategy + +It is expected that plugins will be compiled with different versions than the running argo-rollout controller. The plugins version could be either newer or older than the controller. + +The hashicorp/go-plugin uses gob encoding with rpc. + +> “The source and destination values/types need not correspond exactly. For structs, fields (identified by name) that are in the source but absent from the receiving variable will be ignored. Fields that are in the receiving variable but missing from the transmitted type or value will be ignored in the destination. If a field with the same name is present in both, their types must be compatible. Both the receiver and transmitter will do all necessary indirection and dereferencing to convert between gobs and actual Go values.” - package [encoding/gob](https://pkg.go.dev/encoding/gob) + +Plugins should validate the objects they receive in parameters such as the `Rollout` and user confiuguration. If they expect a property to be set and it is not, it is highly probably that the controller's object version does not have that property. + +For breaking changes, hashicorp/go-plugin has a `ProtocolVersion` property that can be used in the future. + +Plugins can also be added with different names, which would require update to the Rollout CR objects as well. + +## Drawbacks + +- Gives a lot of power to the plugin and bad plugins could destabilize the rollouts +- If plugins need more permission, the access needs to be given using the Rollout service account. + +## Alternatives + +- Only implement vetted code in the argo-rollout codebase. +- Create a plugin that calls other containers From 8ac6be847a8b1aba96b33cd8a3c07e2f6f04f14d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sel=C3=A7uk=20Usta?= Date: Tue, 29 Oct 2024 17:21:03 +0300 Subject: [PATCH 163/219] docs(analysis): new plugin is added to the documentation (#3915) USERS.md is modified & new plugin is added to the documentation Signed-off-by: selcukusta --- USERS.md | 4 +++- docs/analysis/plugins.md | 21 ++++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/USERS.md b/USERS.md index c6878dc90b..0cd5f2c882 100644 --- a/USERS.md +++ b/USERS.md @@ -1,4 +1,5 @@ ## Who uses Argo Rollouts? + Organizations below are **officially** using Argo Rollouts. Please send a PR with your organization name if you are using Argo Rollouts. 1. [Ada](https://www.ada.cx) @@ -25,6 +26,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit 1. [Gllue](https://gllue.com) 1. [Groww](https://groww.in/) 1. [HashiCorp](https://www.hashicorp.com/) +1. [Hepsiburada](https://hepsiburada.com/) 1. [Ibotta](https://home.ibotta.com/) 1. [Intuit](https://www.intuit.com/) 1. [New Relic](https://newrelic.com/) @@ -49,7 +51,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit 1. [Spotify](https://www.spotify.com/) 1. [Synamedia](https://www.synamedia.com) 1. [TBC Bank](https://tbcbank.ge/) -2. [Trustly](https://www.trustly.com/) +1. [Trustly](https://www.trustly.com/) 1. [Tuhu](https://www.tuhu.cn/) 1. [Twilio SendGrid](https://sendgrid.com) 1. [Ubie](https://ubie.life/) diff --git a/docs/analysis/plugins.md b/docs/analysis/plugins.md index a7fd159a4a..4f3387b53b 100644 --- a/docs/analysis/plugins.md +++ b/docs/analysis/plugins.md @@ -1,7 +1,7 @@ # Metric Plugins !!! important - Available since v1.5 - Status: Alpha +Available since v1.5 - Status: Alpha Argo Rollouts supports getting analysis metrics via 3rd party plugin system. This allows users to extend the capabilities of Rollouts to support metric providers that are not natively supported. Rollout's uses a plugin library called @@ -18,9 +18,9 @@ into the rollouts controller container. The second method is to use a HTTP(S) se There are a few ways to mount the plugin executable into the rollouts controller container. Some of these will depend on your particular infrastructure. Here are a few methods: -* Using an init container to download the plugin executable -* Using a Kubernetes volume mount with a shared volume such as NFS, EBS, etc. -* Building the plugin into the rollouts controller container +- Using an init container to download the plugin executable +- Using a Kubernetes volume mount with a shared volume such as NFS, EBS, etc. +- Building the plugin into the rollouts controller container Then you can use the configmap to point to the plugin executable file location. Example: @@ -68,7 +68,14 @@ responsibility of the Argo Rollouts administrator to define the plugin installat ## List of Available Plugins (alphabetical order) #### Add Your Plugin Here - * If you have created a plugin, please submit a PR to add it to this list. + +- If you have created a plugin, please submit a PR to add it to this list. + +#### [rollouts-plugin-metric-opensearch](https://github.com/selcukusta/rollouts-plugin-metric-opensearch) + +- The application is an OpenSearch plugin designed for use with the Argo Rollouts plugin system. This plugin enables the integration of OpenSearch metrics into Argo Rollouts, allowing for advanced metric analysis and monitoring during application rollouts. + #### [rollouts-plugin-metric-sample-prometheus](https://github.com/argoproj-labs/rollouts-plugin-metric-sample-prometheus) - * This is just a sample plugin that can be used as a starting point for creating your own plugin. -It is not meant to be used in production. It is based on the built-in prometheus provider. + +- This is just a sample plugin that can be used as a starting point for creating your own plugin. + It is not meant to be used in production. It is based on the built-in prometheus provider. From 79c445f48e2832677dfa65aa9cf9075798abb059 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Oct 2024 09:22:04 -0500 Subject: [PATCH 164/219] chore(deps): bump github.com/aws/aws-sdk-go-v2 from 1.32.2 to 1.32.3 (#3919) Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.32.2 to 1.32.3. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.32.2...v1.32.3) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d9f3a435e6..28d378427b 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.32.2 + github.com/aws/aws-sdk-go-v2 v1.32.3 github.com/aws/aws-sdk-go-v2/config v1.27.38 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.2 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 diff --git a/go.sum b/go.sum index 0a1fc4a86b..4f4fa44aee 100644 --- a/go.sum +++ b/go.sum @@ -96,8 +96,8 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.32.2 h1:AkNLZEyYMLnx/Q/mSKkcMqwNFXMAvFto9bNsHqcTduI= -github.com/aws/aws-sdk-go-v2 v1.32.2/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo= +github.com/aws/aws-sdk-go-v2 v1.32.3 h1:T0dRlFBKcdaUPGNtkBSwHZxrtis8CQU17UpNBZYd0wk= +github.com/aws/aws-sdk-go-v2 v1.32.3/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo= github.com/aws/aws-sdk-go-v2/config v1.27.38 h1:mMVyJJuSUdbD4zKXoxDgWrgM60QwlFEg+JhihCq6wCw= github.com/aws/aws-sdk-go-v2/config v1.27.38/go.mod h1:6xOiNEn58bj/64MPKx89r6G/el9JZn8pvVbquSqTKK4= github.com/aws/aws-sdk-go-v2/credentials v1.17.36 h1:zwI5WrT+oWWfzSKoTNmSyeBKQhsFRJRv+PGW/UZW+Yk= From 869687932a56293a7f53fd767964a9fb38c54b10 Mon Sep 17 00:00:00 2001 From: Ian Rudie Date: Tue, 29 Oct 2024 10:23:03 -0400 Subject: [PATCH 165/219] docs: GTW API support changed to Gloo Gateway instead of GloodMesh (#3914) correct GTW API support to state Gloo Gateway instead of GloodMesh Signed-off-by: Ian Rudie --- docs/features/traffic-management/plugins.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/traffic-management/plugins.md b/docs/features/traffic-management/plugins.md index 7f8d8e1b11..fe0dc22b19 100644 --- a/docs/features/traffic-management/plugins.md +++ b/docs/features/traffic-management/plugins.md @@ -80,4 +80,4 @@ responsibility of the Argo Rollouts administrator to define the plugin installat * This is a plugin that allows argo-rollouts to work with contour's resource: HTTPProxy. It enables traffic shaping patterns such as canary releases and more. #### [Gateway API](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/) -* Provide support for Gateway API, which includes Kuma, Traefix, cilium, Contour, GloodMesh, HAProxy, and [many others](https://gateway-api.sigs.k8s.io/implementations/#implementation-status). \ No newline at end of file +* Provide support for Gateway API, which includes Kuma, Traefix, cilium, Contour, Gloo Gateway, HAProxy, and [many others](https://gateway-api.sigs.k8s.io/implementations/#implementation-status). From 8503baa8fe6231d0a923b3e49690af0ec9aa8224 Mon Sep 17 00:00:00 2001 From: Maksim Bezsaznyj Date: Tue, 29 Oct 2024 10:46:58 -0400 Subject: [PATCH 166/219] fix(controller): weighted experiment validation should allow delegating to trafficRouter plugins (#3909) Signed-off-by: Maksim Bezsaznyj --- pkg/apis/rollouts/validation/validation.go | 4 ++-- pkg/apis/rollouts/validation/validation_test.go | 13 ++++++++++++- pkg/kubectl-argo-rollouts/cmd/lint/lint_test.go | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pkg/apis/rollouts/validation/validation.go b/pkg/apis/rollouts/validation/validation.go index 6b4ddb45e2..d9c31a37f1 100644 --- a/pkg/apis/rollouts/validation/validation.go +++ b/pkg/apis/rollouts/validation/validation.go @@ -387,8 +387,8 @@ func ValidateRolloutStrategyCanary(rollout *v1alpha1.Rollout, fldPath *field.Pat if template.Weight != nil { if canary.TrafficRouting == nil { allErrs = append(allErrs, field.Invalid(stepFldPath.Child("experiment").Child("templates").Index(tmplIndex).Child("weight"), *canary.Steps[i].Experiment.Templates[tmplIndex].Weight, InvalidCanaryExperimentTemplateWeightWithoutTrafficRouting)) - } else if canary.TrafficRouting.ALB == nil && canary.TrafficRouting.SMI == nil && canary.TrafficRouting.Istio == nil { - allErrs = append(allErrs, field.Invalid(stepFldPath.Child("experiment").Child("templates").Index(tmplIndex).Child("weight"), *canary.Steps[i].Experiment.Templates[tmplIndex].Weight, "Experiment template weight is only available for TrafficRouting with SMI, ALB, and Istio at this time")) + } else if canary.TrafficRouting.ALB == nil && canary.TrafficRouting.SMI == nil && canary.TrafficRouting.Istio == nil && len(canary.TrafficRouting.Plugins) == 0 { + allErrs = append(allErrs, field.Invalid(stepFldPath.Child("experiment").Child("templates").Index(tmplIndex).Child("weight"), *canary.Steps[i].Experiment.Templates[tmplIndex].Weight, "Experiment template weight is only available for TrafficRouting with SMI, ALB, Istio and Plugins at this time")) } } } diff --git a/pkg/apis/rollouts/validation/validation_test.go b/pkg/apis/rollouts/validation/validation_test.go index c9fc9ad923..84fc93b5dd 100644 --- a/pkg/apis/rollouts/validation/validation_test.go +++ b/pkg/apis/rollouts/validation/validation_test.go @@ -17,7 +17,7 @@ import ( ) const ( - errTrafficRoutingWithExperimentSupport = "Experiment template weight is only available for TrafficRouting with SMI, ALB, and Istio at this time" + errTrafficRoutingWithExperimentSupport = "Experiment template weight is only available for TrafficRouting with SMI, ALB, Istio and Plugins at this time" ) func TestValidateRollout(t *testing.T) { @@ -1094,4 +1094,15 @@ func TestCanaryExperimentStepWithWeight(t *testing.T) { assert.Equal(t, 1, len(allErrs)) assert.Equal(t, errTrafficRoutingWithExperimentSupport, allErrs[0].Detail) }) + + t.Run("success - Plugins", func(t *testing.T) { + invalidRo := ro.DeepCopy() + invalidRo.Spec.Strategy.Canary.TrafficRouting = &v1alpha1.RolloutTrafficRouting{ + Plugins: map[string]json.RawMessage{ + "any/plugin": {}, + }, + } + allErrs := ValidateRolloutStrategyCanary(invalidRo, field.NewPath("")) + assert.Equal(t, 0, len(allErrs)) + }) } diff --git a/pkg/kubectl-argo-rollouts/cmd/lint/lint_test.go b/pkg/kubectl-argo-rollouts/cmd/lint/lint_test.go index e9b66fd2ed..6f6d86a610 100644 --- a/pkg/kubectl-argo-rollouts/cmd/lint/lint_test.go +++ b/pkg/kubectl-argo-rollouts/cmd/lint/lint_test.go @@ -85,7 +85,7 @@ func TestLintInvalidRollout(t *testing.T) { }, { filename: "testdata/invalid-nginx-canary.yml", - errmsg: "Error: spec.strategy.steps[1].experiment.templates[0].weight: Invalid value: 20: Experiment template weight is only available for TrafficRouting with SMI, ALB, and Istio at this time\n", + errmsg: "Error: spec.strategy.steps[1].experiment.templates[0].weight: Invalid value: 20: Experiment template weight is only available for TrafficRouting with SMI, ALB, Istio and Plugins at this time\n", }, } From cb86d48e57d76ce51ed9765ac53e9bdd47028ca2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Oct 2024 09:47:20 -0500 Subject: [PATCH 167/219] chore(deps): bump actions/setup-go from 5.0.2 to 5.1.0 (#3912) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.0.2 to 5.1.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v5.0.2...v5.1.0) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/gh-pages.yaml | 2 +- .github/workflows/go.yml | 6 +++--- .github/workflows/image-reuse.yaml | 2 +- .github/workflows/release.yaml | 4 ++-- .github/workflows/testing.yaml | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/gh-pages.yaml b/.github/workflows/gh-pages.yaml index bc0cb4d810..d2ef3a1c96 100644 --- a/.github/workflows/gh-pages.yaml +++ b/.github/workflows/gh-pages.yaml @@ -24,7 +24,7 @@ jobs: with: python-version: 3.x - name: Set up Go - uses: actions/setup-go@v5.0.2 + uses: actions/setup-go@v5.1.0 with: go-version: '1.22' - name: build diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index b64dba1556..290d0f216a 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go - uses: actions/setup-go@v5.0.2 + uses: actions/setup-go@v5.1.0 with: go-version: ${{ env.GOLANG_VERSION }} - name: Checkout code @@ -42,7 +42,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go - uses: actions/setup-go@v5.0.2 + uses: actions/setup-go@v5.1.0 with: go-version: ${{ env.GOLANG_VERSION }} id: go @@ -72,7 +72,7 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - name: Setup Golang - uses: actions/setup-go@v5.0.2 + uses: actions/setup-go@v5.1.0 with: go-version: ${{ env.GOLANG_VERSION }} # k8s codegen generates files into GOPATH location instead of the GitHub git checkout location diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index 165873dec4..ad43e96f6d 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -69,7 +69,7 @@ jobs: if: ${{ github.ref_type != 'tag'}} - name: Setup Golang - uses: actions/setup-go@v5.0.2 # v3.5.0 + uses: actions/setup-go@v5.1.0 # v3.5.0 with: go-version: ${{ inputs.go-version }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d250e7f4e9..6b0cca9833 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -90,7 +90,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Golang - uses: actions/setup-go@v5.0.2 # v4.0.1 + uses: actions/setup-go@v5.1.0 # v4.0.1 with: go-version: ${{ env.GOLANG_VERSION }} @@ -163,7 +163,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Golang - uses: actions/setup-go@v5.0.2 # v4.0.0 + uses: actions/setup-go@v5.1.0 # v4.0.0 with: go-version: ${{ env.GOLANG_VERSION }} diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml index 7122e8308b..d3b3d561f9 100644 --- a/.github/workflows/testing.yaml +++ b/.github/workflows/testing.yaml @@ -41,7 +41,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go - uses: actions/setup-go@v5.0.2 + uses: actions/setup-go@v5.1.0 with: go-version: ${{ env.GOLANG_VERSION }} id: go @@ -91,7 +91,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go - uses: actions/setup-go@v5.0.2 + uses: actions/setup-go@v5.1.0 with: go-version: '1.22' - uses: actions/checkout@v4 @@ -165,7 +165,7 @@ jobs: - test-e2e steps: - name: Set up Go - uses: actions/setup-go@v5.0.2 + uses: actions/setup-go@v5.1.0 with: go-version: ${{ env.GOLANG_VERSION }} id: go From 51b02adaba803ca6e4b43896006cb2adab85f7f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Oct 2024 09:47:46 -0500 Subject: [PATCH 168/219] chore(deps): bump github.com/hashicorp/go-plugin from 1.6.1 to 1.6.2 (#3908) Bumps [github.com/hashicorp/go-plugin](https://github.com/hashicorp/go-plugin) from 1.6.1 to 1.6.2. - [Release notes](https://github.com/hashicorp/go-plugin/releases) - [Changelog](https://github.com/hashicorp/go-plugin/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/go-plugin/compare/v1.6.1...v1.6.2) --- updated-dependencies: - dependency-name: github.com/hashicorp/go-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 3 +-- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 28d378427b..2abf3b6eda 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/hashicorp/go-plugin v1.6.1 + github.com/hashicorp/go-plugin v1.6.2 github.com/influxdata/influxdb-client-go/v2 v2.14.0 github.com/juju/ansiterm v1.0.0 github.com/machinebox/graphql v0.2.2 @@ -154,7 +154,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/go-testing-interface v1.0.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/spdystream v0.2.0 // indirect diff --git a/go.sum b/go.sum index 4f4fa44aee..058d99aa60 100644 --- a/go.sum +++ b/go.sum @@ -414,8 +414,8 @@ github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/S github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.14.1 h1:nQcJDQwIAGnmoUWp8ubocEX40cCml/17YkF6csQLReU= github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= -github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= +github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog= +github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q= github.com/hashicorp/go-retryablehttp v0.5.1/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ= github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= @@ -525,8 +525,6 @@ github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFW github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= From 9ea0de1f6e046a6f143434e4c6f7339a373a2612 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Oct 2024 14:57:17 +0000 Subject: [PATCH 169/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.38 to 1.28.1 (#3917) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.38 to 1.28.1. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.38...config/v1.28.1) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 20 ++++++++++---------- go.sum | 40 ++++++++++++++++++++-------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index 2abf3b6eda..54f3b12878 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.32.3 - github.com/aws/aws-sdk-go-v2/config v1.27.38 + github.com/aws/aws-sdk-go-v2/config v1.28.1 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.2 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.22.0 @@ -83,17 +83,17 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.36 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.42 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.18 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.22 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.22 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.3 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.23.2 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.31.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.24.3 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.32.3 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect diff --git a/go.sum b/go.sum index 058d99aa60..8bc2a57919 100644 --- a/go.sum +++ b/go.sum @@ -98,34 +98,34 @@ github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WN github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v1.32.3 h1:T0dRlFBKcdaUPGNtkBSwHZxrtis8CQU17UpNBZYd0wk= github.com/aws/aws-sdk-go-v2 v1.32.3/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo= -github.com/aws/aws-sdk-go-v2/config v1.27.38 h1:mMVyJJuSUdbD4zKXoxDgWrgM60QwlFEg+JhihCq6wCw= -github.com/aws/aws-sdk-go-v2/config v1.27.38/go.mod h1:6xOiNEn58bj/64MPKx89r6G/el9JZn8pvVbquSqTKK4= -github.com/aws/aws-sdk-go-v2/credentials v1.17.36 h1:zwI5WrT+oWWfzSKoTNmSyeBKQhsFRJRv+PGW/UZW+Yk= -github.com/aws/aws-sdk-go-v2/credentials v1.17.36/go.mod h1:3AG/sY1rc9NJrNWcN/3KPU4SIDPGTrd/qegKB0TnFdE= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14/go.mod h1:7I0Ju7p9mCIdlrfS+JCgqcYD0VXz/N4yozsox+0o078= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 h1:UAsR3xA31QGf79WzpG/ixT9FZvQlh5HY1NRqSHBNOCk= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21/go.mod h1:JNr43NFf5L9YaG3eKTm7HQzls9J+A9YYcGI5Quh1r2Y= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 h1:6jZVETqmYCadGFvrYEQfC5fAQmlo80CeL5psbno6r0s= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21/go.mod h1:1SR0GbLlnN3QUmYaflZNiH1ql+1qrSiB2vwcJ+4UM60= +github.com/aws/aws-sdk-go-v2/config v1.28.1 h1:oxIvOUXy8x0U3fR//0eq+RdCKimWI900+SV+10xsCBw= +github.com/aws/aws-sdk-go-v2/config v1.28.1/go.mod h1:bRQcttQJiARbd5JZxw6wG0yIK3eLeSCPdg6uqmmlIiI= +github.com/aws/aws-sdk-go-v2/credentials v1.17.42 h1:sBP0RPjBU4neGpIYyx8mkU2QqLPl5u9cmdTWVzIpHkM= +github.com/aws/aws-sdk-go-v2/credentials v1.17.42/go.mod h1:FwZBfU530dJ26rv9saAbxa9Ej3eF/AK0OAY86k13n4M= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.18 h1:68jFVtt3NulEzojFesM/WVarlFpCaXLKaBxDpzkQ9OQ= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.18/go.mod h1:Fjnn5jQVIo6VyedMc0/EhPpfNlPl7dHV916O6B+49aE= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.22 h1:Jw50LwEkVjuVzE1NzkhNKkBf9cRN7MtE1F/b2cOKTUM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.22/go.mod h1:Y/SmAyPcOTmpeVaWSzSKiILfXTVJwrGmYZhcRbhWuEY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.22 h1:981MHwBaRZM7+9QSR6XamDzF/o7ouUGxFzr+nVSIhrs= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.22/go.mod h1:1RA1+aBEfn+CAB/Mh0MB6LsdCYCnjZm7tKXtnk499ZQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.2 h1:eMh+iBTF1CbpHMfiRvIaVm+rzrH1DOzuSFaR55O+bBo= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.2/go.mod h1:/A4zNqF1+RS5RV+NNLKIzUX1KtK5SoWgf/OpiqrwmBo= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGfT8wMXtuP3D5CRmMjARHv9ZmzFUMJznHDOY3w= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5/go.mod h1:QdZ3OmoIjSX+8D1OPAzPxDfjXASbBMDsz9qvtyIhtik= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 h1:Xbwbmk44URTiHNx6PNo0ujDE6ERlsCKJD3u1zfnzAPg= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20/go.mod h1:oAfOFzUB14ltPZj1rWwRc3d/6OgD76R8KlvU3EqM9Fg= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 h1:TToQNkvGguu209puTojY/ozlqy2d/SFNcoLIqTFi42g= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0/go.mod h1:0jp+ltwkf+SwG2fm/PKo8t4y8pJSgOCO4D8Lz3k0aHQ= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.3 h1:qcxX0JYlgWH3hpPUnd6U0ikcl6LLA9sLkXE2w1fpMvY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.3/go.mod h1:cLSNEmI45soc+Ef8K/L+8sEA3A3pYFEYf5B5UI+6bH4= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.23.2 h1:yzi/y/vKlLyzOfG7pSu5ONNGRxHIgLeDrV4w2AMRCo0= -github.com/aws/aws-sdk-go-v2/service/sso v1.23.2/go.mod h1:XRlMvmad0ZNL+75C5FYdMvbbLkd6qiqz6foR1nA1PXY= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2 h1:3gb6pYhYLjo8rB1h2Tqs61wpjRd3rQymYcVq/pp0yxI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E= -github.com/aws/aws-sdk-go-v2/service/sts v1.31.2 h1:O6tyji8mXmBGsHvTCB0VIhrDw19lGTUSbKIyjnw79s8= -github.com/aws/aws-sdk-go-v2/service/sts v1.31.2/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.3 h1:UTpsIf0loCIWEbrqdLb+0RxnTXfWh2vhw4nQmFi4nPc= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.3/go.mod h1:FZ9j3PFHHAR+w0BSEjK955w5YD2UwB/l/H0yAK3MJvI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.3 h1:2YCmIXv3tmiItw0LlYf6v7gEHebLY45kBEnPezbUKyU= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.3/go.mod h1:u19stRyNPxGhj6dRm+Cdgu6N75qnbW7+QN0q0dsAk58= +github.com/aws/aws-sdk-go-v2/service/sts v1.32.3 h1:wVnQ6tigGsRqSWDEEyH6lSAJ9OyFUsSnbaUWChuSGzs= +github.com/aws/aws-sdk-go-v2/service/sts v1.32.3/go.mod h1:VZa9yTFyj4o10YGsmDO4gbQJUvvhY72fhumT8W4LqsE= github.com/aws/smithy-go v1.22.0 h1:uunKnWlcoL3zO7q+gG2Pk53joueEOsnNB28QdMsmiMM= github.com/aws/smithy-go v1.22.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= From 68afdbf9b06e4626bcd693cedc489b218b124098 Mon Sep 17 00:00:00 2001 From: Alexandre Gaudreault Date: Tue, 29 Oct 2024 10:08:32 -0700 Subject: [PATCH 170/219] docs: document canary step plugin (alpha) (#3906) * docs(plugins): document canary step plugin (alpha) Signed-off-by: Alexandre Gaudreault * add docs for step plugins Signed-off-by: Alexandre Gaudreault * mkdocs Signed-off-by: Alexandre Gaudreault * spell check Signed-off-by: Alexandre Gaudreault * review Signed-off-by: Alexandre Gaudreault --------- Signed-off-by: Alexandre Gaudreault --- docs/analysis/plugins.md | 44 +-- docs/features/{canary.md => canary/index.md} | 82 +++-- docs/features/canary/plugins.md | 168 ++++++++++ docs/features/specification.md | 335 ++++++++++--------- docs/features/traffic-management/plugins.md | 66 ++-- docs/plugins.md | 82 ++++- mkdocs.yml | 3 +- 7 files changed, 512 insertions(+), 268 deletions(-) rename docs/features/{canary.md => canary/index.md} (81%) create mode 100644 docs/features/canary/plugins.md diff --git a/docs/analysis/plugins.md b/docs/analysis/plugins.md index 4f3387b53b..46e2ee124f 100644 --- a/docs/analysis/plugins.md +++ b/docs/analysis/plugins.md @@ -1,14 +1,16 @@ # Metric Plugins -!!! important -Available since v1.5 - Status: Alpha +!!! warning "Alpha Feature (Since 1.5.0)" -Argo Rollouts supports getting analysis metrics via 3rd party plugin system. This allows users to extend the capabilities of Rollouts + This is an experimental, [alpha-quality](https://github.com/argoproj/argoproj/blob/main/community/feature-status.md#alpha) + feature that allows you to support metric providers that are not natively supported. + +Argo Rollouts supports getting analysis metrics via 3rd party [plugin system](../plugins.md). This allows users to extend the capabilities of Rollouts to support metric providers that are not natively supported. Rollout's uses a plugin library called [go-plugin](https://github.com/hashicorp/go-plugin) to do this. You can find a sample plugin here: [rollouts-plugin-metric-sample-prometheus](https://github.com/argoproj-labs/rollouts-plugin-metric-sample-prometheus) -## Using a Metric Plugin +## Installing There are two methods of installing and using an argo rollouts plugin. The first method is to mount up the plugin executable into the rollouts controller container. The second method is to use a HTTP(S) server to host the plugin executable. @@ -37,6 +39,19 @@ data: ### Using a HTTP(S) server to host the plugin executable +!!! warning "Installing a plugin with http(s)" + + Depending on which method you use to install and the plugin, there are some things to be aware of. + The rollouts controller will not start if it can not download or find the plugin executable. This means that if you are using + a method of installation that requires a download of the plugin and the server hosting the plugin for some reason is not available and the rollouts + controllers pod got deleted while the server was down or is coming up for the first time, it will not be able to start until + the server hosting the plugin is available again. + + Argo Rollouts will download the plugin at startup only once but if the pod is deleted it will need to download the plugin again on next startup. Running + Argo Rollouts in HA mode can help a little with this situation because each pod will download the plugin at startup. So if a single pod gets + deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the + responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach. + Argo Rollouts supports downloading the plugin executable from a HTTP(S) server. To use this method, you will need to configure the controller via the `argo-rollouts-config` configmap and set `pluginLocation` to a http(s) url. Example: @@ -52,30 +67,15 @@ data: sha256: "dac10cbf57633c9832a17f8c27d2ca34aa97dd3d" #optional sha256 checksum of the plugin executable ``` -## Some words of caution - -Depending on which method you use to install and the plugin, there are some things to be aware of. -The rollouts controller will not start if it can not download or find the plugin executable. This means that if you are using -a method of installation that requires a download of the plugin and the server hosting the plugin for some reason is not available and the rollouts -controllers pod got deleted while the server was down or is coming up for the first time, it will not be able to start until -the server hosting the plugin is available again. - -Argo Rollouts will download the plugin at startup only once but if the pod is deleted it will need to download the plugin again on next startup. Running -Argo Rollouts in HA mode can help a little with this situation because each pod will download the plugin at startup. So if a single pod gets -deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the -responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach. - ## List of Available Plugins (alphabetical order) -#### Add Your Plugin Here - -- If you have created a plugin, please submit a PR to add it to this list. +If you have created a plugin, please submit a PR to add it to this list. -#### [rollouts-plugin-metric-opensearch](https://github.com/selcukusta/rollouts-plugin-metric-opensearch) +### [rollouts-plugin-metric-opensearch](https://github.com/selcukusta/rollouts-plugin-metric-opensearch) - The application is an OpenSearch plugin designed for use with the Argo Rollouts plugin system. This plugin enables the integration of OpenSearch metrics into Argo Rollouts, allowing for advanced metric analysis and monitoring during application rollouts. -#### [rollouts-plugin-metric-sample-prometheus](https://github.com/argoproj-labs/rollouts-plugin-metric-sample-prometheus) +### [rollouts-plugin-metric-sample-prometheus](https://github.com/argoproj-labs/rollouts-plugin-metric-sample-prometheus) - This is just a sample plugin that can be used as a starting point for creating your own plugin. It is not meant to be used in production. It is based on the built-in prometheus provider. diff --git a/docs/features/canary.md b/docs/features/canary/index.md similarity index 81% rename from docs/features/canary.md rename to docs/features/canary/index.md index 4e3dab50c8..d14967ae69 100644 --- a/docs/features/canary.md +++ b/docs/features/canary/index.md @@ -1,15 +1,19 @@ # Canary Deployment Strategy + A canary rollout is a deployment strategy where the operator releases a new version of their application to a small percentage of the production traffic. ## Overview + Since there is no agreed upon standard for a canary deployment, the rollouts controller allows users to outline how they want to run their canary deployment. Users can define a list of steps the controller uses to manipulate the ReplicaSets when there is a change to the `.spec.template`. Each step will be evaluated before the new ReplicaSet is promoted to the stable version, and the old version is completely scaled down. -Each step can have one of two fields. The `setWeight` field dictates the percentage of traffic that should be sent to the canary, and the `pause` struct instructs the rollout to pause. When the controller reaches a `pause` step for a rollout, it will add a `PauseCondition` struct to the `.status.PauseConditions` field. If the `duration` field within the `pause` struct is set, the rollout will not progress to the next step until it has waited for the value of the `duration` field. Otherwise, the rollout will wait indefinitely until that Pause condition is removed. By using the `setWeight` and the `pause` fields, a user can declaratively describe how they want to progress to the new version. Below is an example of a canary strategy. +There are multiple steps available, the most basic ones are `setWeight` and `pause`. The `setWeight` field dictates the percentage of traffic that should be sent to the canary, and the `pause` step instructs the rollout to pause. When the controller reaches a `pause` step for a rollout, it will add a `PauseCondition` struct to the `.status.PauseConditions` field. If the `duration` field within the `pause` struct is set, the rollout will not progress to the next step until it has waited for the value of the `duration` field. Otherwise, the rollout will wait indefinitely until that Pause condition is removed. By using the `setWeight` and the `pause` fields, a user can declaratively describe how they want to progress to the new version. Below is an example of a canary strategy. !!! important - If the canary Rollout does not use [traffic management](traffic-management/index.md), the Rollout makes a best effort attempt to achieve the percentage listed in the last `setWeight` step between the new and old version. For example, if a Rollout has 10 Replicas and 10% for the first `setWeight` step, the controller will scale the new desired ReplicaSet to 1 replicas and the old stable ReplicaSet to 9. In the case where the setWeight is 41%, the Rollout attempts to get there by finding the whole number with the smallest delta, rounding up the calculation if the deltas are equals (i.e. the new ReplicaSet has 4 pods since 41% of 10 is closer to 4/10 than 5/10, and the old ReplicaSet has 6 pods). If a user wants to have more fine-grained control of the percentages without a large number of Replicas, that user should use the [traffic management](#trafficrouting) functionality. + + If the canary Rollout does not use [traffic management](traffic-management/index.md), the Rollout makes a best effort attempt to achieve the percentage listed in the last `setWeight` step between the new and old version. For example, if a Rollout has 10 Replicas and 10% for the first `setWeight` step, the controller will scale the new desired ReplicaSet to 1 replicas and the old stable ReplicaSet to 9. In the case where the setWeight is 41%, the Rollout attempts to get there by finding the whole number with the smallest delta, rounding up the calculation if the deltas are equals (i.e. the new ReplicaSet has 4 pods since 41% of 10 is closer to 4/10 than 5/10, and the old ReplicaSet has 6 pods). If a user wants to have more fine-grained control of the percentages without a large number of Replicas, that user should use the [traffic management](#trafficrouting) functionality. ## Example + ```yaml apiVersion: argoproj.io/v1alpha1 kind: Rollout @@ -26,25 +30,26 @@ spec: app: nginx spec: containers: - - name: nginx - image: nginx:1.15.4 - ports: - - containerPort: 80 + - name: nginx + image: nginx:1.15.4 + ports: + - containerPort: 80 minReadySeconds: 30 revisionHistoryLimit: 3 strategy: canary: #Indicates that the rollout should use the Canary strategy - maxSurge: "25%" + maxSurge: '25%' maxUnavailable: 0 steps: - - setWeight: 10 - - pause: - duration: 1h # 1 hour - - setWeight: 20 - - pause: {} # pause indefinitely + - setWeight: 10 + - pause: + duration: 1h # 1 hour + - setWeight: 20 + - pause: {} # pause indefinitely ``` ## Pause Duration + Pause duration can be specified with an optional time unit suffix. Valid time units are "s", "m", "h". Defaults to "s" if not specified. ```yaml @@ -52,11 +57,11 @@ spec: strategy: canary: steps: - - pause: { duration: 10 } # 10 seconds + - pause: { duration: 10 } # 10 seconds - pause: { duration: 10s } # 10 seconds - pause: { duration: 10m } # 10 minutes - pause: { duration: 10h } # 10 hours - - pause: {} # pause indefinitely + - pause: {} # pause indefinitely ``` If no `duration` is specified for a pause step, the rollout will be paused indefinitely. To unpause, use the [argo kubectl plugin](kubectl-plugin.md) `promote` command. @@ -81,31 +86,31 @@ match the traffic weight. Some use cases for this: the canary, while setWeight is still set to 0. 3. You wish to scale the canary up to 100%, in order to facilitate traffic shadowing. - !!! important + Setting canary scale is only available when using the canary strategy with a traffic router, since the basic canary needs to control canary scale in order to approximate canary weight. To control canary scales and weights during steps, use the `setCanaryScale` step and indicate which scale the the canary should use: -* explicit replica count without changing traffic weight (`replicas`) -* explicit weight percentage of total spec.replicas without changing traffic weight(`weight`) -* to or not to match current canary's `setWeight` step (`matchTrafficWeight: true or false`) +- explicit replica count without changing traffic weight (`replicas`) +- explicit weight percentage of total spec.replicas without changing traffic weight(`weight`) +- to or not to match current canary's `setWeight` step (`matchTrafficWeight: true or false`) ```yaml spec: strategy: canary: steps: - # explicit count - - setCanaryScale: - replicas: 3 - # a percentage of spec.replicas - - setCanaryScale: - weight: 25 - # matchTrafficWeight returns to the default behavior of matching the canary traffic weight - - setCanaryScale: - matchTrafficWeight: true + # explicit count + - setCanaryScale: + replicas: 3 + # a percentage of spec.replicas + - setCanaryScale: + weight: 25 + # matchTrafficWeight returns to the default behavior of matching the canary traffic weight + - setCanaryScale: + matchTrafficWeight: true ``` When using `setCanaryScale` with explicit values for either replicas or weight, one must be careful @@ -119,12 +124,12 @@ spec: strategy: canary: steps: - # 1 canary pod (10% of spec.replicas) - - setCanaryScale: - weight: 10 - # 90% of traffic to the 1 canary pod - - setWeight: 90 - - pause: {} + # 1 canary pod (10% of spec.replicas) + - setCanaryScale: + weight: 10 + # 90% of traffic to the 1 canary pod + - setWeight: 90 + - pause: {} ``` The above situation is caused by the changed behvaior of `setWeight` after `setCanaryScale`. To reset, set `matchTrafficWeight: true` and the `setWeight` behavior will be restored, i.e., subsequent `setWeight` will create canary replicas matching the traffic weight. @@ -132,6 +137,7 @@ The above situation is caused by the changed behvaior of `setWeight` after `setC ## Dynamic Stable Scale (with Traffic Routing) !!! important + Available since v1.1 When using traffic routing, by default the stable ReplicaSet is left scaled to 100% during the update. @@ -167,11 +173,12 @@ spec: abortScaleDownDelaySeconds: 600 ``` - ## Mimicking Rolling Update + If the `steps` field is omitted, the canary strategy will mimic the rolling update behavior. Similar to the deployment, the canary strategy has the `maxSurge` and `maxUnavailable` fields to configure how the Rollout should progress to the new version. ## Other Configurable Features + Here are the optional fields that will modify the behavior of canary strategy: ```yaml @@ -188,36 +195,43 @@ spec: ``` ### analysis + Configure the background [Analysis](analysis.md) to execute during the rollout. If the analysis is unsuccessful the rollout will be aborted. Defaults to nil ### antiAffinity + Check out the [Anti Affinity document](anti-affinity/anti-affinity.md) document for more information. Defaults to nil ### canaryService + `canaryService` references a Service that will be modified to send traffic to only the canary ReplicaSet. This allows users to only hit the canary ReplicaSet. Defaults to an empty string ### stableService + `stableService` the name of a Service which selects pods with stable version and doesn't select any pods with canary version. This allows users to only hit the stable ReplicaSet. Defaults to an empty string ### maxSurge + `maxSurge` defines the maximum number of replicas the rollout can create to move to the correct ratio set by the last setWeight. Max Surge can either be an integer or percentage as a string (i.e. "20%") Defaults to "25%". ### maxUnavailable + The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxSurge is 0. Defaults to 25% ### trafficRouting + The [traffic management](traffic-management/index.md) rules to apply to control the flow of traffic between the active and canary versions. If not set, the default weighted pod replica based routing will be used. Defaults to nil diff --git a/docs/features/canary/plugins.md b/docs/features/canary/plugins.md new file mode 100644 index 0000000000..a344801c40 --- /dev/null +++ b/docs/features/canary/plugins.md @@ -0,0 +1,168 @@ +# Canary Step Plugins + +!!! warning "Alpha Feature (Since 1.8.0)" + + This is an experimental, [alpha-quality](https://github.com/argoproj/argoproj/blob/main/community/feature-status.md#alpha) + feature that allows you to execute plugins during canary steps. + +Argo Rollouts supports getting step plugins via 3rd party [plugin system](../../plugins.md). This allows users to extend the capabilities of Rollouts +to support executing arbitrary steps during the canary. Rollout's uses a plugin library called +[go-plugin](https://github.com/hashicorp/go-plugin) to do this. + +## Installing + +There are two methods of installing and using an Argo Rollouts plugin. The first method is to mount up the plugin executable +into the rollouts controller container. The second method is to use a HTTP(S) server to host the plugin executable. + +### Mounting the plugin executable into the rollouts controller container + +There are a few ways to mount the plugin executable into the rollouts controller container. Some of these will depend on your +particular infrastructure. Here are a few methods: + +- Using an init container to download the plugin executable +- Using a Kubernetes volume mount with a shared volume such as NFS, EBS, etc. +- Building the plugin into the rollouts controller container + +Then you can use the ConfigMap to point to the plugin executable file location. Example: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: argo-rollouts-config +data: + stepPlugins: |- + - name: "argoproj-labs/sample-step" # name of the plugin, it must match the name required by the plugin so it can find it's configuration + location: "file://./my-custom-plugin" # supports http(s):// urls and file:// +``` + +### Using a HTTP(S) server to host the plugin executable + +!!! warning "Installing a plugin with http(s)" + + Depending on which method you use to install and the plugin, there are some things to be aware of. + The rollouts controller will not start if it can not download or find the plugin executable. This means that if you are using + a method of installation that requires a download of the plugin and the server hosting the plugin for some reason is not available and the rollouts + controllers pod got deleted while the server was down or is coming up for the first time, it will not be able to start until + the server hosting the plugin is available again. + + Argo Rollouts will download the plugin at startup only once but if the pod is deleted it will need to download the plugin again on next startup. Running + Argo Rollouts in HA mode can help a little with this situation because each pod will download the plugin at startup. So if a single pod gets + deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the + responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach. + +Argo Rollouts supports downloading the plugin executable from a HTTP(S) server. To use this method, you will need to +configure the controller via the `argo-rollouts-config` ConfigMap and set `pluginLocation` to a http(s) url. Example: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: argo-rollouts-config +data: + stepPlugins: |- + - name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find it's configuration + location: "https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx/releases/download/v0.0.1/metric-plugin-linux-amd64" # supports http(s):// urls and file:// + sha256: "08f588b1c799a37bbe8d0fc74cc1b1492dd70b2c" # optional sha256 checksum of the plugin executable +``` + +### Disabling a plugin + +A step plugin that will execute during your Rollouts will fail the canary deployment whenever there is an unhandled error. +If a step plugin is used in multiple rollouts and is suddenly unstable, none of the rollouts will be able to progress. +To make the plugin less disruptive and the upgrades easier, you can use the `disabled` flag in the plugin configuration to +disable it globally. This will skip the plugin execution in every Rollout where it is configured, and progress to the next canary step. + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: argo-rollouts-config +data: + stepPlugins: |- + - name: "argoproj-labs/sample-nginx" + location: "https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx/releases/download/v0.0.1/metric-plugin-linux-amd64" + disabled: true # Skip all canary steps using this plugin because it may be faulty. +``` + +## Usage + +You can execute a configured step plugin at any point during your canary steps. +The plugin will be executed and the rollout step will be progressing until the plugin execution returns a status of +`Successful`, `Failed` or `Error`. Once completed, the rollout will progress to the next configured step. + +For the available plugin `config`, refer to each specific plugin documentation. + +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: Rollout +metadata: + name: example-plugin-ro +spec: + strategy: + canary: + steps: + - plugin: + name: argoproj-labs/step-exec + config: + command: echo "hello world" +``` + +### Plugin Statuses + +To know the result of your plugin, you can use the `status.stepPluginStatuses[]` property to find the status that correspond to +your execution. Each status item is unique by `index`, `name` and `operation`. The `operation` can be one of the following: + +- `Run`: The main operation that execute the plugin. +- `Terminate`: The operation called on your plugin when the `Run` operation is still ongoing, but your rollout is aborted. +- `Abort`: The operation called on your plugin when it is aborted. This will be called for every `Successful` `Run` operation. + +## Implementation + +As a plugin developer, your step plugin should follow some conventions to make it predictable and easier to use. + +### Run operation + +The run operation is the method called on your plugin when executed. The operation can be called +**multiple times**. It is the responsibility of the plugin's implementation to validate if the desired +plugin actions were already taken or not. + +#### Long-running operations + +If the plugin needs to execute an operation that may take a long time, or poll for a result, it can return +early with a `Running` phase and a `RequeueAfter` duration. The controller will requeue the rollout and call the `Run` operation +again after the `RequeueAfter` has expired. The `Status` property on the return object can hold any information that would be +necessary to retrieve the state in subsequent executions. + +### Terminate operation + +If the `Run` operation returns with a `Running` phase and the rollout needs to cancel the execution, the controller will call the plugin's terminate method +with the state of the ongoing `Running` operation. The plugin can use this method to cancel any ongoing information. +This is often called if the rollout is fully promoted during a plugin execution. + +If the terminate operation has an error and fails, it will not be retried. The plugin should have a mechanism to cancel +suspiciously long-running operations if necessary. + +### Abort operation + +The abort operation will be called whenever a rollout is aborted and plugin step `Run` operation was `Successful` or currently `Running`. +The operation will be called in the reverse execution order with the existing state of the operation it is aborting. + +If the abort operation has an error and fails, it will not be retried. The plugin should have a mechanism to cancel +suspiciously long-running operations if necessary. + +### Returning errors + +The plugin can return an error for unhandled operations. In that case, the rollout will handle that error and apply a +backoff mechanism to retry the execution of the plugin until it returns `Successful` or `Failed` phase. When an error happens, the +`Status` returned by the plugin is not persisted, allowing it to retry later on the last known valid status. + +The controller will keep retrying until it succeeds, or the rollout is aborted. + +## List of Available Plugins (alphabetical order) + +If you have created a plugin, please submit a PR to add it to this list. + +### [plugin-name](#plugin-name) + +- Brief plugin description diff --git a/docs/features/specification.md b/docs/features/specification.md index ebe8f4ac69..c4e7b3c1d0 100644 --- a/docs/features/specification.md +++ b/docs/features/specification.md @@ -15,7 +15,7 @@ spec: # limits the number of successful analysis runs and experiments to be stored in a history # Defaults to 5. successfulRunHistoryLimit: 10 - # limits the number of unsuccessful analysis runs and experiments to be stored in a history. + # limits the number of unsuccessful analysis runs and experiments to be stored in a history. # Stages for unsuccessful: "Error", "Failed", "Inconclusive" # Defaults to 5. unsuccessfulRunHistoryLimit: 10 @@ -27,9 +27,9 @@ spec: matchLabels: app: guestbook - # WorkloadRef holds a references to a workload that provides Pod template + # WorkloadRef holds a references to a workload that provides Pod template # (e.g. Deployment). If used, then do not use Rollout template property. - workloadRef: + workloadRef: apiVersion: apps/v1 kind: Deployment name: rollout-ref-deployment @@ -42,12 +42,12 @@ spec: scaleDown: never|onsuccess|progressively # Template describes the pods that will be created. Same as deployment. - # If used, then do not use Rollout workloadRef property. + # If used, then do not use Rollout workloadRef property. template: spec: containers: - - name: guestbook - image: argoproj/rollouts-demo:blue + - name: guestbook + image: argoproj/rollouts-demo:blue # Minimum number of seconds for which a newly created pod should be ready # without any of its container crashing, for it to be considered available. @@ -83,7 +83,7 @@ spec: # its pods. Used by the `kubectl argo rollouts restart ROLLOUT` command. # The controller will ensure all pods have a creationTimestamp greater # than or equal to this value. - restartAt: "2020-03-30T21:19:35Z" + restartAt: '2020-03-30T21:19:35Z' # The rollback window provides a way to fast track deployments to # previously deployed versions. @@ -92,10 +92,8 @@ spec: revisions: 3 strategy: - # Blue-green update strategy blueGreen: - # Reference to service that the rollout modifies as the active service. # Required. activeService: active-service @@ -104,19 +102,19 @@ spec: # cutover. +optional prePromotionAnalysis: templates: - - templateName: success-rate + - templateName: success-rate args: - - name: service-name - value: guestbook-svc.default.svc.cluster.local + - name: service-name + value: guestbook-svc.default.svc.cluster.local # Post-promotion analysis run which performs analysis after the service # cutover. +optional postPromotionAnalysis: templates: - - templateName: success-rate + - templateName: success-rate args: - - name: service-name - value: guestbook-svc.default.svc.cluster.local + - name: service-name + value: guestbook-svc.default.svc.cluster.local # Name of the service that the rollout modifies as the preview service. # +optional @@ -158,13 +156,13 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: {} preferredDuringSchedulingIgnoredDuringExecution: weight: 1 # Between 1 - 100 - + # activeMetadata will be merged and updated in-place into the ReplicaSet's spec.template.metadata # of the active pods. +optional activeMetadata: labels: role: active - + # Metadata which will be attached to the preview pods only during their preview phase. # +optional previewMetadata: @@ -173,7 +171,6 @@ spec: # Canary update strategy canary: - # Reference to a service which the controller will update to select # canary pods. Required for traffic routing. canaryService: canary-service @@ -220,7 +217,7 @@ spec: # killed, new RC can be scaled up further, ensuring that total number # of pods running at any time during the update is at most 130% of # original pods. +optional - maxSurge: "20%" + maxSurge: '20%' # Adds a delay before scaling down the previous ReplicaSet when the # canary strategy is used with traffic routing (default 30 seconds). @@ -244,136 +241,141 @@ spec: # initial deploy of a rollout. +optional analysis: templates: - - templateName: success-rate + - templateName: success-rate args: - - name: service-name - value: guestbook-svc.default.svc.cluster.local - - # valueFrom.podTemplateHashValue is a convenience to supply the - # rollouts-pod-template-hash value of either the Stable ReplicaSet - # or the Latest ReplicaSet - - name: stable-hash - valueFrom: - podTemplateHashValue: Stable - - name: latest-hash - valueFrom: - podTemplateHashValue: Latest - - # valueFrom.fieldRef allows metadata about the rollout to be - # supplied as arguments to analysis. - - name: region - valueFrom: - fieldRef: - fieldPath: metadata.labels['region'] + - name: service-name + value: guestbook-svc.default.svc.cluster.local + + # valueFrom.podTemplateHashValue is a convenience to supply the + # rollouts-pod-template-hash value of either the Stable ReplicaSet + # or the Latest ReplicaSet + - name: stable-hash + valueFrom: + podTemplateHashValue: Stable + - name: latest-hash + valueFrom: + podTemplateHashValue: Latest + + # valueFrom.fieldRef allows metadata about the rollout to be + # supplied as arguments to analysis. + - name: region + valueFrom: + fieldRef: + fieldPath: metadata.labels['region'] # Steps define sequence of steps to take during an update of the # canary. Skipped upon initial deploy of a rollout. +optional steps: - - # Sets the ratio of canary ReplicaSet to 20% - - setWeight: 20 - - # Pauses the rollout for an hour. Supported units: s, m, h - - pause: - duration: 1h - - # Pauses indefinitely until manually resumed - - pause: {} - - # set canary scale to a explicit count without changing traffic weight - # (supported only with trafficRouting) - - setCanaryScale: - replicas: 3 - - # set canary scale to spec.Replica * (setweight / maxTrafficWeight) without changing traffic weight - # if maxTrafficWeight unspecified, it defaults to 100 - # (supported only with trafficRouting) - - setCanaryScale: - weight: 25 - - # set canary scale to match the canary traffic weight (default behavior) - - setCanaryScale: - matchTrafficWeight: true - - # Sets header based route with specified header values - # Setting header based route will send all traffic to the canary for the requests - # with a specified header, in this case request header "version":"2" - # (supported only with trafficRouting, for Istio only at the moment) - - setHeaderRoute: - # Name of the route that will be created by argo rollouts this must also be configured - # in spec.strategy.canary.trafficRouting.managedRoutes - name: "header-route-1" - # The matching rules for the header route, if this is missing it acts as a removal of the route. - match: - # headerName The name of the header to apply the match rules to. - - headerName: "version" - # headerValue must contain exactly one field of exact, regex, or prefix. Not all traffic routers support - # all types - headerValue: - # Exact will only match if the header value is exactly the same - exact: "2" - # Will match the rule if the regular expression matches - regex: "2.0.(.*)" - # prefix will be a prefix match of the header value - prefix: "2.0" - - # Sets up a mirror/shadow based route with the specified match rules - # The traffic will be mirrored at the configured percentage to the canary service - # during the rollout + # Sets the ratio of canary ReplicaSet to 20% + - setWeight: 20 + + # Pauses the rollout for an hour. Supported units: s, m, h + - pause: + duration: 1h + + # Pauses indefinitely until manually resumed + - pause: {} + + # set canary scale to a explicit count without changing traffic weight + # (supported only with trafficRouting) + - setCanaryScale: + replicas: 3 + + # set canary scale to spec.Replica * (setweight / maxTrafficWeight) without changing traffic weight + # if maxTrafficWeight unspecified, it defaults to 100 + # (supported only with trafficRouting) + - setCanaryScale: + weight: 25 + + # set canary scale to match the canary traffic weight (default behavior) + - setCanaryScale: + matchTrafficWeight: true + + # executes the configured plugin by name with the provided configuration + - plugin: + name: example + config: + key: value + + # Sets header based route with specified header values + # Setting header based route will send all traffic to the canary for the requests + # with a specified header, in this case request header "version":"2" # (supported only with trafficRouting, for Istio only at the moment) - - setMirrorRoute: - # Name of the route that will be created by argo rollouts this must also be configured - # in spec.strategy.canary.trafficRouting.managedRoutes - name: "header-route-1" - # The percentage of the matched traffic to mirror to the canary - percentage: 100 - # The matching rules for the header route, if this is missing it acts as a removal of the route. - # All conditions inside a single match block have AND semantics, while the list of match blocks have OR semantics. - # Each type within a match (method, path, headers) must have one and only one match type (exact, regex, prefix) - # Not all match types (exact, regex, prefix) will be supported by all traffic routers. - match: - - method: # What HTTP method to match - exact: "GET" - regex: "P.*" - prefix: "POST" - path: # What HTTP url paths to match. - exact: "/test" - regex: "/test/.*" - prefix: "/" - headers: - agent-1b: # What HTTP header name to use in the match. - exact: "firefox" - regex: "firefox2(.*)" - prefix: "firefox" - - # an inline analysis step - - analysis: - templates: - - templateName: success-rate - - # an inline experiment step - - experiment: - duration: 1h - templates: - - name: baseline - specRef: stable - # optional, creates a service for the experiment if set - service: - # optional, service: {} is also acceptable if name is not included - name: test-service - - name: canary - specRef: canary - # optional, set the weight of traffic routed to this version - weight: 10 - analyses: - - name : mann-whitney - templateName: mann-whitney - # Metadata which will be attached to the AnalysisRun. - analysisRunMetadata: - labels: - app.service.io/analysisType: smoke-test - annotations: - link.argocd.argoproj.io/external-link: http://my-loggin-platform.com/pre-generated-link + - setHeaderRoute: + # Name of the route that will be created by argo rollouts this must also be configured + # in spec.strategy.canary.trafficRouting.managedRoutes + name: 'header-route-1' + # The matching rules for the header route, if this is missing it acts as a removal of the route. + match: + # headerName The name of the header to apply the match rules to. + - headerName: 'version' + # headerValue must contain exactly one field of exact, regex, or prefix. Not all traffic routers support + # all types + headerValue: + # Exact will only match if the header value is exactly the same + exact: '2' + # Will match the rule if the regular expression matches + regex: '2.0.(.*)' + # prefix will be a prefix match of the header value + prefix: '2.0' + + # Sets up a mirror/shadow based route with the specified match rules + # The traffic will be mirrored at the configured percentage to the canary service + # during the rollout + # (supported only with trafficRouting, for Istio only at the moment) + - setMirrorRoute: + # Name of the route that will be created by argo rollouts this must also be configured + # in spec.strategy.canary.trafficRouting.managedRoutes + name: 'header-route-1' + # The percentage of the matched traffic to mirror to the canary + percentage: 100 + # The matching rules for the header route, if this is missing it acts as a removal of the route. + # All conditions inside a single match block have AND semantics, while the list of match blocks have OR semantics. + # Each type within a match (method, path, headers) must have one and only one match type (exact, regex, prefix) + # Not all match types (exact, regex, prefix) will be supported by all traffic routers. + match: + - method: # What HTTP method to match + exact: 'GET' + regex: 'P.*' + prefix: 'POST' + path: # What HTTP url paths to match. + exact: '/test' + regex: '/test/.*' + prefix: '/' + headers: + agent-1b: # What HTTP header name to use in the match. + exact: 'firefox' + regex: 'firefox2(.*)' + prefix: 'firefox' + + # an inline analysis step + - analysis: + templates: + - templateName: success-rate + + # an inline experiment step + - experiment: + duration: 1h + templates: + - name: baseline + specRef: stable + # optional, creates a service for the experiment if set + service: + # optional, service: {} is also acceptable if name is not included + name: test-service + - name: canary + specRef: canary + # optional, set the weight of traffic routed to this version + weight: 10 + analyses: + - name: mann-whitney + templateName: mann-whitney + # Metadata which will be attached to the AnalysisRun. + analysisRunMetadata: + labels: + app.service.io/analysisType: smoke-test + annotations: + link.argocd.argoproj.io/external-link: http://my-loggin-platform.com/pre-generated-link # Anti-affinity configuration between desired and previous ReplicaSet. # Only one must be specified. @@ -393,7 +395,7 @@ spec: # This is a list of routes that Argo Rollouts has the rights to manage it is currently only required for # setMirrorRoute and setHeaderRoute. The order of managedRoutes array also sets the precedence of the route # in the traffic router. Argo Rollouts will place these routes in the order specified above any routes already - # defined in the used traffic router if something exists. The names here must match the names from the + # defined in the used traffic router if something exists. The names here must match the names from the # setHeaderRoute and setMirrorRoute steps. managedRoutes: - name: set-header @@ -401,18 +403,18 @@ spec: # Istio traffic routing configuration istio: # Either virtualService or virtualServices can be configured. - virtualService: - name: rollout-vsvc # required - routes: - - primary # optional if there is a single route in VirtualService, required otherwise - virtualServices: - # One or more virtualServices can be configured - - name: rollouts-vsvc1 # required + virtualService: + name: rollout-vsvc # required routes: - primary # optional if there is a single route in VirtualService, required otherwise - - name: rollouts-vsvc2 # required - routes: - - secondary # optional if there is a single route in VirtualService, required otherwise + virtualServices: + # One or more virtualServices can be configured + - name: rollouts-vsvc1 # required + routes: + - primary # optional if there is a single route in VirtualService, required otherwise + - name: rollouts-vsvc2 # required + routes: + - secondary # optional if there is a single route in VirtualService, required otherwise # NGINX Ingress Controller routing configuration nginx: @@ -423,16 +425,16 @@ spec: - secondary-ingress - tertiary-ingress annotationPrefix: customingress.nginx.ingress.kubernetes.io # optional - additionalIngressAnnotations: # optional + additionalIngressAnnotations: # optional canary-by-header: X-Canary canary-by-header-value: iwantsit - canaryIngressAnnotations: # optional + canaryIngressAnnotations: # optional my-custom-annotation.mygroup.com/key: value # ALB Ingress Controller routing configuration alb: - ingress: ingress # required - servicePort: 443 # required + ingress: ingress # required + servicePort: 443 # required annotationPrefix: custom.alb.ingress.kubernetes.io # optional # Service Mesh Interface routing configuration @@ -447,16 +449,17 @@ spec: status: pauseConditions: - - reason: StepPause - startTime: 2019-10-00T1234 - - reason: BlueGreenPause - startTime: 2019-10-00T1234 - - reason: AnalysisRunInconclusive - startTime: 2019-10-00T1234 + - reason: StepPause + startTime: 2019-10-00T1234 + - reason: BlueGreenPause + startTime: 2019-10-00T1234 + - reason: AnalysisRunInconclusive + startTime: 2019-10-00T1234 ``` + ## Examples You can find examples of Rollouts at: - * The [example directory](https://github.com/argoproj/argo-rollouts/tree/master/examples) - * The [Argo Rollouts Demo application](https://github.com/argoproj/rollouts-demo) +- The [example directory](https://github.com/argoproj/argo-rollouts/tree/master/examples) +- The [Argo Rollouts Demo application](https://github.com/argoproj/rollouts-demo) diff --git a/docs/features/traffic-management/plugins.md b/docs/features/traffic-management/plugins.md index fe0dc22b19..51d982417a 100644 --- a/docs/features/traffic-management/plugins.md +++ b/docs/features/traffic-management/plugins.md @@ -1,14 +1,16 @@ # Traffic Router Plugins -!!! important - Available since v1.5 - Status: Alpha +!!! warning "Alpha Feature (Since 1.5.0)" -Argo Rollouts supports getting analysis metrics via 3rd party plugin system. This allows users to extend the capabilities of Rollouts -to support metric providers that are not natively supported. Rollout's uses a plugin library called + This is an experimental, [alpha-quality](https://github.com/argoproj/argoproj/blob/main/community/feature-status.md#alpha) + feature that allows you to supporttraffic router that are not natively supported. + +Argo Rollouts supports getting traffic router via 3rd party [plugin system](../../plugins.md). This allows users to extend the capabilities of Rollouts +to support traffic router that are not natively supported. Rollout's uses a plugin library called [go-plugin](https://github.com/hashicorp/go-plugin) to do this. You can find a sample plugin here: [rollouts-plugin-trafficrouter-sample-nginx](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx) -## Using a Traffic Router Plugin +## Installing There are two methods of installing and using an argo rollouts plugin. The first method is to mount up the plugin executable into the rollouts controller container. The second method is to use a HTTP(S) server to host the plugin executable. @@ -18,9 +20,9 @@ into the rollouts controller container. The second method is to use a HTTP(S) se There are a few ways to mount the plugin executable into the rollouts controller container. Some of these will depend on your particular infrastructure. Here are a few methods: -* Using an init container to download the plugin executable -* Using a Kubernetes volume mount with a shared volume such as NFS, EBS, etc. -* Building the plugin into the rollouts controller container +- Using an init container to download the plugin executable +- Using a Kubernetes volume mount with a shared volume such as NFS, EBS, etc. +- Building the plugin into the rollouts controller container Then you can use the configmap to point to the plugin executable file location. Example: @@ -37,6 +39,19 @@ data: ### Using a HTTP(S) server to host the plugin executable +!!! warning "Installing a plugin with http(s)" + + Depending on which method you use to install and the plugin, there are some things to be aware of. + The rollouts controller will not start if it can not download or find the plugin executable. This means that if you are using + a method of installation that requires a download of the plugin and the server hosting the plugin for some reason is not available and the rollouts + controllers pod got deleted while the server was down or is coming up for the first time, it will not be able to start until + the server hosting the plugin is available again. + + Argo Rollouts will download the plugin at startup only once but if the pod is deleted it will need to download the plugin again on next startup. Running + Argo Rollouts in HA mode can help a little with this situation because each pod will download the plugin at startup. So if a single pod gets + deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the + responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach. + Argo Rollouts supports downloading the plugin executable from a HTTP(S) server. To use this method, you will need to configure the controller via the `argo-rollouts-config` configmap and set `pluginLocation` to a http(s) url. Example: @@ -52,32 +67,23 @@ data: sha256: "08f588b1c799a37bbe8d0fc74cc1b1492dd70b2c" #optional sha256 checksum of the plugin executable ``` -## Some words of caution - -Depending on which method you use to install and the plugin, there are some things to be aware of. -The rollouts controller will not start if it can not download or find the plugin executable. This means that if you are using -a method of installation that requires a download of the plugin and the server hosting the plugin for some reason is not available and the rollouts -controllers pod got deleted while the server was down or is coming up for the first time, it will not be able to start until -the server hosting the plugin is available again. +## List of Available Plugins (alphabetical order) -Argo Rollouts will download the plugin at startup only once but if the pod is deleted it will need to download the plugin again on next startup. Running -Argo Rollouts in HA mode can help a little with this situation because each pod will download the plugin at startup. So if a single pod gets -deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the -responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach. +If you have created a plugin, please submit a PR to add it to this list. -## List of Available Plugins (alphabetical order) +### [rollouts-plugin-trafficrouter-sample-nginx](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx) -#### Add Your Plugin Here -* If you have created a plugin, please submit a PR to add it to this list. -#### [rollouts-plugin-trafficrouter-sample-nginx](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx) -* This is just a sample plugin that can be used as a starting point for creating your own plugin. +- This is just a sample plugin that can be used as a starting point for creating your own plugin. It is not meant to be used in production. It is based on the built-in prometheus provider. -#### [Consul](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-consul) -* This is a plugin that allows argo-rollouts to work with Consul's service mesh for traffic shaping patterns. +### [Consul](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-consul) + +- This is a plugin that allows argo-rollouts to work with Consul's service mesh for traffic shaping patterns. + +### [Contour](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-contour) + +- This is a plugin that allows argo-rollouts to work with contour's resource: HTTPProxy. It enables traffic shaping patterns such as canary releases and more. -#### [Contour](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-contour) -* This is a plugin that allows argo-rollouts to work with contour's resource: HTTPProxy. It enables traffic shaping patterns such as canary releases and more. +### [Gateway API](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/) -#### [Gateway API](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/) -* Provide support for Gateway API, which includes Kuma, Traefix, cilium, Contour, Gloo Gateway, HAProxy, and [many others](https://gateway-api.sigs.k8s.io/implementations/#implementation-status). +- Provide support for Gateway API, which includes Kuma, Traefix, cilium, Contour, GloodMesh, HAProxy, and [many others](https://gateway-api.sigs.k8s.io/implementations/#implementation-status). diff --git a/docs/plugins.md b/docs/plugins.md index 901bc79878..bc6eca7d1e 100644 --- a/docs/plugins.md +++ b/docs/plugins.md @@ -11,7 +11,6 @@ Here is an overview of how plugins are loaded: [![Loading of plugins](contributing-assets/plugin-loading.png)](contributing-assets/plugin-loading.png) - The communication protocol uses golang built in net/rpc library so plugins have to be written in golang. ## Plugin Repository @@ -28,7 +27,7 @@ types to exist such as `/nginx` and `/nginx`. These names could be b as `argoproj-labs/rollouts-plugin-metric-sample-prometheus` but it is not a requirement. There will also be a standard for naming repositories under argoproj-labs in the form of `rollouts-plugin--` -where `` is say `metric`, or `trafficrouter` and `` is the software the plugin is for say nginx. +where `` is one of `metric`, `step`, or `trafficrouter` and `` is the software the plugin is for, say nginx. ## Plugin Name @@ -55,13 +54,28 @@ data: args: - "--log-level" - "debug" + stepPlugins: |- + - name: "argoproj-labs/canary-step" + location: "file:///tmp/argo-rollouts/canary-step-plugin" + disabled: false + args: + - "--log-level" + - "debug" ``` -As you can see there is a field called `name:` under both `metrics` or `trafficrouters` this is the first place where your +As you can see there is a field called `name:` under each plugin type. This is the first place where your end users will need to configure the name of the plugin. The second `location` is either in the rollout object or the analysis template which you can see the examples below. The third `args` holds the command line arguments of the plugin. -#### AnalysisTemplate Example +### Configuration Examples + +#### AnalysisTemplate + +You can see that we use the plugin name under `spec.metrics[].provider.plugin` for analysis template. + +You, as a plugin author, can then put any configuration you need under `argoproj-labs/metrics` and you will be able to +look up that config in your plugin via the plugin name key. You will also want to document what configuration options your plugin supports. + ```yaml apiVersion: argoproj.io/v1alpha1 kind: AnalysisTemplate @@ -77,7 +91,13 @@ spec: address: http://prometheus.local ``` -#### Traffic Router Example +#### Traffic Router + +You can see that we use the plugin name under `spec.strategy.canary.trafficRouting.plugins` for traffic routers. + +You, as a plugin author, can then put any configuration you need under `argoproj-labs/metrics` and you will be able to +look up that config in your plugin via the plugin name key. You will also want to document what configuration options your plugin supports. + ```yaml apiVersion: argoproj.io/v1alpha1 kind: Rollout @@ -94,18 +114,36 @@ spec: stableIngress: canary-demo ``` -You can see that we use the plugin name under `spec.metrics[].provider.plugin` for analysis template and `spec.strategy.canary.trafficRouting.plugins` -for traffic routers. You as a plugin author can then put any configuration you need under `argoproj-labs/nginx` and you will be able to -look up that config in your plugin via the plugin name key. You will also want to document what configuration options your plugin supports. +#### Step Plugin + +You can see that we use the plugin name under `spec.strategy.canary.steps[].plugin.name` for canary steps. + +You, as a plugin author, can then put any configuration you need in the plugin object under `config` property and you will receive it +as an arguments when your plugin is called. You will also want to document what configuration options your plugin supports. + +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: Rollout +metadata: + name: example-plugin-ro +spec: + strategy: + canary: + steps: + - plugin: + name: argoproj-labs/step-exec + config: + command: echo "hello world" +``` ## Plugin Interfaces -Argo Rollouts currently supports two plugin systems as a plugin author your end goal is to implement these interfaces as -a hashicorp go-plugin. The two interfaces are `MetricsPlugin` and `TrafficRouterPlugin` for each of the respective plugins: +Argo Rollouts currently supports three plugin systems. As a plugin author, your end goal is to implement at least one of these interfaces as +a hashicorp go-plugin. The interfaces are `MetricsPlugin`, `TrafficRouterPlugin` and `StepPlugin` for each of the respective plugins: ```go type MetricProviderPlugin interface { - // InitPlugin initializes the traffic router plugin this gets called once when the plugin is loaded. + // InitPlugin initializes the traffic router plugin. This gets called once when the plugin is loaded. InitPlugin() RpcError // Run start a new external system call for a measurement // Should be idempotent and do nothing if a call has already been started @@ -124,7 +162,7 @@ type MetricProviderPlugin interface { } type TrafficRouterPlugin interface { - // InitPlugin initializes the traffic router plugin this gets called once when the plugin is loaded. + // InitPlugin initializes the traffic router plugin. This gets called once when the plugin is loaded. InitPlugin() RpcError // UpdateHash informs a traffic routing reconciler about new canary, stable, and additionalDestination(s) pod hashes UpdateHash(rollout *v1alpha1.Rollout, canaryHash, stableHash string, additionalDestinations []v1alpha1.WeightDestination) RpcError @@ -142,6 +180,19 @@ type TrafficRouterPlugin interface { // Type returns the type of the traffic routing reconciler Type() string } + +type StepPlugin interface { + // InitPlugin initializes the canary step plugin. This gets called once when the plugin is loaded. + InitPlugin() RpcError + // Run executes a step plugin for the RpcStepContext and returns the result to the controller or an RpcError for unexpeted failures + Run(*v1alpha1.Rollout, *RpcStepContext) (RpcStepResult, RpcError) + // Terminate stops an uncompleted operation started by the Run operation + Terminate(*v1alpha1.Rollout, *RpcStepContext) (RpcStepResult, RpcError) + // Abort reverts the actions performed during the Run operation if necessary + Abort(*v1alpha1.Rollout, *RpcStepContext) (RpcStepResult, RpcError) + // Type returns the type of the step plugin + Type() string +} ``` ## Plugin Init Function @@ -161,7 +212,8 @@ for the plugin to use. This will probably affect traffic router plugins more tha ## Sample Plugins -There are two sample plugins within the argo-rollouts repo that you can use as a reference for creating your own plugin. +There are sample plugins within the argo-rollouts repo that you can use as a reference for creating your own plugin. -* [Metrics Plugin Sample](https://github.com/argoproj/argo-rollouts/tree/master/test/cmd/metrics-plugin-sample) -* [Traffic Router Plugin Sample](https://github.com/argoproj/argo-rollouts/tree/master/test/cmd/trafficrouter-plugin-sample) +- [Metrics Plugin Sample](https://github.com/argoproj/argo-rollouts/tree/master/test/cmd/metrics-plugin-sample) +- [Traffic Router Plugin Sample](https://github.com/argoproj/argo-rollouts/tree/master/test/cmd/trafficrouter-plugin-sample) +- [Step Plugin Sample](https://github.com/argoproj/argo-rollouts/tree/master/test/cmd/step-plugin-sample) diff --git a/mkdocs.yml b/mkdocs.yml index 71ed4e9f70..d0ef5b0cd9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -32,8 +32,9 @@ nav: - Rollout: - Deployment Strategies: - BlueGreen: features/bluegreen.md - - Canary: features/canary.md + - Canary: features/canary/index.md - Rollout Spec: features/specification.md + - Canary Step Plugin: features/canary/plugins.md - HPA: features/hpa-support.md - VPA: features/vpa-support.md - Ephemeral Metadata: features/ephemeral-metadata.md From 8bd36d813b6a813b09846d63304eb435005ecf52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sel=C3=A7uk=20Usta?= Date: Thu, 31 Oct 2024 15:42:36 +0300 Subject: [PATCH 171/219] docs(analysis): plugin url is changed and redirected to argoproj-labs project (#3922) update docs/analysis/plugins.md Signed-off-by: selcukusta --- docs/analysis/plugins.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/analysis/plugins.md b/docs/analysis/plugins.md index 46e2ee124f..82f63183ad 100644 --- a/docs/analysis/plugins.md +++ b/docs/analysis/plugins.md @@ -71,7 +71,7 @@ data: If you have created a plugin, please submit a PR to add it to this list. -### [rollouts-plugin-metric-opensearch](https://github.com/selcukusta/rollouts-plugin-metric-opensearch) +### [rollouts-plugin-metric-opensearch](https://github.com/argoproj-labs/rollouts-plugin-metric-opensearch) - The application is an OpenSearch plugin designed for use with the Argo Rollouts plugin system. This plugin enables the integration of OpenSearch metrics into Argo Rollouts, allowing for advanced metric analysis and monitoring during application rollouts. From 7d3627d66918ecbbe769ae57c6cca9f8ff338051 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 11:04:02 -0500 Subject: [PATCH 172/219] chore(deps): bump softprops/action-gh-release from 2.0.8 to 2.0.9 (#3928) Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.8 to 2.0.9. - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/c062e08bd532815e2082a85e87e3ef29c3e6d191...e7a8f85e1c67a31e6ed99a94b41bd0b71bbee6b8) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 6b0cca9833..8f540af5bb 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -107,7 +107,7 @@ jobs: make manifests IMAGE_TAG=${{ github.ref_name }} - name: Draft release - uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v0.1.15 + uses: softprops/action-gh-release@e7a8f85e1c67a31e6ed99a94b41bd0b71bbee6b8 # v0.1.15 with: tag_name: ${{ github.event.inputs.tag }} draft: true @@ -212,7 +212,7 @@ jobs: /tmp/sbom.tar.gz - name: Upload SBOM and signature assets - uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v0.1.15 + uses: softprops/action-gh-release@e7a8f85e1c67a31e6ed99a94b41bd0b71bbee6b8 # v0.1.15 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: From 3296d6d6519946ba2de253960dbe332949067577 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 11:04:26 -0500 Subject: [PATCH 173/219] chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.48.2 to 2.50.1 (#3924) chore(deps): bump github.com/newrelic/newrelic-client-go/v2 Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.48.2 to 2.50.1. - [Release notes](https://github.com/newrelic/newrelic-client-go/releases) - [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.48.2...v2.50.1) --- updated-dependencies: - dependency-name: github.com/newrelic/newrelic-client-go/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 54f3b12878..84c6a09921 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/juju/ansiterm v1.0.0 github.com/machinebox/graphql v0.2.2 github.com/mitchellh/mapstructure v1.5.0 - github.com/newrelic/newrelic-client-go/v2 v2.48.2 + github.com/newrelic/newrelic-client-go/v2 v2.50.1 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.18.0 github.com/prometheus/client_model v0.6.1 diff --git a/go.sum b/go.sum index 8bc2a57919..0fd106cb69 100644 --- a/go.sum +++ b/go.sum @@ -554,8 +554,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/newrelic/newrelic-client-go/v2 v2.48.2 h1:Pd8/ADdidF/dISMCy9B2UHvcD11lnj4Use6j++OOEf4= -github.com/newrelic/newrelic-client-go/v2 v2.48.2/go.mod h1:pDFY24/6iIMEbPIdowTRrRn9YYwkXc3j+B+XpTb4oF4= +github.com/newrelic/newrelic-client-go/v2 v2.50.1 h1:xwRjfxXO1ZvQc4mvy52lNm60jsx4/YtIBxx9mvw7u38= +github.com/newrelic/newrelic-client-go/v2 v2.50.1/go.mod h1:+RRjI3nDGWT3kLm9Oi3QxpBm70uu8q1upEHBVWCZFpo= github.com/nlopes/slack v0.5.0/go.mod h1:jVI4BBK3lSktibKahxBF74txcK2vyvkza1z/+rRnVAM= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oapi-codegen/runtime v1.0.0 h1:P4rqFX5fMFWqRzY9M/3YF9+aPSPPB06IzP2P7oOxrWo= From 15c723fd81a7d523a313995b4709ac52fb65dab1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 11:04:44 -0500 Subject: [PATCH 174/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.42.2 to 1.42.3 (#3923) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.42.2 to 1.42.3. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.42.2...service/emr/v1.42.3) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 84c6a09921..8b70e89e26 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.32.3 github.com/aws/aws-sdk-go-v2/config v1.28.1 - github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.2 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.3 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.22.0 github.com/blang/semver v3.5.1+incompatible diff --git a/go.sum b/go.sum index 0fd106cb69..a9dec5fca6 100644 --- a/go.sum +++ b/go.sum @@ -110,8 +110,8 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.22 h1:981MHwBaRZM7+9QSR6 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.22/go.mod h1:1RA1+aBEfn+CAB/Mh0MB6LsdCYCnjZm7tKXtnk499ZQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.2 h1:eMh+iBTF1CbpHMfiRvIaVm+rzrH1DOzuSFaR55O+bBo= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.2/go.mod h1:/A4zNqF1+RS5RV+NNLKIzUX1KtK5SoWgf/OpiqrwmBo= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.3 h1:C6oS3hSFIB1ydz3dhgkZ0HyzWV41qVjNxS/mA0AGLMQ= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.3/go.mod h1:OXYzq1k1XwhwghGdHASEDeFr0Ij8dyFRaIy6w0yrIms= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 h1:TToQNkvGguu209puTojY/ozlqy2d/SFNcoLIqTFi42g= From 53c4f12d66620e9224d3810489b94cfe8f35b054 Mon Sep 17 00:00:00 2001 From: Dylan Schlager <62440614+schlags@users.noreply.github.com> Date: Sat, 2 Nov 2024 18:50:29 -0700 Subject: [PATCH 175/219] fix: remove condition where header routes can stay directed at empty service in preemption (#3898) * fix: remove condition where header routes can stay directed at empty service in preemption Signed-off-by: Dylan Schlager * add unit test Signed-off-by: Dylan Schlager * lint Signed-off-by: Dylan Schlager --------- Signed-off-by: Dylan Schlager --- rollout/trafficrouting.go | 9 ++++ rollout/trafficrouting_test.go | 88 ++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) diff --git a/rollout/trafficrouting.go b/rollout/trafficrouting.go index 3ed2564760..eef25e1c1c 100644 --- a/rollout/trafficrouting.go +++ b/rollout/trafficrouting.go @@ -198,6 +198,15 @@ func (c *rolloutContext) reconcileTrafficRouting() error { } else if c.newRS == nil || c.newRS.Status.AvailableReplicas == 0 { // when newRS is not available or replicas num is 0. never weight to canary weightDestinations = append(weightDestinations, c.calculateWeightDestinationsFromExperiment()...) + // If a user changes their mind in the middle of an V1 -> V2 update, and then applies a V3 + // there might have been a V2 ReplicaSet that was scaled up, but is now defunct. + // During the V2 rollout, managed routes could have been setup and would continue + // to direct traffic to the canary service which is now in front of 0 available replicas. + // We want to remove these managed routes alongside the safety here of never weighting to the canary. + err := reconciler.RemoveManagedRoutes() + if err != nil { + return err + } } else if c.rollout.Status.PromoteFull { // on a promote full, desired stable weight should be 0 (100% to canary), // But we can only increase canary weight according to available replica counts of the canary. diff --git a/rollout/trafficrouting_test.go b/rollout/trafficrouting_test.go index bc8a0a7672..288430f7a6 100644 --- a/rollout/trafficrouting_test.go +++ b/rollout/trafficrouting_test.go @@ -33,8 +33,10 @@ import ( traefikMocks "github.com/argoproj/argo-rollouts/rollout/trafficrouting/traefik/mocks" testutil "github.com/argoproj/argo-rollouts/test/util" "github.com/argoproj/argo-rollouts/utils/conditions" + ingressutil "github.com/argoproj/argo-rollouts/utils/ingress" istioutil "github.com/argoproj/argo-rollouts/utils/istio" logutil "github.com/argoproj/argo-rollouts/utils/log" + replicasetutil "github.com/argoproj/argo-rollouts/utils/replicaset" timeutil "github.com/argoproj/argo-rollouts/utils/time" ) @@ -1343,3 +1345,89 @@ func TestDontWeightToZeroWhenDynamicallyRollingBackToStable(t *testing.T) { rs1Updated := f.getUpdatedReplicaSet(scaleUpIndex) assert.Equal(t, int32(10), *rs1Updated.Spec.Replicas) } + +// TestDontWeightOrHaveManagedRoutesDuringInterruptedUpdate builds off of TestCanaryDontScaleDownOldRsDuringInterruptedUpdate +// in canary_test when we scale down an intermediate V2 ReplicaSet when applying a V3 spec in the middle of updating. +// We want to make sure that traffic routing is cleared in both weight AND managed routes when the V2 rs is +// nil or has 0 available replicas. +func TestDontWeightOrHaveManagedRoutesDuringInterruptedUpdate(t *testing.T) { + f := newFixture(t) + defer f.Close() + + steps := []v1alpha1.CanaryStep{ + { + SetHeaderRoute: &v1alpha1.SetHeaderRoute{ + Name: "test-header", + Match: []v1alpha1.HeaderRoutingMatch{ + { + HeaderName: "test", + HeaderValue: &v1alpha1.StringMatch{ + Exact: "test", + }, + }, + }, + }, + }, + { + SetWeight: pointer.Int32(90), + }, + { + Pause: &v1alpha1.RolloutPause{}, + }, + } + r1 := newCanaryRollout("foo", 5, nil, steps, pointer.Int32Ptr(1), intstr.FromInt(1), intstr.FromInt(0)) + r1.Spec.Strategy.Canary.TrafficRouting = &v1alpha1.RolloutTrafficRouting{ + ALB: &v1alpha1.ALBTrafficRouting{ + Ingress: "test-ingress", + }, + ManagedRoutes: []v1alpha1.MangedRoutes{ + {Name: "test-header"}, + }, + } + + r1.Spec.Strategy.Canary.StableService = "stable-svc" + r1.Spec.Strategy.Canary.CanaryService = "canary-svc" + r2 := bumpVersion(r1) + r3 := bumpVersion(r2) + + stableSvc := newService("stable-svc", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: r1.Status.CurrentPodHash}, r1) + canarySvc := newService("canary-svc", 80, map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: r3.Status.CurrentPodHash}, r3) + r3.Status.StableRS = r1.Status.CurrentPodHash + + ingress := newIngress("test-ingress", canarySvc, stableSvc) + ingress.Spec.Rules[0].HTTP.Paths[0].Backend.ServiceName = stableSvc.Name + + rs1 := newReplicaSetWithStatus(r1, 5, 5) + rs2 := newReplicaSetWithStatus(r2, 5, 5) + rs3 := newReplicaSetWithStatus(r3, 5, 0) + r3.Status.Canary.Weights = &v1alpha1.TrafficWeights{ + Canary: v1alpha1.WeightDestination{ + PodTemplateHash: replicasetutil.GetPodTemplateHash(rs2), + }, + } + + f.objects = append(f.objects, r3) + f.kubeobjects = append(f.kubeobjects, rs1, rs2, rs3, canarySvc, stableSvc, ingress) + f.replicaSetLister = append(f.replicaSetLister, rs1, rs2, rs3) + f.serviceLister = append(f.serviceLister, canarySvc, stableSvc) + f.ingressLister = append(f.ingressLister, ingressutil.NewLegacyIngress(ingress)) + + f.expectPatchRolloutAction(r3) + f.run(getKey(r3, t)) + + r3.Status.Canary.Weights = &v1alpha1.TrafficWeights{ + Canary: v1alpha1.WeightDestination{ + PodTemplateHash: replicasetutil.GetPodTemplateHash(rs3), + }, + } + + f.expectUpdateReplicaSetAction(rs3) + f.run(getKey(r3, t)) + + // Make sure that our weight is zero + assert.Equal(t, int32(0), r3.Status.Canary.Weights.Canary.Weight) + assert.Equal(t, replicasetutil.GetPodTemplateHash(rs3), r3.Status.Canary.Weights.Canary.PodTemplateHash) + // Make sure that RemoveManagedRoutes was called + f.fakeTrafficRouting.AssertCalled(t, "RemoveManagedRoutes", mock.Anything, mock.Anything) + +} From e0968a9287773bc7afb61a1cee359b372d3a6a85 Mon Sep 17 00:00:00 2001 From: Yusuke Abe Date: Thu, 14 Nov 2024 14:32:23 +0900 Subject: [PATCH 176/219] chore: update the link of DCO in PR template (#3944) chore: update the link of DCO Signed-off-by: chansuke --- .github/pull_request_template.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 33da74335a..384a49caf5 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -2,7 +2,7 @@ Checklist: * [ ] Either (a) I've created an [enhancement proposal](https://github.com/argoproj/argo-rollouts/issues/new/choose) and discussed it with the community, (b) this is a bug fix, or (c) this is a chore. * [ ] The title of the PR is (a) [conventional](https://www.conventionalcommits.org/en/v1.0.0/) with a list of types and scopes found [here](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/pr-title-check.yml), (b) states what changed, and (c) suffixes the related issues number. E.g. `"fix(controller): Updates such and such. Fixes #1234"`. -* [ ] I've signed my commits with [DCO](https://github.com/argoproj/argoproj) +* [ ] I've signed my commits with [DCO](https://github.com/argoproj/argoproj/blob/main/community/CONTRIBUTING.md#legal) * [ ] I have written unit and/or e2e tests for my change. PRs without these are unlikely to be merged. * [ ] My builds are green. Try syncing with master if they are not. -* [ ] My organization is added to [USERS.md](https://github.com/argoproj/argo-rollouts/blob/master/USERS.md). \ No newline at end of file +* [ ] My organization is added to [USERS.md](https://github.com/argoproj/argo-rollouts/blob/master/USERS.md). From 7a63088ab27e10149d72f851f1fcd7231657dac0 Mon Sep 17 00:00:00 2001 From: Jahvon Dockery Date: Thu, 14 Nov 2024 00:32:44 -0500 Subject: [PATCH 177/219] docs: add CarGurus to users.md (#3940) Signed-off-by: Jahvon Dockery --- USERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/USERS.md b/USERS.md index 0cd5f2c882..13af9b9400 100644 --- a/USERS.md +++ b/USERS.md @@ -12,6 +12,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit 1. [Bucketplace](https://www.bucketplace.co.kr/) 1. [BukuKas](https://bukukas.co.id/) 1. [Calm](https://www.calm.com/) +1. [CarGurus](https://www.cargurus.com/) 1. [CircleCI](https://circleci.com/) 1. [Cloudflare](https://cloudflare.com/) 1. [Codefresh](https://codefresh.io/) From 8ff3d0d77af6a5b098ef5a389e7e7240b2972631 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 22:33:03 -0700 Subject: [PATCH 178/219] chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.50.1 to 2.51.3 (#3939) chore(deps): bump github.com/newrelic/newrelic-client-go/v2 Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.50.1 to 2.51.3. - [Release notes](https://github.com/newrelic/newrelic-client-go/releases) - [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.50.1...v2.51.3) --- updated-dependencies: - dependency-name: github.com/newrelic/newrelic-client-go/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 8b70e89e26..ccc0b2f265 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/juju/ansiterm v1.0.0 github.com/machinebox/graphql v0.2.2 github.com/mitchellh/mapstructure v1.5.0 - github.com/newrelic/newrelic-client-go/v2 v2.50.1 + github.com/newrelic/newrelic-client-go/v2 v2.51.3 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.18.0 github.com/prometheus/client_model v0.6.1 diff --git a/go.sum b/go.sum index a9dec5fca6..eaeaa35933 100644 --- a/go.sum +++ b/go.sum @@ -554,8 +554,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/newrelic/newrelic-client-go/v2 v2.50.1 h1:xwRjfxXO1ZvQc4mvy52lNm60jsx4/YtIBxx9mvw7u38= -github.com/newrelic/newrelic-client-go/v2 v2.50.1/go.mod h1:+RRjI3nDGWT3kLm9Oi3QxpBm70uu8q1upEHBVWCZFpo= +github.com/newrelic/newrelic-client-go/v2 v2.51.3 h1:Bu/cUs6nfMjQMPBcxxHt4Xm30tKDT7ttYy/XRDsWP6Y= +github.com/newrelic/newrelic-client-go/v2 v2.51.3/go.mod h1:+RRjI3nDGWT3kLm9Oi3QxpBm70uu8q1upEHBVWCZFpo= github.com/nlopes/slack v0.5.0/go.mod h1:jVI4BBK3lSktibKahxBF74txcK2vyvkza1z/+rRnVAM= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oapi-codegen/runtime v1.0.0 h1:P4rqFX5fMFWqRzY9M/3YF9+aPSPPB06IzP2P7oOxrWo= From b899cf57f03a8d9474f5b57e602f722396ca58ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 22:33:23 -0700 Subject: [PATCH 179/219] chore(deps): bump softprops/action-gh-release from 2.0.9 to 2.1.0 (#3938) Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.9 to 2.1.0. - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/e7a8f85e1c67a31e6ed99a94b41bd0b71bbee6b8...01570a1f39cb168c169c802c3bceb9e93fb10974) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 8f540af5bb..adb413e4b7 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -107,7 +107,7 @@ jobs: make manifests IMAGE_TAG=${{ github.ref_name }} - name: Draft release - uses: softprops/action-gh-release@e7a8f85e1c67a31e6ed99a94b41bd0b71bbee6b8 # v0.1.15 + uses: softprops/action-gh-release@01570a1f39cb168c169c802c3bceb9e93fb10974 # v0.1.15 with: tag_name: ${{ github.event.inputs.tag }} draft: true @@ -212,7 +212,7 @@ jobs: /tmp/sbom.tar.gz - name: Upload SBOM and signature assets - uses: softprops/action-gh-release@e7a8f85e1c67a31e6ed99a94b41bd0b71bbee6b8 # v0.1.15 + uses: softprops/action-gh-release@01570a1f39cb168c169c802c3bceb9e93fb10974 # v0.1.15 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: From 1a055658272c4c1145c165f606aed15ae6ac96d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 22:33:40 -0700 Subject: [PATCH 180/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.42.3 to 1.42.4 (#3935) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.42.3 to 1.42.4. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/emr/v1.42.3...service/emr/v1.42.4) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index ccc0b2f265..f66af27a6d 100644 --- a/go.mod +++ b/go.mod @@ -8,9 +8,9 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.32.3 + github.com/aws/aws-sdk-go-v2 v1.32.4 github.com/aws/aws-sdk-go-v2/config v1.28.1 - github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.3 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.4 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.22.0 github.com/blang/semver v3.5.1+incompatible @@ -85,8 +85,8 @@ require ( github.com/aws/aws-sdk-go v1.44.116 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.42 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.18 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.22 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.22 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.3 // indirect diff --git a/go.sum b/go.sum index eaeaa35933..204858a3ed 100644 --- a/go.sum +++ b/go.sum @@ -96,22 +96,22 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.32.3 h1:T0dRlFBKcdaUPGNtkBSwHZxrtis8CQU17UpNBZYd0wk= -github.com/aws/aws-sdk-go-v2 v1.32.3/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo= +github.com/aws/aws-sdk-go-v2 v1.32.4 h1:S13INUiTxgrPueTmrm5DZ+MiAo99zYzHEFh1UNkOxNE= +github.com/aws/aws-sdk-go-v2 v1.32.4/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo= github.com/aws/aws-sdk-go-v2/config v1.28.1 h1:oxIvOUXy8x0U3fR//0eq+RdCKimWI900+SV+10xsCBw= github.com/aws/aws-sdk-go-v2/config v1.28.1/go.mod h1:bRQcttQJiARbd5JZxw6wG0yIK3eLeSCPdg6uqmmlIiI= github.com/aws/aws-sdk-go-v2/credentials v1.17.42 h1:sBP0RPjBU4neGpIYyx8mkU2QqLPl5u9cmdTWVzIpHkM= github.com/aws/aws-sdk-go-v2/credentials v1.17.42/go.mod h1:FwZBfU530dJ26rv9saAbxa9Ej3eF/AK0OAY86k13n4M= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.18 h1:68jFVtt3NulEzojFesM/WVarlFpCaXLKaBxDpzkQ9OQ= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.18/go.mod h1:Fjnn5jQVIo6VyedMc0/EhPpfNlPl7dHV916O6B+49aE= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.22 h1:Jw50LwEkVjuVzE1NzkhNKkBf9cRN7MtE1F/b2cOKTUM= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.22/go.mod h1:Y/SmAyPcOTmpeVaWSzSKiILfXTVJwrGmYZhcRbhWuEY= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.22 h1:981MHwBaRZM7+9QSR6XamDzF/o7ouUGxFzr+nVSIhrs= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.22/go.mod h1:1RA1+aBEfn+CAB/Mh0MB6LsdCYCnjZm7tKXtnk499ZQ= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23 h1:A2w6m6Tmr+BNXjDsr7M90zkWjsu4JXHwrzPg235STs4= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23/go.mod h1:35EVp9wyeANdujZruvHiQUAo9E3vbhnIO1mTCAxMlY0= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23 h1:pgYW9FCabt2M25MoHYCfMrVY2ghiiBKYWUVXfwZs+sU= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23/go.mod h1:c48kLgzO19wAu3CPkDWC28JbaJ+hfQlsdl7I2+oqIbk= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.3 h1:C6oS3hSFIB1ydz3dhgkZ0HyzWV41qVjNxS/mA0AGLMQ= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.3/go.mod h1:OXYzq1k1XwhwghGdHASEDeFr0Ij8dyFRaIy6w0yrIms= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.4 h1:c60zN18a3zQsBWdwE/v5xhK2Mtl1HG1gj9BLIEFxjWc= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.4/go.mod h1:fkETEwhdw2tOqu5m0Xa3wimV3PLDaiGqNrVZ3MJ7zOc= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 h1:TToQNkvGguu209puTojY/ozlqy2d/SFNcoLIqTFi42g= From 5f59344adfcae42cdb0ac941a876311a9ee49045 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 22:33:57 -0700 Subject: [PATCH 181/219] chore(deps): bump github.com/aws/aws-sdk-go-v2 from 1.32.3 to 1.32.4 (#3934) Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.32.3 to 1.32.4. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.32.3...v1.32.4) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> From 2de796683a240f6b3d8999950d97b16f78906f4a Mon Sep 17 00:00:00 2001 From: Cory Jacobsen Date: Wed, 4 Dec 2024 13:00:39 -0600 Subject: [PATCH 182/219] docs: add 7shifts to users.md (#3965) Signed-off-by: Cory Jacobsen --- USERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/USERS.md b/USERS.md index 13af9b9400..ed196d4234 100644 --- a/USERS.md +++ b/USERS.md @@ -2,6 +2,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR with your organization name if you are using Argo Rollouts. +1. [7shifts](https://www.7shifts.com) 1. [Ada](https://www.ada.cx) 1. [ADP](https://www.adp.com) 1. [Akuity](https://akuity.io/) From 0607239cc3243e5b342410c0ea0371f7e86cf6b5 Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Wed, 4 Dec 2024 21:24:55 +0200 Subject: [PATCH 183/219] docs: document dynamicStableScale (#3978) Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --- docs/features/specification.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/features/specification.md b/docs/features/specification.md index c4e7b3c1d0..c99ff3d627 100644 --- a/docs/features/specification.md +++ b/docs/features/specification.md @@ -447,6 +447,11 @@ spec: # 0 means canary pods are not scaled down. Default is 30 seconds. abortScaleDownDelaySeconds: 30 + # Automatically reduce the number of stable pods as the number of canary pods increases + # Only available when traffic routing is used. Default value is false meaning that as more canary pods + # are created the number of stable pods stays the same. + dynamicStableScale: false + status: pauseConditions: - reason: StepPause From 35147d30a88cbcf0a546faae4e4f6e6b98b49334 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Kol=C3=A1=C5=99?= Date: Wed, 4 Dec 2024 20:28:45 +0100 Subject: [PATCH 184/219] fix(dashboard): No redirect loop when running on root. Fixes #3967 (#3968) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(dashboard): no redirect loop with running on root Signed-off-by: Josef Kolář --- server/server_static.go | 2 +- server/server_static_test.go | 34 +++++++++++++++++++++------------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/server/server_static.go b/server/server_static.go index 44f2fb78f6..1a7de6b150 100644 --- a/server/server_static.go +++ b/server/server_static.go @@ -30,7 +30,7 @@ func (s *ArgoRolloutsServer) staticFileHttpHandler(w http.ResponseWriter, r *htt requestedURI := path.Clean(r.RequestURI) rootPath := path.Clean("/" + s.Options.RootPath) - if requestedURI == "/" { + if requestedURI == "/" && rootPath != "/" { http.Redirect(w, r, rootPath+"/", http.StatusFound) return } diff --git a/server/server_static_test.go b/server/server_static_test.go index 82b5b19ac9..f749ea842d 100644 --- a/server/server_static_test.go +++ b/server/server_static_test.go @@ -16,31 +16,39 @@ const TestRootPath = "/test-root" var ( //go:embed static_test/* - staticTestData embed.FS //nolint - mockServer ArgoRolloutsServer + staticTestData embed.FS //nolint + mockServerPrefix ArgoRolloutsServer + mockServerRoot ArgoRolloutsServer ) func init() { static = staticTestData staticBasePath = "static_test" indexHtmlFile = staticBasePath + "/index.html" - mockServer = mockArgoRolloutServer() + mockServerPrefix = mockArgoRolloutServer(TestRootPath) + mockServerRoot = mockArgoRolloutServer("/") } func TestIndexHtmlIsServed(t *testing.T) { tests := []struct { + server ArgoRolloutsServer requestPath string }{ - {TestRootPath + "/"}, - {TestRootPath + "/index.html"}, - {TestRootPath + "/nonsense/../index.html"}, - {TestRootPath + "/test-dir/test.css"}, + {mockServerPrefix, TestRootPath + "/"}, + {mockServerPrefix, TestRootPath + "/index.html"}, + {mockServerPrefix, TestRootPath + "/nonsense/../index.html"}, + {mockServerPrefix, TestRootPath + "/test-dir/test.css"}, + + {mockServerRoot, "/"}, + {mockServerRoot, "/index.html"}, + {mockServerRoot, "/nonsense/../index.html"}, + {mockServerRoot, "/test-dir/test.css"}, } for _, test := range tests { t.Run(test.requestPath, func(t *testing.T) { req := httptest.NewRequest(http.MethodGet, test.requestPath, nil) w := httptest.NewRecorder() - mockServer.staticFileHttpHandler(w, req) + test.server.staticFileHttpHandler(w, req) res := w.Result() defer res.Body.Close() data, err := io.ReadAll(res.Body) @@ -60,7 +68,7 @@ func TestIndexHtmlIsServed(t *testing.T) { func TestWhenFileNotFoundSendIndexPageForUiReactRouter(t *testing.T) { req := httptest.NewRequest(http.MethodGet, TestRootPath+"/namespace-default", nil) w := httptest.NewRecorder() - mockServer.staticFileHttpHandler(w, req) + mockServerPrefix.staticFileHttpHandler(w, req) res := w.Result() defer res.Body.Close() data, err := io.ReadAll(res.Body) @@ -72,7 +80,7 @@ func TestWhenFileNotFoundSendIndexPageForUiReactRouter(t *testing.T) { func TestSlashWillBeRedirectedToRootPath(t *testing.T) { req := httptest.NewRequest(http.MethodGet, "/", nil) w := httptest.NewRecorder() - mockServer.staticFileHttpHandler(w, req) + mockServerPrefix.staticFileHttpHandler(w, req) res := w.Result() defer res.Body.Close() _, err := io.ReadAll(res.Body) @@ -95,7 +103,7 @@ func TestInvalidFilesOrHackingAttemptReturn404(t *testing.T) { t.Run(test.requestPath, func(t *testing.T) { req := httptest.NewRequest(http.MethodGet, test.requestPath, nil) w := httptest.NewRecorder() - mockServer.staticFileHttpHandler(w, req) + mockServerPrefix.staticFileHttpHandler(w, req) res := w.Result() defer res.Body.Close() assert.Equal(t, res.StatusCode, http.StatusNotFound) @@ -103,10 +111,10 @@ func TestInvalidFilesOrHackingAttemptReturn404(t *testing.T) { } } -func mockArgoRolloutServer() ArgoRolloutsServer { +func mockArgoRolloutServer(rootPath string) ArgoRolloutsServer { s := ArgoRolloutsServer{ Options: ServerOptions{ - RootPath: TestRootPath, + RootPath: rootPath, }, } return s From 642d031747392ab420c36b56b3b6fde41b451d93 Mon Sep 17 00:00:00 2001 From: Cory Jacobsen Date: Wed, 4 Dec 2024 13:34:22 -0600 Subject: [PATCH 185/219] fix(dashboard): Cleanup viewcontroller after each request. Fixes #2095 (#3966) fix(dashboard): cleanup viewcontroller after each request. Fixes #2095 Signed-off-by: Cory Jacobsen --- server/server.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/server.go b/server/server.go index 3482634491..9a3e65e328 100644 --- a/server/server.go +++ b/server/server.go @@ -179,7 +179,10 @@ func (s *ArgoRolloutsServer) initRolloutViewController(namespace string, name st } func (s *ArgoRolloutsServer) getRolloutInfo(namespace string, name string) (*rollout.RolloutInfo, error) { - controller := s.initRolloutViewController(namespace, name, context.Background()) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + controller := s.initRolloutViewController(namespace, name, ctx) ri, err := controller.GetRolloutInfo() if err != nil { return nil, err From c40e5a88830215008e7cdcbd323fa9b3472000f4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 13:42:17 -0600 Subject: [PATCH 186/219] chore(deps): bump docker/build-push-action from 6.9.0 to 6.10.0 (#3963) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.9.0 to 6.10.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/4f58ea79222b3b9dc2c8bbdd6debcef730109a75...48aba3b46d1b1fec4febb7c5d0c644b249a11355) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/image-reuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-reuse.yaml b/.github/workflows/image-reuse.yaml index ad43e96f6d..da828a7e39 100644 --- a/.github/workflows/image-reuse.yaml +++ b/.github/workflows/image-reuse.yaml @@ -130,7 +130,7 @@ jobs: - name: Build and push container image id: image - uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 #v6.9.0 + uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 #v6.10.0 with: context: . platforms: ${{ inputs.platforms }} From 25d1a6edc398833db60545957a607d2ebb433e56 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 13:44:56 -0600 Subject: [PATCH 187/219] chore(deps): bump google.golang.org/protobuf from 1.35.1 to 1.35.2 (#3950) Bumps google.golang.org/protobuf from 1.35.1 to 1.35.2. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f66af27a6d..a1f97fb169 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( golang.org/x/oauth2 v0.23.0 google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 google.golang.org/grpc v1.67.1 - google.golang.org/protobuf v1.35.1 + google.golang.org/protobuf v1.35.2 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.29.3 k8s.io/apiextensions-apiserver v0.29.3 diff --git a/go.sum b/go.sum index 204858a3ed..903d19e8b9 100644 --- a/go.sum +++ b/go.sum @@ -1143,8 +1143,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= From f7265e3b45cabbdb22407da90cd97a79ab65bb49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 13:45:14 -0600 Subject: [PATCH 188/219] chore(deps): bump golang.org/x/oauth2 from 0.23.0 to 0.24.0 (#3949) Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.23.0 to 0.24.0. - [Commits](https://github.com/golang/oauth2/compare/v0.23.0...v0.24.0) --- updated-dependencies: - dependency-name: golang.org/x/oauth2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a1f97fb169..40ecb55b1e 100644 --- a/go.mod +++ b/go.mod @@ -40,7 +40,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 - golang.org/x/oauth2 v0.23.0 + golang.org/x/oauth2 v0.24.0 google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 google.golang.org/grpc v1.67.1 google.golang.org/protobuf v1.35.2 diff --git a/go.sum b/go.sum index 903d19e8b9..3516e49352 100644 --- a/go.sum +++ b/go.sum @@ -876,8 +876,8 @@ golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From c5f38100232b26e7f912ec05d57fdbad786171e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 13:45:33 -0600 Subject: [PATCH 189/219] chore(deps): bump codecov/codecov-action from 4.6.0 to 5.0.7 (#3961) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.6.0 to 5.0.7. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238...015f24e6818733317a2da2edd6290ab26238649a) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/testing.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml index d3b3d561f9..82843579e8 100644 --- a/.github/workflows/testing.yaml +++ b/.github/workflows/testing.yaml @@ -184,7 +184,7 @@ jobs: run: | go tool covdata textfmt -i=coverage-output-unit/,coverage-output-e2e/ -o full-coverage.out - name: Upload code coverage information to codecov.io - uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0 + uses: codecov/codecov-action@015f24e6818733317a2da2edd6290ab26238649a # v5.0.7 with: file: full-coverage.out fail_ci_if_error: false From 275623fedc4b656e81851f3fce4377b061ca02df Mon Sep 17 00:00:00 2001 From: Yusuke Abe Date: Thu, 5 Dec 2024 04:46:08 +0900 Subject: [PATCH 190/219] docs: add descriptions for additional default trigger templates (#3960) Signed-off-by: chansuke --- docs/features/notifications.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/features/notifications.md b/docs/features/notifications.md index 5574ab566f..75c044d829 100644 --- a/docs/features/notifications.md +++ b/docs/features/notifications.md @@ -70,7 +70,12 @@ To enable you need to add a flag to the controller `--self-service-notification- Currently the following triggers have [built-in templates](https://github.com/argoproj/argo-rollouts/tree/master/manifests/notifications). +* `on-analysis-run-error` when an error occurs during the execution of an analysis run +* `on-analysis-run-failed` when an analysis run fails +* `on-analysis-run-running` when an analysis run is running +* `on-rollout-aborted` when a rollout process is aborted before completion. * `on-rollout-completed` when a rollout is finished and all its steps are completed +* `on-rollout-paused` when a rollout is paused * `on-rollout-step-completed` when an individual step inside a rollout definition is completed * `on-rollout-updated` when a rollout definition is changed * `on-scaling-replica-set` when the number of replicas in a rollout is changed @@ -165,4 +170,4 @@ Each condition might use several templates. Typically each template is responsib The following prometheus metrics are emitted when notifications are enabled in argo-rollouts. - notification_send_success is a counter that measures how many times the notification is sent successfully. - notification_send_error is a counter that measures how many times the notification failed to send. -- notification_send is a histogram that measures performance of sending notification. \ No newline at end of file +- notification_send is a histogram that measures performance of sending notification. From 7c063168ccfab3993c9c0099ac12158fbaee1c07 Mon Sep 17 00:00:00 2001 From: arouco Date: Wed, 4 Dec 2024 17:00:30 -0300 Subject: [PATCH 191/219] feat(metricprovider): credentials to download plugin (#3905) * adding logic to defined headers to download plugins from secure sources. Signed-off-by: Ariadna Rouco * adding documentation for plugin download headers Signed-off-by: Ariadna Rouco * removing insignificant line. Signed-off-by: Ariadna Rouco * increasing coverage Signed-off-by: Ariadna Rouco * adding coverage. Signed-off-by: Ariadna Rouco * malformed url case coverage. Signed-off-by: Ariadna Rouco --------- Signed-off-by: Ariadna Rouco --- controller/controller.go | 4 +- controller/controller_test.go | 34 +++++++ docs/analysis/plugins.md | 26 +++++ docs/features/traffic-management/plugins.md | 11 +++ utils/plugin/downloader.go | 45 +++++++-- utils/plugin/downloader_test.go | 101 +++++++++++++++++--- utils/plugin/types/types.go | 10 ++ 7 files changed, 208 insertions(+), 23 deletions(-) diff --git a/controller/controller.go b/controller/controller.go index e9509cd78e..0e7a0a8cae 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -238,7 +238,7 @@ func NewAnalysisManager( log.Fatalf("Failed to init config: %v", err) } - err = plugin.DownloadPlugins(plugin.FileDownloaderImpl{}) + err = plugin.DownloadPlugins(plugin.FileDownloaderImpl{}, kubeclientset) if err != nil { log.Fatalf("Failed to download plugins: %v", err) } @@ -444,7 +444,7 @@ func NewManager( log.Fatalf("Failed to init config: %v", err) } - err = plugin.DownloadPlugins(plugin.FileDownloaderImpl{}) + err = plugin.DownloadPlugins(plugin.FileDownloaderImpl{}, kubeclientset) if err != nil { log.Fatalf("Failed to download plugins: %v", err) } diff --git a/controller/controller_test.go b/controller/controller_test.go index 0f94131c96..8bd9582fba 100644 --- a/controller/controller_test.go +++ b/controller/controller_test.go @@ -274,6 +274,40 @@ func TestNewManager(t *testing.T) { assert.NotNil(t, cm) } +func TestNewAnalysisManager(t *testing.T) { + f := newFixture(t) + + i := informers.NewSharedInformerFactory(f.client, noResyncPeriodFunc()) + k8sI := kubeinformers.NewSharedInformerFactory(f.kubeclient, noResyncPeriodFunc()) + + scheme := runtime.NewScheme() + listMapping := map[schema.GroupVersionResource]string{} + dynamicClient := dynamicfake.NewSimpleDynamicClientWithCustomListKinds(scheme, listMapping) + dynamicInformerFactory := dynamicinformer.NewDynamicSharedInformerFactory(dynamicClient, 0) + + k8sRequestProvider := &metrics.K8sRequestsCountProvider{} + cm := NewAnalysisManager( + "default", + f.kubeclient, + f.client, + k8sI.Batch().V1().Jobs(), + i.Argoproj().V1alpha1().AnalysisRuns(), + i.Argoproj().V1alpha1().AnalysisTemplates(), + i.Argoproj().V1alpha1().ClusterAnalysisTemplates(), + noResyncPeriodFunc(), + 8090, + 8080, + k8sRequestProvider, + nil, + dynamicInformerFactory, + false, + nil, + nil, + ) + + assert.NotNil(t, cm) +} + func TestPrimaryController(t *testing.T) { f := newFixture(t) diff --git a/docs/analysis/plugins.md b/docs/analysis/plugins.md index 82f63183ad..e1356bf447 100644 --- a/docs/analysis/plugins.md +++ b/docs/analysis/plugins.md @@ -65,8 +65,34 @@ data: - name: "argoproj-labs/sample-prometheus" # name of the plugin, it must match the name required by the plugin so it can find it's configuration location: "https://github.com/argoproj-labs/rollouts-plugin-metric-sample-prometheus/releases/download/v0.0.4/metric-plugin-linux-amd64" # supports http(s):// urls and file:// sha256: "dac10cbf57633c9832a17f8c27d2ca34aa97dd3d" #optional sha256 checksum of the plugin executable + headersFrom: #optional headers for the download via http request + - secretRef: + name: secret-name +--- +apiVersion: v1 +kind: Secret +metadata: + name: secret-name +stringData: + Authorization: Basic + My-Header: value ``` + + +## Some words of caution + +Depending on which method you use to install and the plugin, there are some things to be aware of. +The rollouts controller will not start if it can not download or find the plugin executable. This means that if you are using +a method of installation that requires a download of the plugin and the server hosting the plugin for some reason is not available and the rollouts +controllers pod got deleted while the server was down or is coming up for the first time, it will not be able to start until +the server hosting the plugin is available again. + +Argo Rollouts will download the plugin at startup only once but if the pod is deleted it will need to download the plugin again on next startup. Running +Argo Rollouts in HA mode can help a little with this situation because each pod will download the plugin at startup. So if a single pod gets +deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the +responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach. + ## List of Available Plugins (alphabetical order) If you have created a plugin, please submit a PR to add it to this list. diff --git a/docs/features/traffic-management/plugins.md b/docs/features/traffic-management/plugins.md index 51d982417a..1d726ff67f 100644 --- a/docs/features/traffic-management/plugins.md +++ b/docs/features/traffic-management/plugins.md @@ -65,6 +65,17 @@ data: - name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find it's configuration location: "https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx/releases/download/v0.0.1/metric-plugin-linux-amd64" # supports http(s):// urls and file:// sha256: "08f588b1c799a37bbe8d0fc74cc1b1492dd70b2c" #optional sha256 checksum of the plugin executable + headersFrom: #optional headers for the download via http request + - secretRef: + name: secret-name +--- +apiVersion: v1 +kind: Secret +metadata: + name: secret-name +stringData: + Authorization: Basic + My-Header: value ``` ## List of Available Plugins (alphabetical order) diff --git a/utils/plugin/downloader.go b/utils/plugin/downloader.go index a67dcb38e5..15bf560e1c 100644 --- a/utils/plugin/downloader.go +++ b/utils/plugin/downloader.go @@ -1,6 +1,7 @@ package plugin import ( + "context" "crypto/sha256" "fmt" "io" @@ -11,6 +12,8 @@ import ( "time" argoConfig "github.com/argoproj/argo-rollouts/utils/config" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" "github.com/argoproj/argo-rollouts/utils/defaults" @@ -19,15 +22,20 @@ import ( // FileDownloader is an interface that allows us to mock the http.Get function type FileDownloader interface { - Get(url string) (resp *http.Response, err error) + Get(url string, header http.Header) (resp *http.Response, err error) } // FileDownloaderImpl is the default/real implementation of the FileDownloader interface type FileDownloaderImpl struct { } -func (fd FileDownloaderImpl) Get(url string) (resp *http.Response, err error) { - return http.Get(url) +func (fd FileDownloaderImpl) Get(url string, header http.Header) (resp *http.Response, err error) { + request, err := http.NewRequest(http.MethodGet, url, nil) + if err != nil { + return nil, err + } + request.Header = header + return http.DefaultClient.Do(request) } // checkPluginExists this function checks if the plugin exists in the configured path on the filesystem @@ -61,12 +69,17 @@ func checkShaOfPlugin(pluginLocation string, expectedSha256 string) (bool, error return match, nil } -func downloadFile(filepath string, url string, downloader FileDownloader) error { - // Get the data - resp, err := downloader.Get(url) +func downloadFile(filepath string, url string, downloader FileDownloader, header http.Header) error { + // Get the data with credentials + resp, err := downloader.Get(url, header) if err != nil { return fmt.Errorf("failed to download file from %s: %w", url, err) } + + if isFailure(resp.StatusCode) { + return fmt.Errorf("failed to download file from %s: response code %s", url, http.StatusText(resp.StatusCode)) + } + defer resp.Body.Close() // Create the file @@ -92,7 +105,7 @@ func downloadFile(filepath string, url string, downloader FileDownloader) error } // DownloadPlugins this function downloads and/or checks that a plugin executable exits on the filesystem -func DownloadPlugins(fd FileDownloader) error { +func DownloadPlugins(fd FileDownloader, kubeClient kubernetes.Interface) error { config, err := argoConfig.GetConfig() if err != nil { return fmt.Errorf("failed to get config: %w", err) @@ -126,7 +139,18 @@ func DownloadPlugins(fd FileDownloader) error { case "http", "https": log.Infof("Downloading plugin %s from: %s", plugin.Name, plugin.Location) startTime := time.Now() - err = downloadFile(finalFileLocation, urlObj.String(), fd) + requestHeader := http.Header{} + for _, header := range plugin.HeadersFrom { + secret, err := kubeClient.CoreV1().Secrets(defaults.Namespace()).Get(context.Background(), header.SecretRef.Name, metav1.GetOptions{}) + if err != nil { + return fmt.Errorf("failed to get secret in secretRef: %w", err) + } + for k, v := range secret.Data { + requestHeader.Add(k, string(v)) + } + } + + err = downloadFile(finalFileLocation, urlObj.String(), fd, requestHeader) if err != nil { return fmt.Errorf("failed to download plugin from %s: %w", plugin.Location, err) } @@ -201,3 +225,8 @@ func copyFile(src, dst string) error { } return nil } + +// isFailure determines if the response has a 2xx response +func isFailure(statusCode int) bool { + return statusCode < http.StatusOK || statusCode >= http.StatusBadRequest +} diff --git a/utils/plugin/downloader_test.go b/utils/plugin/downloader_test.go index f01e1d0e5f..7c54f6b8ef 100644 --- a/utils/plugin/downloader_test.go +++ b/utils/plugin/downloader_test.go @@ -21,7 +21,18 @@ type MockFileDownloader struct { FileDownloader } -func (m MockFileDownloader) Get(url string) (*http.Response, error) { +func (m MockFileDownloader) Get(url string, header http.Header) (*http.Response, error) { + if url == "https://test/plugin/fail" { + return &http.Response{ + Status: "404", + StatusCode: 404, + Proto: "HTTP/1.1", + ProtoMajor: 1, + ProtoMinor: 1, + Header: nil, + ContentLength: 4, + }, nil + } responseBody := io.NopCloser(bytes.NewReader([]byte(`test`))) return &http.Response{ Status: "200", @@ -47,16 +58,23 @@ func TestPlugin(t *testing.T) { Name: "argo-rollouts-config", Namespace: "argo-rollouts", }, - Data: map[string]string{"metricProviderPlugins": "\n - name: argoproj-labs/http\n location: https://test/plugin\n - name: argoproj-labs/http-sha\n location: https://test/plugin\n sha256: 74657374e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n - name: argoproj-labs/http-sha-correct\n location: https://test/plugin\n sha256: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"}, + Data: map[string]string{"metricProviderPlugins": "\n - name: argoproj-labs/http\n location: https://test/plugin\n - name: argoproj-labs/http-sha\n location: https://test/plugin\n sha256: 74657374e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n - name: argoproj-labs/http-sha-correct\n location: https://test/plugin\n sha256: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08\n - name: argoproj-labs/http-headers-correct\n location: https://test/plugin\n headersFrom:\n - secretRef:\n name: secret-name"}, } - client := fake.NewSimpleClientset(cm) + secret := &v1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "secret-name", + Namespace: "argo-rollouts", + }, + Data: map[string][]byte{"Authorization": []byte("Basic VE9LRU4=")}, + } + client := fake.NewSimpleClientset(cm, secret) config.UnInitializeConfig() _, err := config.InitializeConfig(client, "argo-rollouts-config") assert.NoError(t, err) - err = DownloadPlugins(MockFileDownloader{}) + err = DownloadPlugins(MockFileDownloader{}, client) assert.NoError(t, err) dir, filename, err := config.GetPluginDirectoryAndFilename("argoproj-labs/http") @@ -70,6 +88,54 @@ func TestPlugin(t *testing.T) { err = os.Remove(filepath.Join(defaults.DefaultRolloutPluginFolder, dir, filename)) assert.NoError(t, err) + + dir, filename, err = config.GetPluginDirectoryAndFilename("argoproj-labs/http-headers-correct") + assert.NoError(t, err) + + err = os.Remove(filepath.Join(defaults.DefaultRolloutPluginFolder, dir, filename)) + assert.NoError(t, err) + err = os.RemoveAll(defaults.DefaultRolloutPluginFolder) + assert.NoError(t, err) + }) + + t.Run("test failed download", func(t *testing.T) { + cm := &v1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Name: "argo-rollouts-config", + Namespace: "argo-rollouts", + }, + Data: map[string]string{"metricProviderPlugins": "\n - name: argoproj-labs/http-fail\n location: https://test/plugin/fail\n"}, + } + client := fake.NewSimpleClientset(cm) + + config.UnInitializeConfig() + + _, err := config.InitializeConfig(client, "argo-rollouts-config") + assert.NoError(t, err) + + err = DownloadPlugins(MockFileDownloader{}, client) + assert.Error(t, err) + err = os.RemoveAll(defaults.DefaultRolloutPluginFolder) + assert.NoError(t, err) + }) + + t.Run("test failed finding secret for header", func(t *testing.T) { + cm := &v1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Name: "argo-rollouts-config", + Namespace: "argo-rollouts", + }, + Data: map[string]string{"metricProviderPlugins": " - name: argoproj-labs/http-headers-correct\n location: https://test/plugin\n headersFrom:\n - secretRef:\n name: secret-name"}, + } + client := fake.NewSimpleClientset(cm) + + config.UnInitializeConfig() + + _, err := config.InitializeConfig(client, "argo-rollouts-config") + assert.NoError(t, err) + + err = DownloadPlugins(MockFileDownloader{}, client) + assert.Error(t, err) err = os.RemoveAll(defaults.DefaultRolloutPluginFolder) assert.NoError(t, err) }) @@ -89,7 +155,7 @@ func TestPlugin(t *testing.T) { _, err := config.InitializeConfig(client, defaults.DefaultRolloutsConfigMapName) assert.NoError(t, err) - err = DownloadPlugins(MockFileDownloader{}) + err = DownloadPlugins(MockFileDownloader{}, client) assert.Error(t, err) dir, filename, err := config.GetPluginDirectoryAndFilename("argoproj-labs/http-badsha") @@ -109,7 +175,7 @@ func TestPlugin(t *testing.T) { assert.NoError(t, err) assert.Equal(t, 0, len(cm.GetAllPlugins())) - err = DownloadPlugins(MockFileDownloader{}) + err = DownloadPlugins(MockFileDownloader{}, client) assert.NoError(t, err) err = os.RemoveAll(defaults.DefaultRolloutPluginFolder) assert.NoError(t, err) @@ -130,7 +196,7 @@ func TestPlugin(t *testing.T) { _, err := config.InitializeConfig(client, defaults.DefaultRolloutsConfigMapName) assert.NoError(t, err) - err = DownloadPlugins(MockFileDownloader{}) + err = DownloadPlugins(MockFileDownloader{}, client) assert.NoError(t, err) dir, filename, err := config.GetPluginDirectoryAndFilename("argoproj-labs/file-plugin") @@ -159,7 +225,7 @@ func TestPlugin(t *testing.T) { _, err = config.InitializeConfig(client, defaults.DefaultRolloutsConfigMapName) assert.NoError(t, err) - err = DownloadPlugins(MockFileDownloader{}) + err = DownloadPlugins(MockFileDownloader{}, client) assert.NoError(t, err) dir, filename, err := config.GetPluginDirectoryAndFilename("namespace/file-plugin") @@ -186,7 +252,7 @@ func TestPlugin(t *testing.T) { _, err := config.InitializeConfig(client, "argo-rollouts-config") assert.Error(t, err) - err = DownloadPlugins(MockFileDownloader{}) + err = DownloadPlugins(MockFileDownloader{}, client) assert.Error(t, err) }) @@ -205,7 +271,7 @@ func TestPlugin(t *testing.T) { _, err := config.InitializeConfig(client, "argo-rollouts-config") assert.NoError(t, err) - err = DownloadPlugins(MockFileDownloader{}) + err = DownloadPlugins(MockFileDownloader{}, client) assert.Error(t, err) err = os.RemoveAll(defaults.DefaultRolloutPluginFolder) @@ -251,9 +317,18 @@ func TestCheckShaOfPlugin(t *testing.T) { } func TestDownloadFile(t *testing.T) { - err := downloadFile("error", "", FileDownloaderImpl{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed to download file from") + t.Run("test sha of real file", func(t *testing.T) { + err := downloadFile("error", " ", FileDownloaderImpl{}, nil) + assert.Error(t, err) + assert.Contains(t, err.Error(), "failed to download file from") + }) + + t.Run("test download fail with invalid url", func(t *testing.T) { + url := "://example.com" + err := downloadFile("error", url, FileDownloaderImpl{}, nil) + assert.Error(t, err) + assert.Contains(t, err.Error(), "failed to download file from") + }) } func Test_copyFile(t *testing.T) { diff --git a/utils/plugin/types/types.go b/utils/plugin/types/types.go index 11cd8be5e4..e3555a9ae5 100644 --- a/utils/plugin/types/types.go +++ b/utils/plugin/types/types.go @@ -136,4 +136,14 @@ type PluginItem struct { Disabled bool `json:"disabled" yaml:"disabled"` // Args holds command line arguments to initialize the plugin Args []string `json:"args" yaml:"args"` + // HeadersFrom holds the names of secrets where the headers should be pulled from + HeadersFrom []HeadersFrom `json:"headersFrom" yaml:"headersFrom"` +} + +type HeadersFrom struct { + SecretRef SecretRef `json:"secretRef" yaml:"secretRef"` +} + +type SecretRef struct { + Name string `json:"name" yaml:"name"` } From 1dbe60c549a714186d838f84dc52d1296bfdb261 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 08:47:33 -0600 Subject: [PATCH 192/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.28.1 to 1.28.6 (#3981) chore(deps): bump github.com/aws/aws-sdk-go-v2/config Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.28.1 to 1.28.6. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.28.1...config/v1.28.6) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 24 ++++++++++++------------ go.sum | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/go.mod b/go.mod index 40ecb55b1e..6bb09f96cd 100644 --- a/go.mod +++ b/go.mod @@ -8,11 +8,11 @@ require ( github.com/antonmedv/expr v1.15.5 github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954 github.com/argoproj/pkg v0.13.6 - github.com/aws/aws-sdk-go-v2 v1.32.4 - github.com/aws/aws-sdk-go-v2/config v1.28.1 + github.com/aws/aws-sdk-go-v2 v1.32.6 + github.com/aws/aws-sdk-go-v2/config v1.28.6 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.4 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 - github.com/aws/smithy-go v1.22.0 + github.com/aws/smithy-go v1.22.1 github.com/blang/semver v3.5.1+incompatible github.com/bombsimon/logrusr/v4 v4.1.0 github.com/evanphx/json-patch/v5 v5.9.0 @@ -83,17 +83,17 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/aws/aws-sdk-go v1.44.116 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.42 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.18 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.47 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.24.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.3 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.32.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.24.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.33.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect diff --git a/go.sum b/go.sum index 3516e49352..874bed8611 100644 --- a/go.sum +++ b/go.sum @@ -96,38 +96,38 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.116 h1:NpLIhcvLWXJZAEwvPj3TDHeqp7DleK6ZUVYyW01WNHY= github.com/aws/aws-sdk-go v1.44.116/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.32.4 h1:S13INUiTxgrPueTmrm5DZ+MiAo99zYzHEFh1UNkOxNE= -github.com/aws/aws-sdk-go-v2 v1.32.4/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo= -github.com/aws/aws-sdk-go-v2/config v1.28.1 h1:oxIvOUXy8x0U3fR//0eq+RdCKimWI900+SV+10xsCBw= -github.com/aws/aws-sdk-go-v2/config v1.28.1/go.mod h1:bRQcttQJiARbd5JZxw6wG0yIK3eLeSCPdg6uqmmlIiI= -github.com/aws/aws-sdk-go-v2/credentials v1.17.42 h1:sBP0RPjBU4neGpIYyx8mkU2QqLPl5u9cmdTWVzIpHkM= -github.com/aws/aws-sdk-go-v2/credentials v1.17.42/go.mod h1:FwZBfU530dJ26rv9saAbxa9Ej3eF/AK0OAY86k13n4M= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.18 h1:68jFVtt3NulEzojFesM/WVarlFpCaXLKaBxDpzkQ9OQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.18/go.mod h1:Fjnn5jQVIo6VyedMc0/EhPpfNlPl7dHV916O6B+49aE= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23 h1:A2w6m6Tmr+BNXjDsr7M90zkWjsu4JXHwrzPg235STs4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23/go.mod h1:35EVp9wyeANdujZruvHiQUAo9E3vbhnIO1mTCAxMlY0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23 h1:pgYW9FCabt2M25MoHYCfMrVY2ghiiBKYWUVXfwZs+sU= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23/go.mod h1:c48kLgzO19wAu3CPkDWC28JbaJ+hfQlsdl7I2+oqIbk= +github.com/aws/aws-sdk-go-v2 v1.32.6 h1:7BokKRgRPuGmKkFMhEg/jSul+tB9VvXhcViILtfG8b4= +github.com/aws/aws-sdk-go-v2 v1.32.6/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U= +github.com/aws/aws-sdk-go-v2/config v1.28.6 h1:D89IKtGrs/I3QXOLNTH93NJYtDhm8SYa9Q5CsPShmyo= +github.com/aws/aws-sdk-go-v2/config v1.28.6/go.mod h1:GDzxJ5wyyFSCoLkS+UhGB0dArhb9mI+Co4dHtoTxbko= +github.com/aws/aws-sdk-go-v2/credentials v1.17.47 h1:48bA+3/fCdi2yAwVt+3COvmatZ6jUDNkDTIsqDiMUdw= +github.com/aws/aws-sdk-go-v2/credentials v1.17.47/go.mod h1:+KdckOejLW3Ks3b0E3b5rHsr2f9yuORBum0WPnE5o5w= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21 h1:AmoU1pziydclFT/xRV+xXE/Vb8fttJCLRPv8oAkprc0= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21/go.mod h1:AjUdLYe4Tgs6kpH4Bv7uMZo7pottoyHMn4eTcIcneaY= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25 h1:s/fF4+yDQDoElYhfIVvSNyeCydfbuTKzhxSXDXCPasU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25/go.mod h1:IgPfDv5jqFIzQSNbUEMoitNooSMXjRSDkhXv8jiROvU= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 h1:ZntTCl5EsYnhN/IygQEUugpdwbhdkom9uHcbCftiGgA= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25/go.mod h1:DBdPrgeocww+CSl1C8cEV8PN1mHMBhuCDLpXezyvWkE= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.4 h1:c60zN18a3zQsBWdwE/v5xhK2Mtl1HG1gj9BLIEFxjWc= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.4/go.mod h1:fkETEwhdw2tOqu5m0Xa3wimV3PLDaiGqNrVZ3MJ7zOc= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 h1:TToQNkvGguu209puTojY/ozlqy2d/SFNcoLIqTFi42g= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0/go.mod h1:0jp+ltwkf+SwG2fm/PKo8t4y8pJSgOCO4D8Lz3k0aHQ= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.3 h1:qcxX0JYlgWH3hpPUnd6U0ikcl6LLA9sLkXE2w1fpMvY= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.3/go.mod h1:cLSNEmI45soc+Ef8K/L+8sEA3A3pYFEYf5B5UI+6bH4= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1/go.mod h1:9nu0fVANtYiAePIBh2/pFUSwtJ402hLnp854CNoDOeE= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6 h1:50+XsN70RS7dwJ2CkVNXzj7U2L1HKP8nqTd3XWEXBN4= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6/go.mod h1:WqgLmwY7so32kG01zD8CPTJWVWM+TzJoOVHwTg4aPug= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 h1:tRNrFDGRm81e6nTX5Q4CFblea99eAfm0dxXazGpLceU= github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7/go.mod h1:8GWUDux5Z2h6z2efAtr54RdHXtLm8sq7Rg85ZNY/CZM= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.3 h1:UTpsIf0loCIWEbrqdLb+0RxnTXfWh2vhw4nQmFi4nPc= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.3/go.mod h1:FZ9j3PFHHAR+w0BSEjK955w5YD2UwB/l/H0yAK3MJvI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.3 h1:2YCmIXv3tmiItw0LlYf6v7gEHebLY45kBEnPezbUKyU= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.3/go.mod h1:u19stRyNPxGhj6dRm+Cdgu6N75qnbW7+QN0q0dsAk58= -github.com/aws/aws-sdk-go-v2/service/sts v1.32.3 h1:wVnQ6tigGsRqSWDEEyH6lSAJ9OyFUsSnbaUWChuSGzs= -github.com/aws/aws-sdk-go-v2/service/sts v1.32.3/go.mod h1:VZa9yTFyj4o10YGsmDO4gbQJUvvhY72fhumT8W4LqsE= -github.com/aws/smithy-go v1.22.0 h1:uunKnWlcoL3zO7q+gG2Pk53joueEOsnNB28QdMsmiMM= -github.com/aws/smithy-go v1.22.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.7 h1:rLnYAfXQ3YAccocshIH5mzNNwZBkBo+bP6EhIxak6Hw= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.7/go.mod h1:ZHtuQJ6t9A/+YDuxOLnbryAmITtr8UysSny3qcyvJTc= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6 h1:JnhTZR3PiYDNKlXy50/pNeix9aGMo6lLpXwJ1mw8MD4= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6/go.mod h1:URronUEGfXZN1VpdktPSD1EkAL9mfrV+2F4sjH38qOY= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.2 h1:s4074ZO1Hk8qv65GqNXqDjmkf4HSQqJukaLuuW0TpDA= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.2/go.mod h1:mVggCnIWoM09jP71Wh+ea7+5gAp53q+49wDFs1SW5z8= +github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro= +github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= From 947437962f6f1a8b6c8c704827837a015d00fad5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 08:47:52 -0600 Subject: [PATCH 193/219] chore(deps): bump google.golang.org/grpc from 1.67.1 to 1.68.1 (#3979) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.67.1 to 1.68.1. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.67.1...v1.68.1) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 16 ++++++++-------- go.sum | 36 ++++++++++++++++++------------------ 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/go.mod b/go.mod index 6bb09f96cd..f84ed5838f 100644 --- a/go.mod +++ b/go.mod @@ -41,8 +41,8 @@ require ( github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 golang.org/x/oauth2 v0.24.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 - google.golang.org/grpc v1.67.1 + google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.29.3 @@ -200,21 +200,21 @@ require ( go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.19.0 // indirect - golang.org/x/crypto v0.26.0 // indirect + golang.org/x/crypto v0.27.0 // indirect golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.28.0 // indirect + golang.org/x/net v0.29.0 // indirect golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.24.0 // indirect - golang.org/x/term v0.23.0 // indirect - golang.org/x/text v0.17.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/term v0.24.0 // indirect + golang.org/x/text v0.18.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 // indirect gomodules.xyz/notify v0.1.1 // indirect google.golang.org/api v0.162.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index 874bed8611..2731cb0793 100644 --- a/go.sum +++ b/go.sum @@ -166,8 +166,8 @@ github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtM github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20 h1:N+3sFI5GUjRKBi+i0TxYVST9h4Ie192jJWpHvthBBgg= -github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI= +github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -781,8 +781,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= -golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -867,8 +867,8 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -959,8 +959,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= -golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -969,8 +969,8 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= -golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -983,8 +983,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1110,10 +1110,10 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= +google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1128,8 +1128,8 @@ google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= -google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 1bfcd0c344fab7b56f645922f1ea2f66fee66423 Mon Sep 17 00:00:00 2001 From: Youssef Rabie Date: Thu, 5 Dec 2024 16:50:36 +0200 Subject: [PATCH 194/219] fix(controller): fix race condition in updating ephemeral metadata (#3975) Signed-off-by: Youssef Rabie --- rollout/ephemeralmetadata.go | 27 +++++++++++++++++---------- rollout/ephemeralmetadata_test.go | 4 ++-- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/rollout/ephemeralmetadata.go b/rollout/ephemeralmetadata.go index 4f502a78ab..29328e1c5f 100644 --- a/rollout/ephemeralmetadata.go +++ b/rollout/ephemeralmetadata.go @@ -63,12 +63,27 @@ func (c *rolloutContext) syncEphemeralMetadata(ctx context.Context, rs *appsv1.R if !modified { return nil } - // 1. Sync ephemeral metadata to pods + + // Used to access old ephemeral data when updating pods below + originalRSCopy := rs.DeepCopy() + + // Order of the following two steps is important for race condition + // First update replicasets, then pods owned by it. + // So that any replicas created in the interim between the two steps are using the new updated version. + // 1. Update ReplicaSet so that any new pods it creates will have the metadata + rs, err := c.updateReplicaSetFallbackToPatch(ctx, modifiedRS) + if err != nil { + c.log.Infof("failed to sync ephemeral metadata %v to ReplicaSet %s: %v", podMetadata, rs.Name, err) + return fmt.Errorf("failed to sync ephemeral metadata: %w", err) + } + c.log.Infof("synced ephemeral metadata %v to ReplicaSet %s", podMetadata, rs.Name) + + // 2. Sync ephemeral metadata to pods pods, err := replicasetutil.GetPodsOwnedByReplicaSet(ctx, c.kubeclientset, rs) if err != nil { return err } - existingPodMetadata := replicasetutil.ParseExistingPodMetadata(rs) + existingPodMetadata := replicasetutil.ParseExistingPodMetadata(originalRSCopy) for _, pod := range pods { newPodObjectMeta, podModified := replicasetutil.SyncEphemeralPodMetadata(&pod.ObjectMeta, existingPodMetadata, podMetadata) if podModified { @@ -81,13 +96,5 @@ func (c *rolloutContext) syncEphemeralMetadata(ctx context.Context, rs *appsv1.R } } - // 2. Update ReplicaSet so that any new pods it creates will have the metadata - rs, err = c.updateReplicaSetFallbackToPatch(ctx, modifiedRS) - if err != nil { - c.log.Infof("failed to sync ephemeral metadata %v to ReplicaSet %s: %v", podMetadata, rs.Name, err) - return fmt.Errorf("failed to sync ephemeral metadata: %w", err) - } - - c.log.Infof("synced ephemeral metadata %v to ReplicaSet %s", podMetadata, rs.Name) return nil } diff --git a/rollout/ephemeralmetadata_test.go b/rollout/ephemeralmetadata_test.go index 8241a1831c..7c1af82da2 100644 --- a/rollout/ephemeralmetadata_test.go +++ b/rollout/ephemeralmetadata_test.go @@ -133,9 +133,9 @@ func TestSyncCanaryEphemeralMetadataSecondRevision(t *testing.T) { f.expectUpdateRolloutStatusAction(r2) // Update Rollout conditions rs2idx := f.expectCreateReplicaSetAction(rs2) // Create revision 2 ReplicaSet + rs1idx := f.expectUpdateReplicaSetAction(rs1) // update stable replicaset with stable metadata f.expectListPodAction(r1.Namespace) // list pods to patch ephemeral data on revision 1 ReplicaSets pods podIdx := f.expectUpdatePodAction(&pod) // Update pod with ephemeral data - rs1idx := f.expectUpdateReplicaSetAction(rs1) // update stable replicaset with stable metadata f.expectUpdateReplicaSetAction(rs1) // scale revision 1 ReplicaSet down f.expectPatchRolloutAction(r2) // Patch Rollout status @@ -213,9 +213,9 @@ func TestSyncBlueGreenEphemeralMetadataSecondRevision(t *testing.T) { rs2idx := f.expectCreateReplicaSetAction(rs2) // Create revision 2 ReplicaSet f.expectPatchServiceAction(previewSvc, rs2PodHash) // Update preview service to point at revision 2 replicaset f.expectUpdateReplicaSetAction(rs2) // scale revision 2 ReplicaSet up + rs1idx := f.expectUpdateReplicaSetAction(rs1) // update stable replicaset with stable metadata f.expectListPodAction(r1.Namespace) // list pods to patch ephemeral data on revision 1 ReplicaSets pods` podIdx := f.expectUpdatePodAction(&pod) // Update pod with ephemeral data - rs1idx := f.expectUpdateReplicaSetAction(rs1) // update stable replicaset with stable metadata f.expectPatchRolloutAction(r2) // Patch Rollout status f.run(getKey(r2, t)) From ffbaaad4eab066bffed98ac1dd53b69fe13eb4ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 15:23:06 +0000 Subject: [PATCH 195/219] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.42.4 to 1.43.3 (#3980) chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.42.4 to 1.43.3. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/emr/v1.42.4...service/ssm/v1.43.3) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f84ed5838f..5ceff266fb 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go-v2 v1.32.6 github.com/aws/aws-sdk-go-v2/config v1.28.6 - github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.4 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.3 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 github.com/aws/smithy-go v1.22.1 github.com/blang/semver v3.5.1+incompatible diff --git a/go.sum b/go.sum index 2731cb0793..53ad037835 100644 --- a/go.sum +++ b/go.sum @@ -110,8 +110,8 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 h1:ZntTCl5EsYnhN/IygQ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25/go.mod h1:DBdPrgeocww+CSl1C8cEV8PN1mHMBhuCDLpXezyvWkE= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.4 h1:c60zN18a3zQsBWdwE/v5xhK2Mtl1HG1gj9BLIEFxjWc= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.42.4/go.mod h1:fkETEwhdw2tOqu5m0Xa3wimV3PLDaiGqNrVZ3MJ7zOc= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.3 h1:nQLG9irjDGUFXVPDHzjCGEEwh0hZ6BcxTvHOod1YsP4= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.3/go.mod h1:URs8sqsyaxiAZkKP6tOEmhcs9j2ynFIomqOKY/CAHJc= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3 h1:Avh8YS+sgb2OKRht0wdNwY8tqtsCzVrmc8dG8Wfy9LI= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3/go.mod h1:HbtHaw/hnNPaiqcyYnheILVyn81wOZiX9n2gYF5tPmM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y= From 1c6a7ff95a0c67c5ba431a8158e9f308d3deda47 Mon Sep 17 00:00:00 2001 From: Youssef Rabie Date: Fri, 6 Dec 2024 00:14:58 +0200 Subject: [PATCH 196/219] feat(analysis): Add ConsecutiveSuccessLimit feature to Analysis (#3970) Signed-off-by: Youssef Rabie --- analysis/analysis.go | 43 +- analysis/analysis_test.go | 202 +++ .../features/kustomize/rollout_cr_schema.json | 33 + manifests/crds/analysis-run-crd.yaml | 8 + manifests/crds/analysis-template-crd.yaml | 5 + .../crds/cluster-analysis-template-crd.yaml | 5 + manifests/install.yaml | 18 + pkg/apiclient/rollout/rollout.swagger.json | 11 +- pkg/apis/rollouts/v1alpha1/analysis_types.go | 7 + pkg/apis/rollouts/v1alpha1/generated.pb.go | 1204 +++++++++-------- pkg/apis/rollouts/v1alpha1/generated.proto | 9 + .../rollouts/v1alpha1/openapi_generated.go | 15 +- .../v1alpha1/zz_generated.deepcopy.go | 5 + .../components/analysis-modal/constants.ts | 1 + .../criteria-list/criteria-list.tsx | 11 + .../analysis-modal/panels/metric-panel.tsx | 6 +- ui/src/models/rollout/generated/api.ts | 12 + utils/analysis/factory.go | 47 +- utils/analysis/factory_test.go | 44 +- 19 files changed, 1103 insertions(+), 583 deletions(-) diff --git a/analysis/analysis.go b/analysis/analysis.go index b603d9f1ae..567998149c 100644 --- a/analysis/analysis.go +++ b/analysis/analysis.go @@ -387,17 +387,21 @@ func (c *Controller) runMeasurements(run *v1alpha1.AnalysisRun, tasks []metricTa metricResult.Successful++ metricResult.Count++ metricResult.ConsecutiveError = 0 + metricResult.ConsecutiveSuccess++ case v1alpha1.AnalysisPhaseFailed: metricResult.Failed++ metricResult.Count++ metricResult.ConsecutiveError = 0 + metricResult.ConsecutiveSuccess = 0 case v1alpha1.AnalysisPhaseInconclusive: metricResult.Inconclusive++ metricResult.Count++ metricResult.ConsecutiveError = 0 + metricResult.ConsecutiveSuccess = 0 case v1alpha1.AnalysisPhaseError: metricResult.Error++ metricResult.ConsecutiveError++ + metricResult.ConsecutiveSuccess = 0 logger.Warnf("Measurement had error: %s", newMeasurement.Message) } } @@ -599,11 +603,47 @@ func assessMetricStatus(metric v1alpha1.Metric, result v1alpha1.MetricResult, te return phaseFailureInconclusiveOrError } + // Check if consecutiveSuccessLimit is applicable and was reached. + if metric.ConsecutiveSuccessLimit != nil && metric.ConsecutiveSuccessLimit.IntValue() > 0 && result.ConsecutiveSuccess >= int32(metric.ConsecutiveSuccessLimit.IntValue()) { + logger.Infof("Metric Assessment Result - %s: ConsecutiveSuccessLimit (%s) Reached", v1alpha1.AnalysisPhaseSuccessful, metric.ConsecutiveSuccessLimit.String()) + return v1alpha1.AnalysisPhaseSuccessful + } + // If a count was specified, and we reached that count, then metric is considered Successful. // The Error, Failed, Inconclusive counters are ignored because those checks have already been // taken into consideration above, and we do not want to fail if failures < failureLimit. effectiveCount := metric.EffectiveCount() if effectiveCount != nil && result.Count >= int32(effectiveCount.IntValue()) { + + failureApplicable := (metric.FailureLimit != nil && metric.FailureLimit.IntValue() >= 0) || metric.FailureLimit == nil + successApplicable := metric.ConsecutiveSuccessLimit != nil && metric.ConsecutiveSuccessLimit.IntValue() > 0 + + if failureApplicable && successApplicable { + + // failureLimit was checked above and not reached. + // consecutiveSuccessLimit was checked above and not reached. + + failureLimit := "0" + if metric.FailureLimit != nil { + failureLimit = metric.FailureLimit.String() + } + + logger.Infof("Metric Assessment Result - %s: ConsecutiveSuccessLimit (%s) Not Reached and FailureLimit (%s) Not Violated", v1alpha1.AnalysisPhaseInconclusive, metric.ConsecutiveSuccessLimit.String(), failureLimit) + return v1alpha1.AnalysisPhaseInconclusive + + } else if successApplicable { + + logger.Infof("Metric Assessment Result - %s: ConsecutiveSuccessLimit (%s) Not Reached", v1alpha1.AnalysisPhaseFailed, metric.ConsecutiveSuccessLimit.String()) + return v1alpha1.AnalysisPhaseFailed + + } else if failureApplicable { + // failureLimit was not reached in assessMetricFailureInconclusiveOrError above. + // AnalysisPhaseSuccessful below. + } else { + // This cannot happen, since one of failureLimit or consecutiveSuccessLimit will be applicable + // We validate that failureLimit >= 0 when consecutiveSuccessLimit == 0 + } + logger.Infof("Metric Assessment Result - %s: Count (%s) Reached", v1alpha1.AnalysisPhaseSuccessful, effectiveCount.String()) return v1alpha1.AnalysisPhaseSuccessful } @@ -623,7 +663,8 @@ func assessMetricFailureInconclusiveOrError(metric v1alpha1.Metric, result v1alp if metric.FailureLimit != nil { failureLimit = int32(metric.FailureLimit.IntValue()) } - if result.Failed > failureLimit { + // If failureLimit is negative, that means it isn't applicable. + if failureLimit >= 0 && result.Failed > failureLimit { phase = v1alpha1.AnalysisPhaseFailed message = fmt.Sprintf("failed (%d) > failureLimit (%d)", result.Failed, failureLimit) } diff --git a/analysis/analysis_test.go b/analysis/analysis_test.go index 5b15af7782..07bacd5dd8 100644 --- a/analysis/analysis_test.go +++ b/analysis/analysis_test.go @@ -594,6 +594,208 @@ func TestAssessMetricStatusFailureLimit(t *testing.T) { // max failures assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true)) } +func TestAssessMetricStatusConsecutiveSuccessLimit(t *testing.T) { + failureLimit := intstr.FromInt(-1) + consecutiveSuccessLimit := intstr.FromInt(3) + metric := v1alpha1.Metric{ + Name: "success-rate", + ConsecutiveSuccessLimit: &consecutiveSuccessLimit, + FailureLimit: &failureLimit, + Interval: "60s", + } + result := v1alpha1.MetricResult{ + Failed: 3, + Successful: 4, + ConsecutiveSuccess: 3, + Count: 7, + Measurements: []v1alpha1.Measurement{{ + Value: "99", + Phase: v1alpha1.AnalysisPhaseFailed, + StartedAt: timePtr(metav1.NewTime(time.Now().Add(-60 * time.Second))), + FinishedAt: timePtr(metav1.NewTime(time.Now().Add(-60 * time.Second))), + }}, + } + + ///////////////////////////////////////////////////////////////////////// + // For indefinite analysis (count is not set) + + // When ConsecutiveSuccess == ConsecutiveSuccessLimit + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true)) + + // When ConsecutiveSuccess < ConsecutiveSuccessLimit + consecutiveSuccessLimit = intstr.FromInt(5) + metric.ConsecutiveSuccessLimit = &consecutiveSuccessLimit + assert.Equal(t, v1alpha1.AnalysisPhaseRunning, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true)) + + ///////////////////////////////////////////////////////////////////////// + // For limited analysis (count is >= 1) + + /// When metric.Count is reached + metricCount := intstr.FromInt(7) + metric.Count = &metricCount + + //// ConsecutiveSuccess=3 < ConsecutiveSuccessLimit=5 + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true)) + + //// ConsecutiveSuccess = ConsecutiveSuccessLimit = 3 + consecutiveSuccessLimit = intstr.FromInt(3) + metric.ConsecutiveSuccessLimit = &consecutiveSuccessLimit + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true)) + + /// When metric.Count is not reached + metricCount = intstr.FromInt(9) + metric.Count = &metricCount + + //// ConsecutiveSuccess = ConsecutiveSuccessLimit = 3 + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true)) + + //// ConsecutiveSuccess=3 < ConsecutiveSuccessLimit=5 + consecutiveSuccessLimit = intstr.FromInt(5) + metric.ConsecutiveSuccessLimit = &consecutiveSuccessLimit + assert.Equal(t, v1alpha1.AnalysisPhaseRunning, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true)) +} + +func TestAssessMetricStatusFailureLimitAndConsecutiveSuccessLimit(t *testing.T) { + failureLimit := intstr.FromInt(4) + consecutiveSuccessLimit := intstr.FromInt(4) + metric := v1alpha1.Metric{ + Name: "success-rate", + ConsecutiveSuccessLimit: &consecutiveSuccessLimit, + FailureLimit: &failureLimit, + Interval: "60s", + } + result := v1alpha1.MetricResult{ + Failed: 3, + Successful: 4, + ConsecutiveSuccess: 3, + Count: 7, + Measurements: []v1alpha1.Measurement{{ + Value: "99", + Phase: v1alpha1.AnalysisPhaseFailed, + StartedAt: timePtr(metav1.NewTime(time.Now().Add(-60 * time.Second))), + FinishedAt: timePtr(metav1.NewTime(time.Now().Add(-60 * time.Second))), + }}, + } + + ///////////////////////////////////////////////////////////////////////// + // For indefinite analysis (count is not set) + + // FailureLimit is not violated and consecutiveSuccessLimit not yet satisfied. + assert.Equal(t, v1alpha1.AnalysisPhaseRunning, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true)) + + // FailureLimit is violated and consecutiveSuccessLimit is not yet satisfied. + result.Failed = 5 + result.Successful = 9 + result.Count = 9 + result.ConsecutiveSuccess = 0 + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true)) + + // FailureLimit is not violated and consecutiveSuccessLimit is satisfied. + result.Failed = 3 + result.Successful = 5 + result.Count = 8 + result.ConsecutiveSuccess = 4 + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true)) + + // FailureLimit is violated and consecutiveSuccessLimit is satisfied. + result.Failed = 5 + result.Successful = 5 + result.Count = 10 + result.ConsecutiveSuccess = 4 + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true)) + + ///////////////////////////////////////////////////////////////////////// + // For limited analysis (count is >= 1) + metricCount := intstr.FromInt(10) + metric.Count = &metricCount + + /// When metric.Count is reached + + //// FailureLimit is not violated and consecutiveSuccessLimit not yet satisfied. + result.Failed = 4 + result.Successful = 6 + result.Count = 10 + result.ConsecutiveSuccess = 3 + + assert.Equal(t, v1alpha1.AnalysisPhaseInconclusive, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseInconclusive, assessMetricStatus(metric, result, true)) + + //// FailureLimit is violated and consecutiveSuccessLimit is not yet satisfied. + result.Failed = 5 + result.Successful = 5 + result.Count = 10 + result.ConsecutiveSuccess = 3 + + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true)) + + //// FailureLimit is not violated and consecutiveSuccessLimit is satisfied. + result.Failed = 4 + result.Successful = 6 + result.Count = 10 + result.ConsecutiveSuccess = 4 + + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true)) + + //// FailureLimit is violated and consecutiveSuccessLimit is satisfied. + result.Failed = 5 + result.Successful = 5 + result.Count = 10 + result.ConsecutiveSuccess = 4 + + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true)) + + /// When metric.Count is not yet reached + + //// FailureLimit is not violated and consecutiveSuccessLimit not yet satisfied. + result.Failed = 3 + result.Successful = 5 + result.Count = 8 + result.ConsecutiveSuccess = 3 + + assert.Equal(t, v1alpha1.AnalysisPhaseRunning, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true)) + + //// FailureLimit is violated and consecutiveSuccessLimit is not yet satisfied. + result.Failed = 5 + result.Successful = 3 + result.Count = 8 + result.ConsecutiveSuccess = 3 + + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true)) + + //// FailureLimit is not violated and consecutiveSuccessLimit is satisfied. + result.Failed = 3 + result.Successful = 5 + result.Count = 8 + result.ConsecutiveSuccess = 4 + + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true)) + + //// FailureLimit is violated and consecutiveSuccessLimit is satisfied. + result.Failed = 5 + result.Successful = 4 + result.Count = 9 + result.ConsecutiveSuccess = 4 + + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false)) + assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true)) +} + func TestAssessMetricStatusInconclusiveLimit(t *testing.T) { inconclusiveLimit := intstr.FromInt(2) metric := v1alpha1.Metric{ diff --git a/docs/features/kustomize/rollout_cr_schema.json b/docs/features/kustomize/rollout_cr_schema.json index 6798ef3c1a..edff0c7931 100644 --- a/docs/features/kustomize/rollout_cr_schema.json +++ b/docs/features/kustomize/rollout_cr_schema.json @@ -105,6 +105,17 @@ ], "x-kubernetes-int-or-string": true }, + "consecutiveSuccessLimit": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, "count": { "anyOf": [ { @@ -4971,6 +4982,17 @@ ], "x-kubernetes-int-or-string": true }, + "consecutiveSuccessLimit": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, "count": { "anyOf": [ { @@ -9850,6 +9872,17 @@ ], "x-kubernetes-int-or-string": true }, + "consecutiveSuccessLimit": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, "count": { "anyOf": [ { diff --git a/manifests/crds/analysis-run-crd.yaml b/manifests/crds/analysis-run-crd.yaml index 6050b5df72..e6256b151d 100644 --- a/manifests/crds/analysis-run-crd.yaml +++ b/manifests/crds/analysis-run-crd.yaml @@ -98,6 +98,11 @@ spec: - type: integer - type: string x-kubernetes-int-or-string: true + consecutiveSuccessLimit: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true count: anyOf: - type: integer @@ -3219,6 +3224,9 @@ spec: consecutiveError: format: int32 type: integer + consecutiveSuccess: + format: int32 + type: integer count: format: int32 type: integer diff --git a/manifests/crds/analysis-template-crd.yaml b/manifests/crds/analysis-template-crd.yaml index f040d2a219..0b9f22d2cb 100644 --- a/manifests/crds/analysis-template-crd.yaml +++ b/manifests/crds/analysis-template-crd.yaml @@ -94,6 +94,11 @@ spec: - type: integer - type: string x-kubernetes-int-or-string: true + consecutiveSuccessLimit: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true count: anyOf: - type: integer diff --git a/manifests/crds/cluster-analysis-template-crd.yaml b/manifests/crds/cluster-analysis-template-crd.yaml index 2de306119e..f966d4f8b0 100644 --- a/manifests/crds/cluster-analysis-template-crd.yaml +++ b/manifests/crds/cluster-analysis-template-crd.yaml @@ -94,6 +94,11 @@ spec: - type: integer - type: string x-kubernetes-int-or-string: true + consecutiveSuccessLimit: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true count: anyOf: - type: integer diff --git a/manifests/install.yaml b/manifests/install.yaml index df6cc0614f..acaf436f2d 100755 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -99,6 +99,11 @@ spec: - type: integer - type: string x-kubernetes-int-or-string: true + consecutiveSuccessLimit: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true count: anyOf: - type: integer @@ -3220,6 +3225,9 @@ spec: consecutiveError: format: int32 type: integer + consecutiveSuccess: + format: int32 + type: integer count: format: int32 type: integer @@ -3407,6 +3415,11 @@ spec: - type: integer - type: string x-kubernetes-int-or-string: true + consecutiveSuccessLimit: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true count: anyOf: - type: integer @@ -6593,6 +6606,11 @@ spec: - type: integer - type: string x-kubernetes-int-or-string: true + consecutiveSuccessLimit: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true count: anyOf: - type: integer diff --git a/pkg/apiclient/rollout/rollout.swagger.json b/pkg/apiclient/rollout/rollout.swagger.json index 2e6cd847b0..ce2d2fe036 100755 --- a/pkg/apiclient/rollout/rollout.swagger.json +++ b/pkg/apiclient/rollout/rollout.swagger.json @@ -1514,7 +1514,7 @@ }, "failureLimit": { "$ref": "#/definitions/k8s.io.apimachinery.pkg.util.intstr.IntOrString", - "title": "FailureLimit is the maximum number of times the measurement is allowed to fail, before the\nentire metric is considered Failed (default: 0)" + "title": "FailureLimit is the maximum number of times the measurement is allowed to fail, before the\nentire metric is considered Failed (default: 0)\n-1 for making it disabled (when opting to use ConsecutiveSuccessLimit solely)" }, "inconclusiveLimit": { "$ref": "#/definitions/k8s.io.apimachinery.pkg.util.intstr.IntOrString", @@ -1527,6 +1527,10 @@ "provider": { "$ref": "#/definitions/github.com.argoproj.argo_rollouts.pkg.apis.rollouts.v1alpha1.MetricProvider", "title": "Provider configuration to the external system to use to verify the analysis" + }, + "consecutiveSuccessLimit": { + "$ref": "#/definitions/k8s.io.apimachinery.pkg.util.intstr.IntOrString", + "title": "ConsecutiveSuccessLimit is the number of consecutive times the measurement must succeed for the\nentire metric to be considered Successful (default: 0, which means it's disabled)" } }, "title": "Metric defines a metric in which to perform analysis" @@ -1651,6 +1655,11 @@ "type": "string" }, "description": "Metadata stores additional metadata about this metric. It is used by different providers to store\nthe final state which gets used while taking measurements. For example, Prometheus uses this field\nto store the final resolved query after substituting the template arguments." + }, + "consecutiveSuccess": { + "type": "integer", + "format": "int32", + "title": "ConsecutiveSuccess is the number of times a measurement was successful in succession\nResets to zero when failures, inconclusive measurements, or errors are encountered" } }, "title": "MetricResult contain a list of the most recent measurements for a single metric along with\ncounters on how often the measurement" diff --git a/pkg/apis/rollouts/v1alpha1/analysis_types.go b/pkg/apis/rollouts/v1alpha1/analysis_types.go index bef20a9120..20c50f881f 100644 --- a/pkg/apis/rollouts/v1alpha1/analysis_types.go +++ b/pkg/apis/rollouts/v1alpha1/analysis_types.go @@ -112,6 +112,7 @@ type Metric struct { FailureCondition string `json:"failureCondition,omitempty" protobuf:"bytes,6,opt,name=failureCondition"` // FailureLimit is the maximum number of times the measurement is allowed to fail, before the // entire metric is considered Failed (default: 0) + // -1 for making it disabled (when opting to use ConsecutiveSuccessLimit solely) FailureLimit *intstrutil.IntOrString `json:"failureLimit,omitempty" protobuf:"bytes,7,opt,name=failureLimit"` // InconclusiveLimit is the maximum number of times the measurement is allowed to measure // Inconclusive, before the entire metric is considered Inconclusive (default: 0) @@ -121,6 +122,9 @@ type Metric struct { ConsecutiveErrorLimit *intstrutil.IntOrString `json:"consecutiveErrorLimit,omitempty" protobuf:"bytes,9,opt,name=consecutiveErrorLimit"` // Provider configuration to the external system to use to verify the analysis Provider MetricProvider `json:"provider" protobuf:"bytes,10,opt,name=provider"` + // ConsecutiveSuccessLimit is the number of consecutive times the measurement must succeed for the + // entire metric to be considered Successful (default: 0, which means it's disabled) + ConsecutiveSuccessLimit *intstrutil.IntOrString `json:"consecutiveSuccessLimit,omitempty" protobuf:"bytes,11,opt,name=consecutiveSuccessLimit"` } // DryRun defines the settings for running the analysis in Dry-Run mode. @@ -505,6 +509,9 @@ type MetricResult struct { // the final state which gets used while taking measurements. For example, Prometheus uses this field // to store the final resolved query after substituting the template arguments. Metadata map[string]string `json:"metadata,omitempty" protobuf:"bytes,12,rep,name=metadata"` + // ConsecutiveSuccess is the number of times a measurement was successful in succession + // Resets to zero when failures, inconclusive measurements, or errors are encountered + ConsecutiveSuccess int32 `json:"consecutiveSuccess,omitempty" protobuf:"varint,13,opt,name=consecutiveSuccess"` } // Measurement is a point in time result value of a single metric, and the time it was measured diff --git a/pkg/apis/rollouts/v1alpha1/generated.pb.go b/pkg/apis/rollouts/v1alpha1/generated.pb.go index 74fbc1259e..7caa8b0aaa 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.pb.go +++ b/pkg/apis/rollouts/v1alpha1/generated.pb.go @@ -3466,568 +3466,571 @@ func init() { } var fileDescriptor_e0e705f843545fab = []byte{ - // 8969 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x64, 0xd7, - 0x75, 0x98, 0x1e, 0x87, 0x43, 0xce, 0x9c, 0xe1, 0x92, 0xdc, 0xbb, 0xbb, 0x12, 0x45, 0x69, 0x97, - 0xeb, 0xa7, 0x54, 0x5d, 0xc5, 0x32, 0x69, 0xaf, 0xa4, 0x54, 0xb6, 0x5c, 0xb5, 0x33, 0xe4, 0xae, - 0x96, 0x2b, 0x72, 0x97, 0x3a, 0xc3, 0xd5, 0xc6, 0x1f, 0x4a, 0xfc, 0x38, 0x73, 0x39, 0x7c, 0xcb, - 0x99, 0xf7, 0xc6, 0xef, 0xbd, 0xe1, 0x2e, 0x65, 0x21, 0x96, 0x6d, 0x28, 0x76, 0x5c, 0x1b, 0x71, - 0x93, 0x18, 0x45, 0x3f, 0x50, 0xb8, 0x41, 0x8a, 0xb4, 0x4d, 0x7f, 0x14, 0x81, 0x8b, 0xf6, 0x47, - 0x80, 0x16, 0x75, 0x53, 0x38, 0x40, 0x5d, 0x38, 0x3f, 0x5a, 0xa7, 0x05, 0xc2, 0xd4, 0x4c, 0xff, - 0x34, 0x68, 0x61, 0xa4, 0x70, 0x11, 0x54, 0x3f, 0x8a, 0xe2, 0x7e, 0xbe, 0xfb, 0xde, 0xbc, 0xe1, - 0xd7, 0x3c, 0xae, 0x94, 0xc6, 0xff, 0x66, 0xee, 0x39, 0xf7, 0x9c, 0xf3, 0xee, 0xe7, 0xb9, 0xe7, - 0x9e, 0x73, 0x2e, 0xac, 0xb4, 0xdc, 0x68, 0xab, 0xb7, 0x31, 0xdf, 0xf0, 0x3b, 0x0b, 0x4e, 0xd0, - 0xf2, 0xbb, 0x81, 0x7f, 0x8f, 0xff, 0xf8, 0x50, 0xe0, 0xb7, 0xdb, 0x7e, 0x2f, 0x0a, 0x17, 0xba, - 0xdb, 0xad, 0x05, 0xa7, 0xeb, 0x86, 0x0b, 0xba, 0x64, 0xe7, 0x23, 0x4e, 0xbb, 0xbb, 0xe5, 0x7c, - 0x64, 0xa1, 0x45, 0x3d, 0x1a, 0x38, 0x11, 0x6d, 0xce, 0x77, 0x03, 0x3f, 0xf2, 0xc9, 0xc7, 0x63, - 0x6a, 0xf3, 0x8a, 0x1a, 0xff, 0xf1, 0xf3, 0xaa, 0xee, 0x7c, 0x77, 0xbb, 0x35, 0xcf, 0xa8, 0xcd, - 0xeb, 0x12, 0x45, 0x6d, 0xf6, 0x43, 0x86, 0x2c, 0x2d, 0xbf, 0xe5, 0x2f, 0x70, 0xa2, 0x1b, 0xbd, - 0x4d, 0xfe, 0x8f, 0xff, 0xe1, 0xbf, 0x04, 0xb3, 0xd9, 0xa7, 0xb6, 0x5f, 0x0c, 0xe7, 0x5d, 0x9f, - 0xc9, 0xb6, 0xb0, 0xe1, 0x44, 0x8d, 0xad, 0x85, 0x9d, 0x3e, 0x89, 0x66, 0x6d, 0x03, 0xa9, 0xe1, - 0x07, 0x34, 0x0b, 0xe7, 0xf9, 0x18, 0xa7, 0xe3, 0x34, 0xb6, 0x5c, 0x8f, 0x06, 0xbb, 0xf1, 0x57, - 0x77, 0x68, 0xe4, 0x64, 0xd5, 0x5a, 0x18, 0x54, 0x2b, 0xe8, 0x79, 0x91, 0xdb, 0xa1, 0x7d, 0x15, - 0x7e, 0xe6, 0xb0, 0x0a, 0x61, 0x63, 0x8b, 0x76, 0x9c, 0xbe, 0x7a, 0xcf, 0x0d, 0xaa, 0xd7, 0x8b, - 0xdc, 0xf6, 0x82, 0xeb, 0x45, 0x61, 0x14, 0xa4, 0x2b, 0xd9, 0x3f, 0x2a, 0x40, 0xb9, 0xba, 0x52, - 0xab, 0x47, 0x4e, 0xd4, 0x0b, 0xc9, 0x2f, 0x5a, 0x30, 0xd1, 0xf6, 0x9d, 0x66, 0xcd, 0x69, 0x3b, - 0x5e, 0x83, 0x06, 0x33, 0xd6, 0x65, 0xeb, 0x4a, 0xe5, 0xea, 0xca, 0xfc, 0x30, 0xfd, 0x35, 0x5f, - 0xbd, 0x1f, 0x22, 0x0d, 0xfd, 0x5e, 0xd0, 0xa0, 0x48, 0x37, 0x6b, 0xe7, 0xbf, 0xbb, 0x37, 0xf7, - 0xc8, 0xfe, 0xde, 0xdc, 0xc4, 0x8a, 0xc1, 0x09, 0x13, 0x7c, 0xc9, 0x37, 0x2d, 0x38, 0xdb, 0x70, - 0x3c, 0x27, 0xd8, 0x5d, 0x77, 0x82, 0x16, 0x8d, 0x5e, 0x09, 0xfc, 0x5e, 0x77, 0x66, 0xe4, 0x14, - 0xa4, 0x79, 0x5c, 0x4a, 0x73, 0x76, 0x31, 0xcd, 0x0e, 0xfb, 0x25, 0xe0, 0x72, 0x85, 0x91, 0xb3, - 0xd1, 0xa6, 0xa6, 0x5c, 0x85, 0xd3, 0x94, 0xab, 0x9e, 0x66, 0x87, 0xfd, 0x12, 0x90, 0x67, 0x60, - 0xdc, 0xf5, 0x5a, 0x01, 0x0d, 0xc3, 0x99, 0xd1, 0xcb, 0xd6, 0x95, 0x72, 0x6d, 0x4a, 0x56, 0x1f, - 0x5f, 0x16, 0xc5, 0xa8, 0xe0, 0xf6, 0x6f, 0x17, 0xe0, 0x6c, 0x75, 0xa5, 0xb6, 0x1e, 0x38, 0x9b, - 0x9b, 0x6e, 0x03, 0xfd, 0x5e, 0xe4, 0x7a, 0x2d, 0x93, 0x80, 0x75, 0x30, 0x01, 0xf2, 0x02, 0x54, - 0x42, 0x1a, 0xec, 0xb8, 0x0d, 0xba, 0xe6, 0x07, 0x11, 0xef, 0x94, 0x62, 0xed, 0x9c, 0x44, 0xaf, - 0xd4, 0x63, 0x10, 0x9a, 0x78, 0xac, 0x5a, 0xe0, 0xfb, 0x91, 0x84, 0xf3, 0x36, 0x2b, 0xc7, 0xd5, - 0x30, 0x06, 0xa1, 0x89, 0x47, 0x96, 0x60, 0xda, 0xf1, 0x3c, 0x3f, 0x72, 0x22, 0xd7, 0xf7, 0xd6, - 0x02, 0xba, 0xe9, 0x3e, 0x90, 0x9f, 0x38, 0x23, 0xeb, 0x4e, 0x57, 0x53, 0x70, 0xec, 0xab, 0x41, - 0xbe, 0x61, 0xc1, 0x74, 0x18, 0xb9, 0x8d, 0x6d, 0xd7, 0xa3, 0x61, 0xb8, 0xe8, 0x7b, 0x9b, 0x6e, - 0x6b, 0xa6, 0xc8, 0xbb, 0xed, 0xd6, 0x70, 0xdd, 0x56, 0x4f, 0x51, 0xad, 0x9d, 0x67, 0x22, 0xa5, - 0x4b, 0xb1, 0x8f, 0x3b, 0xf9, 0x20, 0x94, 0x65, 0x8b, 0xd2, 0x70, 0x66, 0xec, 0x72, 0xe1, 0x4a, - 0xb9, 0x76, 0x66, 0x7f, 0x6f, 0xae, 0xbc, 0xac, 0x0a, 0x31, 0x86, 0xdb, 0x4b, 0x30, 0x53, 0xed, - 0x6c, 0x38, 0x61, 0xe8, 0x34, 0xfd, 0x20, 0xd5, 0x75, 0x57, 0xa0, 0xd4, 0x71, 0xba, 0x5d, 0xd7, - 0x6b, 0xb1, 0xbe, 0x63, 0x74, 0x26, 0xf6, 0xf7, 0xe6, 0x4a, 0xab, 0xb2, 0x0c, 0x35, 0xd4, 0xfe, - 0xcf, 0x23, 0x50, 0xa9, 0x7a, 0x4e, 0x7b, 0x37, 0x74, 0x43, 0xec, 0x79, 0xe4, 0x33, 0x50, 0x62, - 0xab, 0x56, 0xd3, 0x89, 0x1c, 0x39, 0xd3, 0x3f, 0x3c, 0x2f, 0x16, 0x91, 0x79, 0x73, 0x11, 0x89, - 0x3f, 0x9f, 0x61, 0xcf, 0xef, 0x7c, 0x64, 0xfe, 0xf6, 0xc6, 0x3d, 0xda, 0x88, 0x56, 0x69, 0xe4, - 0xd4, 0x88, 0xec, 0x05, 0x88, 0xcb, 0x50, 0x53, 0x25, 0x3e, 0x8c, 0x86, 0x5d, 0xda, 0x90, 0x33, - 0x77, 0x75, 0xc8, 0x19, 0x12, 0x8b, 0x5e, 0xef, 0xd2, 0x46, 0x6d, 0x42, 0xb2, 0x1e, 0x65, 0xff, - 0x90, 0x33, 0x22, 0xf7, 0x61, 0x2c, 0xe4, 0x6b, 0x99, 0x9c, 0x94, 0xb7, 0xf3, 0x63, 0xc9, 0xc9, - 0xd6, 0x26, 0x25, 0xd3, 0x31, 0xf1, 0x1f, 0x25, 0x3b, 0xfb, 0xbf, 0x58, 0x70, 0xce, 0xc0, 0xae, - 0x06, 0xad, 0x5e, 0x87, 0x7a, 0x11, 0xb9, 0x0c, 0xa3, 0x9e, 0xd3, 0xa1, 0x72, 0x56, 0x69, 0x91, - 0x6f, 0x39, 0x1d, 0x8a, 0x1c, 0x42, 0x9e, 0x82, 0xe2, 0x8e, 0xd3, 0xee, 0x51, 0xde, 0x48, 0xe5, - 0xda, 0x19, 0x89, 0x52, 0x7c, 0x9d, 0x15, 0xa2, 0x80, 0x91, 0xb7, 0xa0, 0xcc, 0x7f, 0x5c, 0x0f, - 0xfc, 0x4e, 0x4e, 0x9f, 0x26, 0x25, 0x7c, 0x5d, 0x91, 0x15, 0xc3, 0x4f, 0xff, 0xc5, 0x98, 0xa1, - 0xfd, 0x47, 0x16, 0x4c, 0x19, 0x1f, 0xb7, 0xe2, 0x86, 0x11, 0xf9, 0x74, 0xdf, 0xe0, 0x99, 0x3f, - 0xda, 0xe0, 0x61, 0xb5, 0xf9, 0xd0, 0x99, 0x96, 0x5f, 0x5a, 0x52, 0x25, 0xc6, 0xc0, 0xf1, 0xa0, - 0xe8, 0x46, 0xb4, 0x13, 0xce, 0x8c, 0x5c, 0x2e, 0x5c, 0xa9, 0x5c, 0x5d, 0xce, 0xad, 0x1b, 0xe3, - 0xf6, 0x5d, 0x66, 0xf4, 0x51, 0xb0, 0xb1, 0xbf, 0x5d, 0x48, 0x74, 0xdf, 0xaa, 0x92, 0xe3, 0x1d, - 0x0b, 0xc6, 0xda, 0xce, 0x06, 0x6d, 0x8b, 0xb9, 0x55, 0xb9, 0xfa, 0x46, 0x6e, 0x92, 0x28, 0x1e, - 0xf3, 0x2b, 0x9c, 0xfe, 0x35, 0x2f, 0x0a, 0x76, 0xe3, 0xe1, 0x25, 0x0a, 0x51, 0x32, 0x27, 0x7f, - 0xdb, 0x82, 0x4a, 0xbc, 0xaa, 0xa9, 0x66, 0xd9, 0xc8, 0x5f, 0x98, 0x78, 0x31, 0x95, 0x12, 0xe9, - 0x25, 0xda, 0x80, 0xa0, 0x29, 0xcb, 0xec, 0x47, 0xa1, 0x62, 0x7c, 0x02, 0x99, 0x86, 0xc2, 0x36, - 0xdd, 0x15, 0x03, 0x1e, 0xd9, 0x4f, 0x72, 0x3e, 0x31, 0xc2, 0xe5, 0x90, 0xfe, 0xd8, 0xc8, 0x8b, - 0xd6, 0xec, 0xcb, 0x30, 0x9d, 0x66, 0x78, 0x9c, 0xfa, 0xf6, 0x3f, 0x2b, 0x26, 0x06, 0x26, 0x5b, - 0x08, 0x88, 0x0f, 0xe3, 0x1d, 0x1a, 0x05, 0x6e, 0x43, 0x75, 0xd9, 0xd2, 0x70, 0xad, 0xb4, 0xca, - 0x89, 0xc5, 0x1b, 0xa2, 0xf8, 0x1f, 0xa2, 0xe2, 0x42, 0xb6, 0x60, 0xd4, 0x09, 0x5a, 0xaa, 0x4f, - 0xae, 0xe7, 0x33, 0x2d, 0xe3, 0xa5, 0xa2, 0x1a, 0xb4, 0x42, 0xe4, 0x1c, 0xc8, 0x02, 0x94, 0x23, - 0x1a, 0x74, 0x5c, 0xcf, 0x89, 0xc4, 0x0e, 0x5a, 0xaa, 0x9d, 0x95, 0x68, 0xe5, 0x75, 0x05, 0xc0, - 0x18, 0x87, 0xb4, 0x61, 0xac, 0x19, 0xec, 0x62, 0xcf, 0x9b, 0x19, 0xcd, 0xa3, 0x29, 0x96, 0x38, - 0xad, 0x78, 0x90, 0x8a, 0xff, 0x28, 0x79, 0x90, 0xdf, 0xb0, 0xe0, 0x7c, 0x87, 0x3a, 0x61, 0x2f, - 0xa0, 0xec, 0x13, 0x90, 0x46, 0xd4, 0x63, 0x1d, 0x3b, 0x53, 0xe4, 0xcc, 0x71, 0xd8, 0x7e, 0xe8, - 0xa7, 0x5c, 0x7b, 0x52, 0x8a, 0x72, 0x3e, 0x0b, 0x8a, 0x99, 0xd2, 0x90, 0xb7, 0xa0, 0x12, 0x45, - 0xed, 0x7a, 0xc4, 0xf4, 0xe0, 0xd6, 0xee, 0xcc, 0x18, 0x5f, 0xbc, 0x86, 0x5c, 0x61, 0xd6, 0xd7, - 0x57, 0x14, 0xc1, 0xda, 0x14, 0x9b, 0x2d, 0x46, 0x01, 0x9a, 0xec, 0xec, 0x7f, 0x59, 0x84, 0xb3, - 0x7d, 0xdb, 0x0a, 0x79, 0x1e, 0x8a, 0xdd, 0x2d, 0x27, 0x54, 0xfb, 0xc4, 0x25, 0xb5, 0x48, 0xad, - 0xb1, 0xc2, 0x77, 0xf7, 0xe6, 0xce, 0xa8, 0x2a, 0xbc, 0x00, 0x05, 0x32, 0xd3, 0xda, 0x3a, 0x34, - 0x0c, 0x9d, 0x96, 0xda, 0x3c, 0x8c, 0x41, 0xca, 0x8b, 0x51, 0xc1, 0xc9, 0x97, 0x2d, 0x38, 0x23, - 0x06, 0x2c, 0xd2, 0xb0, 0xd7, 0x8e, 0xd8, 0x06, 0xc9, 0x3a, 0xe5, 0x66, 0x1e, 0x93, 0x43, 0x90, - 0xac, 0x5d, 0x90, 0xdc, 0xcf, 0x98, 0xa5, 0x21, 0x26, 0xf9, 0x92, 0xbb, 0x50, 0x0e, 0x23, 0x27, - 0x88, 0x68, 0xb3, 0x1a, 0x71, 0x55, 0xae, 0x72, 0xf5, 0xa7, 0x8f, 0xb6, 0x73, 0xac, 0xbb, 0x1d, - 0x2a, 0x76, 0xa9, 0xba, 0x22, 0x80, 0x31, 0x2d, 0xf2, 0x16, 0x40, 0xd0, 0xf3, 0xea, 0xbd, 0x4e, - 0xc7, 0x09, 0x76, 0xa5, 0x76, 0x77, 0x63, 0xb8, 0xcf, 0x43, 0x4d, 0x2f, 0x56, 0x74, 0xe2, 0x32, - 0x34, 0xf8, 0x91, 0x2f, 0x58, 0x70, 0x46, 0xcc, 0x03, 0x25, 0xc1, 0x58, 0xce, 0x12, 0x9c, 0x65, - 0x4d, 0xbb, 0x64, 0xb2, 0xc0, 0x24, 0x47, 0xf2, 0x06, 0x54, 0x1a, 0x7e, 0xa7, 0xdb, 0xa6, 0xa2, - 0x71, 0xc7, 0x8f, 0xdd, 0xb8, 0x7c, 0xe8, 0x2e, 0xc6, 0x24, 0xd0, 0xa4, 0x67, 0xff, 0xc7, 0xa4, - 0x8e, 0xa3, 0x86, 0x34, 0xf9, 0x14, 0x3c, 0x1e, 0xf6, 0x1a, 0x0d, 0x1a, 0x86, 0x9b, 0xbd, 0x36, - 0xf6, 0xbc, 0x1b, 0x6e, 0x18, 0xf9, 0xc1, 0xee, 0x8a, 0xdb, 0x71, 0x23, 0x3e, 0xa0, 0x8b, 0xb5, - 0x8b, 0xfb, 0x7b, 0x73, 0x8f, 0xd7, 0x07, 0x21, 0xe1, 0xe0, 0xfa, 0xc4, 0x81, 0x27, 0x7a, 0xde, - 0x60, 0xf2, 0xe2, 0xf8, 0x31, 0xb7, 0xbf, 0x37, 0xf7, 0xc4, 0x9d, 0xc1, 0x68, 0x78, 0x10, 0x0d, - 0xfb, 0x4f, 0x2c, 0xb6, 0x0d, 0x89, 0xef, 0x5a, 0xa7, 0x9d, 0x6e, 0x9b, 0x2d, 0x9d, 0xa7, 0xaf, - 0x1c, 0x47, 0x09, 0xe5, 0x18, 0xf3, 0xd9, 0xcb, 0x95, 0xfc, 0x83, 0x34, 0x64, 0xfb, 0xbf, 0x5b, - 0x70, 0x3e, 0x8d, 0xfc, 0x10, 0x14, 0xba, 0x30, 0xa9, 0xd0, 0xdd, 0xca, 0xf7, 0x6b, 0x07, 0x68, - 0x75, 0xbf, 0x64, 0x0c, 0x58, 0x85, 0x8a, 0x74, 0x93, 0xbc, 0x08, 0x13, 0x91, 0xfc, 0x7b, 0x2b, - 0x56, 0xce, 0xb5, 0x61, 0x62, 0xdd, 0x80, 0x61, 0x02, 0x93, 0xd5, 0x6c, 0xb4, 0x7b, 0x61, 0x44, - 0x83, 0x7a, 0xc3, 0xef, 0x8a, 0x65, 0xb7, 0x14, 0xd7, 0x5c, 0x34, 0x60, 0x98, 0xc0, 0xb4, 0xff, - 0x46, 0xb1, 0xbf, 0xdd, 0xff, 0x7f, 0xd7, 0x57, 0x62, 0xf5, 0xa3, 0xf0, 0x5e, 0xaa, 0x1f, 0xa3, - 0xef, 0x2b, 0xf5, 0xe3, 0x8b, 0x16, 0xd3, 0xe2, 0xc4, 0x00, 0x08, 0xa5, 0x6a, 0xf4, 0x5a, 0xbe, - 0xd3, 0x01, 0xe9, 0xa6, 0xa9, 0x18, 0x4a, 0x5e, 0x18, 0xb3, 0xb5, 0xff, 0xd1, 0x28, 0x4c, 0x54, - 0xbd, 0xc8, 0xad, 0x6e, 0x6e, 0xba, 0x9e, 0x1b, 0xed, 0x92, 0xaf, 0x8d, 0xc0, 0x42, 0x37, 0xa0, - 0x9b, 0x34, 0x08, 0x68, 0x73, 0xa9, 0x17, 0xb8, 0x5e, 0xab, 0xde, 0xd8, 0xa2, 0xcd, 0x5e, 0xdb, - 0xf5, 0x5a, 0xcb, 0x2d, 0xcf, 0xd7, 0xc5, 0xd7, 0x1e, 0xd0, 0x46, 0x8f, 0xb7, 0xab, 0x58, 0x25, - 0x3a, 0xc3, 0xc9, 0xbe, 0x76, 0x3c, 0xa6, 0xb5, 0xe7, 0xf6, 0xf7, 0xe6, 0x16, 0x8e, 0x59, 0x09, - 0x8f, 0xfb, 0x69, 0xe4, 0x2b, 0x23, 0x30, 0x1f, 0xd0, 0xcf, 0xf6, 0xdc, 0xa3, 0xb7, 0x86, 0x58, - 0xc6, 0xdb, 0x43, 0x6e, 0xf7, 0xc7, 0xe2, 0x59, 0xbb, 0xba, 0xbf, 0x37, 0x77, 0xcc, 0x3a, 0x78, - 0xcc, 0xef, 0xb2, 0xd7, 0xa0, 0x52, 0xed, 0xba, 0xa1, 0xfb, 0x00, 0xfd, 0x5e, 0x44, 0x8f, 0x60, - 0xd0, 0x98, 0x83, 0x62, 0xd0, 0x6b, 0x53, 0xb1, 0xc0, 0x94, 0x6b, 0x65, 0xb6, 0x2c, 0x23, 0x2b, - 0x40, 0x51, 0x6e, 0x7f, 0x91, 0x6d, 0x41, 0x9c, 0x64, 0xca, 0x94, 0x75, 0x0f, 0x8a, 0x01, 0x63, - 0x22, 0x47, 0xd6, 0xb0, 0xa7, 0xfe, 0x58, 0x6a, 0x29, 0x04, 0xfb, 0x89, 0x82, 0x85, 0xfd, 0x9d, - 0x11, 0xb8, 0x50, 0xed, 0x76, 0x57, 0x69, 0xb8, 0x95, 0x92, 0xe2, 0x97, 0x2d, 0x98, 0xdc, 0x71, - 0x83, 0xa8, 0xe7, 0xb4, 0x95, 0xb5, 0x52, 0xc8, 0x53, 0x1f, 0x56, 0x1e, 0xce, 0xed, 0xf5, 0x04, - 0xe9, 0x1a, 0xd9, 0xdf, 0x9b, 0x9b, 0x4c, 0x96, 0x61, 0x8a, 0x3d, 0xf9, 0x5b, 0x16, 0x4c, 0xcb, - 0xa2, 0x5b, 0x7e, 0x93, 0x9a, 0xd6, 0xf0, 0x3b, 0x79, 0xca, 0xa4, 0x89, 0x0b, 0x2b, 0x66, 0xba, - 0x14, 0xfb, 0x84, 0xb0, 0xff, 0xe7, 0x08, 0x3c, 0x36, 0x80, 0x06, 0xf9, 0x4d, 0x0b, 0xce, 0x0b, - 0x13, 0xba, 0x01, 0x42, 0xba, 0x29, 0x5b, 0xf3, 0x13, 0x79, 0x4b, 0x8e, 0x6c, 0x8a, 0x53, 0xaf, - 0x41, 0x6b, 0x33, 0x6c, 0x49, 0x5e, 0xcc, 0x60, 0x8d, 0x99, 0x02, 0x71, 0x49, 0x85, 0x51, 0x3d, - 0x25, 0xe9, 0xc8, 0x43, 0x91, 0xb4, 0x9e, 0xc1, 0x1a, 0x33, 0x05, 0xb2, 0xff, 0x1a, 0x3c, 0x71, - 0x00, 0xb9, 0xc3, 0x27, 0xa7, 0xfd, 0x86, 0x1e, 0xf5, 0xc9, 0x31, 0x77, 0x84, 0x79, 0x6d, 0xc3, - 0x18, 0x9f, 0x3a, 0x6a, 0x62, 0x03, 0xdb, 0x83, 0xf9, 0x9c, 0x0a, 0x51, 0x42, 0xec, 0xef, 0x58, - 0x50, 0x3a, 0x86, 0xed, 0x73, 0x2e, 0x69, 0xfb, 0x2c, 0xf7, 0xd9, 0x3d, 0xa3, 0x7e, 0xbb, 0xe7, - 0x2b, 0xc3, 0xf5, 0xc6, 0x51, 0xec, 0x9d, 0x3f, 0xb2, 0xe0, 0x6c, 0x9f, 0x7d, 0x94, 0x6c, 0xc1, - 0xf9, 0xae, 0xdf, 0x54, 0xdb, 0xe9, 0x0d, 0x27, 0xdc, 0xe2, 0x30, 0xf9, 0x79, 0xcf, 0xb3, 0x9e, - 0x5c, 0xcb, 0x80, 0xbf, 0xbb, 0x37, 0x37, 0xa3, 0x89, 0xa4, 0x10, 0x30, 0x93, 0x22, 0xe9, 0x42, - 0x69, 0xd3, 0xa5, 0xed, 0x66, 0x3c, 0x04, 0x87, 0xd4, 0xd2, 0xae, 0x4b, 0x6a, 0xe2, 0x6a, 0x40, - 0xfd, 0x43, 0xcd, 0xc5, 0xfe, 0xb1, 0x05, 0x93, 0xd5, 0x5e, 0xb4, 0xc5, 0x74, 0x94, 0x06, 0xb7, - 0xc6, 0x11, 0x0f, 0x8a, 0xa1, 0xdb, 0xda, 0x79, 0x3e, 0x9f, 0xc5, 0xb8, 0xce, 0x48, 0xc9, 0x2b, - 0x12, 0xad, 0xac, 0xf3, 0x42, 0x14, 0x6c, 0x48, 0x00, 0x63, 0xbe, 0xd3, 0x8b, 0xb6, 0xae, 0xca, - 0x4f, 0x1e, 0xd2, 0x32, 0x71, 0x9b, 0x7d, 0xce, 0x55, 0xc9, 0x51, 0xab, 0x8c, 0xa2, 0x14, 0x25, - 0x27, 0xfb, 0xf3, 0x30, 0x99, 0xbc, 0x77, 0x3b, 0xc2, 0x98, 0xbd, 0x08, 0x05, 0x27, 0xf0, 0xe4, - 0x88, 0xad, 0x48, 0x84, 0x42, 0x15, 0x6f, 0x21, 0x2b, 0x27, 0xcf, 0x42, 0x69, 0xb3, 0xd7, 0x6e, - 0xf3, 0x73, 0x85, 0xb8, 0xe4, 0xd2, 0xc7, 0xa2, 0xeb, 0xb2, 0x1c, 0x35, 0x86, 0xfd, 0x7f, 0x46, - 0x61, 0xaa, 0xd6, 0xee, 0xd1, 0x57, 0x02, 0x4a, 0x95, 0x2d, 0xa8, 0x0a, 0x53, 0xdd, 0x80, 0xee, - 0xb8, 0xf4, 0x7e, 0x9d, 0xb6, 0x69, 0x23, 0xf2, 0x03, 0x29, 0xcd, 0x63, 0x92, 0xd0, 0xd4, 0x5a, - 0x12, 0x8c, 0x69, 0x7c, 0xf2, 0x32, 0x4c, 0x3a, 0x8d, 0xc8, 0xdd, 0xa1, 0x9a, 0x82, 0x10, 0xf7, - 0x51, 0x49, 0x61, 0xb2, 0x9a, 0x80, 0x62, 0x0a, 0x9b, 0x7c, 0x1a, 0x66, 0xc2, 0x86, 0xd3, 0xa6, - 0x77, 0xba, 0x92, 0xd5, 0xe2, 0x16, 0x6d, 0x6c, 0xaf, 0xf9, 0xae, 0x17, 0x49, 0xbb, 0xe3, 0x65, - 0x49, 0x69, 0xa6, 0x3e, 0x00, 0x0f, 0x07, 0x52, 0x20, 0xff, 0xca, 0x82, 0x8b, 0xdd, 0x80, 0xae, - 0x05, 0x7e, 0xc7, 0x67, 0x43, 0xad, 0xcf, 0x1c, 0x26, 0xcd, 0x42, 0xaf, 0x0f, 0xa9, 0x4b, 0x89, - 0x92, 0xfe, 0x3b, 0x9c, 0x0f, 0xec, 0xef, 0xcd, 0x5d, 0x5c, 0x3b, 0x48, 0x00, 0x3c, 0x58, 0x3e, - 0xf2, 0x6f, 0x2c, 0xb8, 0xd4, 0xf5, 0xc3, 0xe8, 0x80, 0x4f, 0x28, 0x9e, 0xea, 0x27, 0xd8, 0xfb, - 0x7b, 0x73, 0x97, 0xd6, 0x0e, 0x94, 0x00, 0x0f, 0x91, 0xd0, 0xde, 0xaf, 0xc0, 0x59, 0x63, 0xec, - 0x49, 0x63, 0xce, 0x4b, 0x70, 0x46, 0x0d, 0x86, 0x58, 0xf7, 0x29, 0xc7, 0xb6, 0xbd, 0xaa, 0x09, - 0xc4, 0x24, 0x2e, 0x1b, 0x77, 0x7a, 0x28, 0x8a, 0xda, 0xa9, 0x71, 0xb7, 0x96, 0x80, 0x62, 0x0a, - 0x9b, 0x2c, 0xc3, 0x39, 0x59, 0x82, 0xb4, 0xdb, 0x76, 0x1b, 0xce, 0xa2, 0xdf, 0x93, 0x43, 0xae, - 0x58, 0x7b, 0x6c, 0x7f, 0x6f, 0xee, 0xdc, 0x5a, 0x3f, 0x18, 0xb3, 0xea, 0x90, 0x15, 0x38, 0xef, - 0xf4, 0x22, 0x5f, 0x7f, 0xff, 0x35, 0x8f, 0x6d, 0xa7, 0x4d, 0x3e, 0xb4, 0x4a, 0x62, 0xdf, 0xad, - 0x66, 0xc0, 0x31, 0xb3, 0x16, 0x59, 0x4b, 0x51, 0xab, 0xd3, 0x86, 0xef, 0x35, 0x45, 0x2f, 0x17, - 0xe3, 0x63, 0x60, 0x35, 0x03, 0x07, 0x33, 0x6b, 0x92, 0x36, 0x4c, 0x76, 0x9c, 0x07, 0x77, 0x3c, - 0x67, 0xc7, 0x71, 0xdb, 0x8c, 0x89, 0xb4, 0x17, 0x0e, 0xb6, 0x32, 0xf5, 0x22, 0xb7, 0x3d, 0x2f, - 0xfc, 0x38, 0xe6, 0x97, 0xbd, 0xe8, 0x76, 0x50, 0x8f, 0x98, 0xa6, 0x2e, 0x34, 0xc8, 0xd5, 0x04, - 0x2d, 0x4c, 0xd1, 0x26, 0xb7, 0xe1, 0x02, 0x9f, 0x8e, 0x4b, 0xfe, 0x7d, 0x6f, 0x89, 0xb6, 0x9d, - 0x5d, 0xf5, 0x01, 0xe3, 0xfc, 0x03, 0x1e, 0xdf, 0xdf, 0x9b, 0xbb, 0x50, 0xcf, 0x42, 0xc0, 0xec, - 0x7a, 0xc4, 0x81, 0x27, 0x92, 0x00, 0xa4, 0x3b, 0x6e, 0xe8, 0xfa, 0x9e, 0x30, 0xcb, 0x95, 0x62, - 0xb3, 0x5c, 0x7d, 0x30, 0x1a, 0x1e, 0x44, 0x83, 0xfc, 0x5d, 0x0b, 0xce, 0x67, 0x4d, 0xc3, 0x99, - 0x72, 0x1e, 0xb7, 0xc9, 0xa9, 0xa9, 0x25, 0x46, 0x44, 0xe6, 0xa2, 0x90, 0x29, 0x04, 0x79, 0xdb, - 0x82, 0x09, 0xc7, 0x38, 0x41, 0xcf, 0x40, 0x1e, 0xbb, 0x96, 0x79, 0x26, 0xaf, 0x4d, 0xef, 0xef, - 0xcd, 0x25, 0x4e, 0xe9, 0x98, 0xe0, 0x48, 0xfe, 0xbe, 0x05, 0x17, 0x32, 0xe7, 0xf8, 0x4c, 0xe5, - 0x34, 0x5a, 0x88, 0x0f, 0x92, 0xec, 0x35, 0x27, 0x5b, 0x0c, 0xf2, 0x0d, 0x4b, 0x6f, 0x65, 0xea, - 0x82, 0x71, 0x66, 0x82, 0x8b, 0x36, 0xa4, 0xc1, 0xc3, 0x50, 0xa3, 0x14, 0xe1, 0xda, 0x39, 0x63, - 0x67, 0x54, 0x85, 0x98, 0x66, 0x4f, 0xbe, 0x6e, 0xa9, 0xad, 0x51, 0x4b, 0x74, 0xe6, 0xb4, 0x24, - 0x22, 0xf1, 0x4e, 0xab, 0x05, 0x4a, 0x31, 0x27, 0x3f, 0x07, 0xb3, 0xce, 0x86, 0x1f, 0x44, 0x99, - 0x93, 0x6f, 0x66, 0x92, 0x4f, 0xa3, 0x4b, 0xfb, 0x7b, 0x73, 0xb3, 0xd5, 0x81, 0x58, 0x78, 0x00, - 0x05, 0xfb, 0xf7, 0xc6, 0x60, 0x42, 0x9c, 0x84, 0xe4, 0xd6, 0xf5, 0x3b, 0x16, 0x3c, 0xd9, 0xe8, - 0x05, 0x01, 0xf5, 0xa2, 0x7a, 0x44, 0xbb, 0xfd, 0x1b, 0x97, 0x75, 0xaa, 0x1b, 0xd7, 0xe5, 0xfd, - 0xbd, 0xb9, 0x27, 0x17, 0x0f, 0xe0, 0x8f, 0x07, 0x4a, 0x47, 0xfe, 0x83, 0x05, 0xb6, 0x44, 0xa8, - 0x39, 0x8d, 0xed, 0x56, 0xe0, 0xf7, 0xbc, 0x66, 0xff, 0x47, 0x8c, 0x9c, 0xea, 0x47, 0x3c, 0xbd, - 0xbf, 0x37, 0x67, 0x2f, 0x1e, 0x2a, 0x05, 0x1e, 0x41, 0x52, 0xf2, 0x0a, 0x9c, 0x95, 0x58, 0xd7, - 0x1e, 0x74, 0x69, 0xe0, 0xb2, 0x33, 0x87, 0x54, 0x1c, 0x63, 0xdf, 0xb4, 0x34, 0x02, 0xf6, 0xd7, - 0x21, 0x21, 0x8c, 0xdf, 0xa7, 0x6e, 0x6b, 0x2b, 0x52, 0xea, 0xd3, 0x90, 0x0e, 0x69, 0xd2, 0x2a, - 0x72, 0x57, 0xd0, 0xac, 0x55, 0xf6, 0xf7, 0xe6, 0xc6, 0xe5, 0x1f, 0x54, 0x9c, 0xc8, 0x2d, 0x98, - 0x14, 0xe7, 0xd4, 0x35, 0xd7, 0x6b, 0xad, 0xf9, 0x9e, 0xf0, 0xaa, 0x2a, 0xd7, 0x9e, 0x56, 0x1b, - 0x7e, 0x3d, 0x01, 0x7d, 0x77, 0x6f, 0x6e, 0x42, 0xfd, 0x5e, 0xdf, 0xed, 0x52, 0x4c, 0xd5, 0x26, - 0x7f, 0xc7, 0x02, 0x12, 0x46, 0xb4, 0xbb, 0xd6, 0xee, 0xb5, 0x5c, 0xd9, 0x44, 0xd2, 0x3f, 0x2a, - 0x07, 0x57, 0xad, 0x24, 0xdd, 0xda, 0xac, 0x14, 0x92, 0xd4, 0xfb, 0x38, 0x62, 0x86, 0x14, 0xf6, - 0xb7, 0xc7, 0x01, 0xd4, 0x5c, 0xa2, 0x5d, 0xf2, 0x41, 0x28, 0x87, 0x34, 0x12, 0x4d, 0x22, 0xaf, - 0xb9, 0xc4, 0xe5, 0xa4, 0x2a, 0xc4, 0x18, 0x4e, 0xb6, 0xa1, 0xd8, 0x75, 0x7a, 0x21, 0xcd, 0xe7, - 0x70, 0x23, 0x47, 0xe6, 0x1a, 0xa3, 0x28, 0x4e, 0xcd, 0xfc, 0x27, 0x0a, 0x1e, 0xe4, 0x4b, 0x16, - 0x00, 0x4d, 0x8e, 0xa6, 0xa1, 0xad, 0x57, 0x92, 0x65, 0x3c, 0xe0, 0x58, 0x1b, 0xd4, 0x26, 0xf7, - 0xf7, 0xe6, 0xc0, 0x18, 0x97, 0x06, 0x5b, 0x72, 0x1f, 0x4a, 0x8e, 0xda, 0x90, 0x46, 0x4f, 0x63, - 0x43, 0xe2, 0x87, 0x59, 0x3d, 0xa3, 0x34, 0x33, 0xf2, 0x15, 0x0b, 0x26, 0x43, 0x1a, 0xc9, 0xae, - 0x62, 0xcb, 0xa2, 0xd4, 0xc6, 0x87, 0x9c, 0x11, 0xf5, 0x04, 0x4d, 0xb1, 0xbc, 0x27, 0xcb, 0x30, - 0xc5, 0x57, 0x89, 0x72, 0x83, 0x3a, 0x4d, 0x1a, 0x70, 0x5b, 0x89, 0x54, 0xf3, 0x86, 0x17, 0xc5, - 0xa0, 0xa9, 0x45, 0x31, 0xca, 0x30, 0xc5, 0x57, 0x89, 0xb2, 0xea, 0x06, 0x81, 0x2f, 0x45, 0x29, - 0xe5, 0x24, 0x8a, 0x41, 0x53, 0x8b, 0x62, 0x94, 0x61, 0x8a, 0x2f, 0x69, 0xc3, 0x58, 0x97, 0x4f, - 0x2d, 0xa9, 0xca, 0x0d, 0x79, 0x47, 0xae, 0xa6, 0x29, 0xed, 0x0a, 0x9b, 0x94, 0xf8, 0x8f, 0x92, - 0x87, 0xfd, 0xad, 0x33, 0x30, 0xa9, 0xa6, 0x6d, 0x7c, 0xc8, 0x11, 0x86, 0xc0, 0x01, 0x87, 0x9c, - 0x45, 0x13, 0x88, 0x49, 0x5c, 0x56, 0x59, 0xac, 0x5a, 0xc9, 0x33, 0x8e, 0xae, 0x5c, 0x37, 0x81, - 0x98, 0xc4, 0x25, 0x1d, 0x28, 0xb2, 0x95, 0x45, 0xb9, 0x5f, 0x0c, 0xf9, 0xe5, 0xf1, 0x6a, 0x64, - 0x18, 0x55, 0x18, 0x79, 0x14, 0x5c, 0xb8, 0x2d, 0x3b, 0x4a, 0x98, 0xb7, 0xe5, 0x54, 0xcc, 0x67, - 0x35, 0x48, 0x5a, 0xce, 0x45, 0xdf, 0x27, 0xcb, 0x30, 0xc5, 0x3e, 0xe3, 0xdc, 0x53, 0x3c, 0xc5, - 0x73, 0xcf, 0x27, 0xa1, 0xd4, 0x71, 0x1e, 0xd4, 0x7b, 0x41, 0xeb, 0xe4, 0xe7, 0x2b, 0xe9, 0x4e, - 0x2b, 0xa8, 0xa0, 0xa6, 0x47, 0xbe, 0x60, 0x19, 0x0b, 0x9c, 0xf0, 0xb5, 0xb8, 0x9b, 0xef, 0x02, - 0xa7, 0xd5, 0x86, 0x81, 0x4b, 0x5d, 0xdf, 0x29, 0xa4, 0xf4, 0xd0, 0x4f, 0x21, 0x4c, 0xa3, 0x16, - 0x13, 0x44, 0x6b, 0xd4, 0xe5, 0x53, 0xd5, 0xa8, 0x17, 0x13, 0xcc, 0x30, 0xc5, 0x9c, 0xcb, 0x23, - 0xe6, 0x9c, 0x96, 0x07, 0x4e, 0x55, 0x9e, 0x7a, 0x82, 0x19, 0xa6, 0x98, 0x0f, 0x3e, 0x7a, 0x57, - 0x4e, 0xe7, 0xe8, 0x3d, 0x91, 0xc3, 0xd1, 0xfb, 0xe0, 0x53, 0xc9, 0x99, 0x61, 0x4f, 0x25, 0xe4, - 0x26, 0x90, 0xe6, 0xae, 0xe7, 0x74, 0xdc, 0x86, 0x5c, 0x2c, 0xf9, 0x26, 0x3d, 0xc9, 0x4d, 0x33, - 0x5a, 0x2b, 0x5b, 0xea, 0xc3, 0xc0, 0x8c, 0x5a, 0x24, 0x82, 0x52, 0x57, 0x29, 0x9f, 0x53, 0x79, - 0x8c, 0x7e, 0xa5, 0x8c, 0x0a, 0x17, 0x1a, 0x36, 0xf1, 0x54, 0x09, 0x6a, 0x4e, 0x64, 0x05, 0xce, - 0x77, 0x5c, 0x6f, 0xcd, 0x6f, 0x86, 0x6b, 0x34, 0x90, 0x86, 0xa7, 0x3a, 0x8d, 0x66, 0xa6, 0x79, - 0xdb, 0x70, 0x63, 0xc2, 0x6a, 0x06, 0x1c, 0x33, 0x6b, 0xd9, 0xff, 0xdb, 0x82, 0xe9, 0xc5, 0xb6, - 0xdf, 0x6b, 0xde, 0x75, 0xa2, 0xc6, 0x96, 0xf0, 0xd8, 0x20, 0x2f, 0x43, 0xc9, 0xf5, 0x22, 0x1a, - 0xec, 0x38, 0x6d, 0xb9, 0x3f, 0xd9, 0xca, 0x92, 0xbc, 0x2c, 0xcb, 0xdf, 0xdd, 0x9b, 0x9b, 0x5c, - 0xea, 0x05, 0xdc, 0x60, 0x2f, 0x56, 0x2b, 0xd4, 0x75, 0xc8, 0xb7, 0x2c, 0x38, 0x2b, 0x7c, 0x3e, - 0x96, 0x9c, 0xc8, 0x79, 0xad, 0x47, 0x03, 0x97, 0x2a, 0xaf, 0x8f, 0x21, 0x17, 0xaa, 0xb4, 0xac, - 0x8a, 0xc1, 0x6e, 0x7c, 0x66, 0x59, 0x4d, 0x73, 0xc6, 0x7e, 0x61, 0xec, 0x5f, 0x2d, 0xc0, 0xe3, - 0x03, 0x69, 0x91, 0x59, 0x18, 0x71, 0x9b, 0xf2, 0xd3, 0x41, 0xd2, 0x1d, 0x59, 0x6e, 0xe2, 0x88, - 0xdb, 0x24, 0xf3, 0x5c, 0xc3, 0x0d, 0x68, 0x18, 0xaa, 0xbb, 0xf7, 0xb2, 0x56, 0x46, 0x65, 0x29, - 0x1a, 0x18, 0x64, 0x0e, 0x8a, 0xdc, 0x95, 0x5a, 0x1e, 0xad, 0xb8, 0xce, 0xcc, 0xbd, 0x96, 0x51, - 0x94, 0x93, 0x2f, 0x5a, 0x00, 0x42, 0x40, 0xa6, 0xef, 0xcb, 0x5d, 0x12, 0xf3, 0x6d, 0x26, 0x46, - 0x59, 0x48, 0x19, 0xff, 0x47, 0x83, 0x2b, 0x59, 0x87, 0x31, 0xa6, 0x3e, 0xfb, 0xcd, 0x13, 0x6f, - 0x8a, 0x42, 0x01, 0xe2, 0x34, 0x50, 0xd2, 0x62, 0x6d, 0x15, 0xd0, 0xa8, 0x17, 0x78, 0xac, 0x69, - 0xf9, 0x36, 0x58, 0x12, 0x52, 0xa0, 0x2e, 0x45, 0x03, 0xc3, 0xfe, 0x17, 0x23, 0x70, 0x3e, 0x4b, - 0x74, 0xb6, 0xdb, 0x8c, 0x09, 0x69, 0xa5, 0x95, 0xe0, 0x67, 0xf3, 0x6f, 0x1f, 0xe9, 0xbe, 0xa4, - 0x6f, 0x6c, 0xa4, 0x2f, 0xa9, 0xe4, 0x4b, 0x7e, 0x56, 0xb7, 0xd0, 0xc8, 0x09, 0x5b, 0x48, 0x53, - 0x4e, 0xb5, 0xd2, 0x65, 0x18, 0x0d, 0x59, 0xcf, 0x17, 0x92, 0x37, 0x3f, 0xbc, 0x8f, 0x38, 0x84, - 0x61, 0xf4, 0x3c, 0x37, 0x92, 0xf1, 0x47, 0x1a, 0xe3, 0x8e, 0xe7, 0x46, 0xc8, 0x21, 0xf6, 0x37, - 0x47, 0x60, 0x76, 0xf0, 0x47, 0x91, 0x6f, 0x5a, 0x00, 0x4d, 0x76, 0x38, 0x0a, 0xb9, 0x13, 0xbf, - 0x70, 0xf7, 0x72, 0x4e, 0xab, 0x0d, 0x97, 0x14, 0xa7, 0xd8, 0x0f, 0x51, 0x17, 0x85, 0x68, 0x08, - 0x42, 0xae, 0xaa, 0xa1, 0xcf, 0x6f, 0xad, 0xc4, 0x64, 0xd2, 0x75, 0x56, 0x35, 0x04, 0x0d, 0x2c, - 0x76, 0xfa, 0xf5, 0x9c, 0x0e, 0x0d, 0xbb, 0x8e, 0x8e, 0xe6, 0xe2, 0xa7, 0xdf, 0x5b, 0xaa, 0x10, - 0x63, 0xb8, 0xdd, 0x86, 0xa7, 0x8e, 0x20, 0x67, 0x4e, 0xc1, 0x32, 0xf6, 0x9f, 0x5a, 0xf0, 0x98, - 0xf4, 0xc4, 0xfb, 0x0b, 0xe3, 0xd6, 0xf9, 0x67, 0x16, 0x3c, 0x31, 0xe0, 0x9b, 0x1f, 0x82, 0x77, - 0xe7, 0x9b, 0x49, 0xef, 0xce, 0x3b, 0xc3, 0x0e, 0xe9, 0xcc, 0xef, 0x18, 0xe0, 0xe4, 0xf9, 0x9d, - 0x51, 0x38, 0xc3, 0x96, 0xad, 0xa6, 0xdf, 0xca, 0x69, 0xe3, 0x7c, 0x0a, 0x8a, 0x9f, 0x65, 0x1b, - 0x50, 0x7a, 0x90, 0xf1, 0x5d, 0x09, 0x05, 0x8c, 0x7c, 0xc9, 0x82, 0xf1, 0xcf, 0xca, 0x3d, 0x55, - 0x9c, 0xe5, 0x86, 0x5c, 0x0c, 0x13, 0xdf, 0x30, 0x2f, 0x77, 0x48, 0x11, 0x83, 0xa3, 0x7d, 0x39, - 0xd5, 0x56, 0xaa, 0x38, 0x93, 0x67, 0x60, 0x7c, 0xd3, 0x0f, 0x3a, 0xbd, 0xb6, 0x93, 0x0e, 0xfc, - 0xbc, 0x2e, 0x8a, 0x51, 0xc1, 0xd9, 0x24, 0x77, 0xba, 0xee, 0xeb, 0x34, 0x08, 0x45, 0x48, 0x46, - 0x62, 0x92, 0x57, 0x35, 0x04, 0x0d, 0x2c, 0x5e, 0xa7, 0xd5, 0x0a, 0x68, 0xcb, 0x89, 0xfc, 0x80, - 0xef, 0x1c, 0x66, 0x1d, 0x0d, 0x41, 0x03, 0x8b, 0x3c, 0x80, 0x72, 0x48, 0x1b, 0x01, 0x8d, 0x90, - 0x6e, 0xca, 0x63, 0xd1, 0x2b, 0xc3, 0x5a, 0x18, 0x24, 0xb9, 0xd8, 0xa9, 0x51, 0x17, 0x61, 0xcc, - 0x6c, 0xf6, 0x63, 0x30, 0x61, 0x36, 0xdb, 0xb1, 0x22, 0x89, 0x3e, 0x0e, 0xd2, 0x9d, 0x34, 0xb5, - 0x18, 0x5a, 0x47, 0x59, 0x0c, 0xed, 0xff, 0x34, 0x02, 0x86, 0x15, 0xec, 0x21, 0x2c, 0x32, 0x5e, - 0x62, 0x91, 0x19, 0xd2, 0x82, 0x63, 0xd8, 0xf4, 0x06, 0xc5, 0x55, 0xee, 0xa4, 0xe2, 0x2a, 0x6f, - 0xe5, 0xc6, 0xf1, 0xe0, 0xb0, 0xca, 0x1f, 0x58, 0xf0, 0x44, 0x8c, 0xdc, 0x6f, 0x3d, 0x3f, 0x7c, - 0xc7, 0x78, 0x01, 0x2a, 0x4e, 0x5c, 0x4d, 0x4e, 0x69, 0x23, 0xa8, 0x4d, 0x83, 0xd0, 0xc4, 0x8b, - 0x03, 0x72, 0x0a, 0x27, 0x0c, 0xc8, 0x19, 0x3d, 0x38, 0x20, 0xc7, 0xfe, 0xf1, 0x08, 0x5c, 0xec, - 0xff, 0x32, 0xd3, 0x4b, 0xfd, 0xf0, 0x6f, 0x4b, 0xfb, 0xb1, 0x8f, 0x9c, 0xd8, 0x8f, 0xbd, 0x70, - 0x54, 0x3f, 0x76, 0xed, 0x3d, 0x3e, 0x7a, 0xea, 0xde, 0xe3, 0x75, 0xb8, 0xa0, 0x5c, 0x55, 0xaf, - 0xfb, 0x81, 0x8c, 0x4a, 0x51, 0x6b, 0x57, 0xa9, 0x76, 0x51, 0x56, 0xb9, 0x80, 0x59, 0x48, 0x98, - 0x5d, 0xd7, 0xfe, 0x41, 0x01, 0xce, 0xc5, 0xcd, 0xbe, 0xe8, 0x7b, 0x4d, 0x97, 0x7b, 0x3b, 0xbd, - 0x04, 0xa3, 0xd1, 0x6e, 0x57, 0x35, 0xf6, 0x5f, 0x56, 0xe2, 0xac, 0xef, 0x76, 0x59, 0x6f, 0x3f, - 0x96, 0x51, 0x85, 0xdf, 0x5f, 0xf0, 0x4a, 0x64, 0x45, 0xcf, 0x0e, 0xd1, 0x03, 0xcf, 0x27, 0x47, - 0xf3, 0xbb, 0x7b, 0x73, 0x19, 0xf9, 0x25, 0xe6, 0x35, 0xa5, 0xe4, 0x98, 0x27, 0xf7, 0x60, 0xb2, - 0xed, 0x84, 0xd1, 0x9d, 0x6e, 0xd3, 0x89, 0xe8, 0xba, 0x2b, 0xfd, 0x88, 0x8e, 0x17, 0xc8, 0xa3, - 0x1d, 0x2e, 0x56, 0x12, 0x94, 0x30, 0x45, 0x99, 0xec, 0x00, 0x61, 0x25, 0xeb, 0x81, 0xe3, 0x85, - 0xe2, 0xab, 0x18, 0xbf, 0xe3, 0x47, 0x65, 0xe9, 0x43, 0xfb, 0x4a, 0x1f, 0x35, 0xcc, 0xe0, 0x40, - 0x9e, 0x86, 0xb1, 0x80, 0x3a, 0xa1, 0xde, 0x88, 0xf4, 0xfc, 0x47, 0x5e, 0x8a, 0x12, 0x6a, 0x4e, - 0xa8, 0xb1, 0x43, 0x26, 0xd4, 0x1f, 0x5a, 0x30, 0x19, 0x77, 0xd3, 0x43, 0x50, 0x7a, 0x3a, 0x49, - 0xa5, 0xe7, 0x46, 0x5e, 0x4b, 0xe2, 0x00, 0x3d, 0xe7, 0x4f, 0xc6, 0xcd, 0xef, 0xe3, 0xa1, 0x23, - 0x9f, 0x33, 0x23, 0x09, 0xac, 0x3c, 0xe2, 0xf9, 0x12, 0x7a, 0xe6, 0x81, 0x21, 0x04, 0x4c, 0xcb, - 0x6a, 0x4a, 0x0d, 0x4a, 0x0e, 0x7b, 0xad, 0x65, 0x29, 0xcd, 0x2a, 0x4b, 0xcb, 0x52, 0x75, 0xc8, - 0x1d, 0x78, 0xac, 0x1b, 0xf8, 0x3c, 0xc3, 0xc1, 0x12, 0x75, 0x9a, 0x6d, 0xd7, 0xa3, 0xca, 0xc0, - 0x24, 0xfc, 0x7d, 0x9e, 0xd8, 0xdf, 0x9b, 0x7b, 0x6c, 0x2d, 0x1b, 0x05, 0x07, 0xd5, 0x4d, 0xc6, - 0xc8, 0x8e, 0x1e, 0x21, 0x46, 0xf6, 0x97, 0xb4, 0x19, 0x57, 0x87, 0x63, 0x7c, 0x2a, 0xaf, 0xae, - 0xcc, 0x0a, 0xcc, 0xd0, 0x43, 0xaa, 0x2a, 0x99, 0xa2, 0x66, 0x3f, 0xd8, 0x56, 0x38, 0x76, 0x42, - 0x5b, 0x61, 0x1c, 0x81, 0x33, 0xfe, 0x5e, 0x46, 0xe0, 0x94, 0xde, 0x57, 0x11, 0x38, 0xdf, 0xb2, - 0xe0, 0x9c, 0xd3, 0x1f, 0xfb, 0x9e, 0x8f, 0xd9, 0x3a, 0x23, 0xa8, 0xbe, 0xf6, 0x84, 0x14, 0x32, - 0x2b, 0xc5, 0x00, 0x66, 0x89, 0x62, 0xbf, 0x53, 0x84, 0xe9, 0xb4, 0x92, 0x74, 0xfa, 0x41, 0xc2, - 0xbf, 0x62, 0xc1, 0xb4, 0x9a, 0xe0, 0xfa, 0xee, 0x5d, 0x1c, 0x6e, 0x56, 0x72, 0x5a, 0x57, 0x84, - 0xba, 0xa7, 0x73, 0xb7, 0xac, 0xa7, 0xb8, 0x61, 0x1f, 0x7f, 0xf2, 0x06, 0x54, 0xf4, 0x7d, 0xce, - 0x89, 0x22, 0x86, 0x79, 0x50, 0x6b, 0x35, 0x26, 0x81, 0x26, 0x3d, 0xf2, 0x8e, 0x05, 0xd0, 0x50, - 0x3b, 0x71, 0x4e, 0xf1, 0x58, 0x19, 0xda, 0x42, 0xac, 0xcf, 0xeb, 0xa2, 0x10, 0x0d, 0xc6, 0xe4, - 0x57, 0xf9, 0x4d, 0x8e, 0x1e, 0x09, 0xca, 0xe7, 0xe1, 0x13, 0x79, 0x2f, 0x45, 0xb1, 0x17, 0x8b, - 0xd6, 0xf6, 0x0c, 0x50, 0x88, 0x09, 0x21, 0xec, 0x97, 0x40, 0x7b, 0x8b, 0xb3, 0x95, 0x95, 0xfb, - 0x8b, 0xaf, 0x39, 0xd1, 0x96, 0x1c, 0x82, 0x7a, 0x65, 0xbd, 0xae, 0x00, 0x18, 0xe3, 0xd8, 0x9f, - 0x81, 0xc9, 0x57, 0x02, 0xa7, 0xbb, 0xe5, 0xf2, 0x1b, 0x13, 0x76, 0x32, 0x7f, 0x06, 0xc6, 0x9d, - 0x66, 0x33, 0x2b, 0xcd, 0x50, 0x55, 0x14, 0xa3, 0x82, 0x1f, 0xe9, 0x10, 0x6e, 0xff, 0x3b, 0x0b, - 0x48, 0x7c, 0xc7, 0xed, 0x7a, 0xad, 0x55, 0x27, 0x6a, 0x6c, 0xb1, 0x23, 0xdc, 0x16, 0x2f, 0xcd, - 0x3a, 0xc2, 0xdd, 0xd0, 0x10, 0x34, 0xb0, 0xc8, 0x5b, 0x50, 0x11, 0xff, 0x5e, 0xd7, 0x07, 0xc4, - 0xe1, 0x9d, 0xde, 0xf9, 0x9e, 0xc7, 0x65, 0x12, 0xa3, 0xf0, 0x46, 0xcc, 0x01, 0x4d, 0x76, 0xac, - 0xa9, 0x96, 0xbd, 0xcd, 0x76, 0xef, 0x41, 0x73, 0x23, 0x6e, 0xaa, 0x6e, 0xe0, 0x6f, 0xba, 0x6d, - 0x9a, 0x6e, 0xaa, 0x35, 0x51, 0x8c, 0x0a, 0x7e, 0xb4, 0xa6, 0xfa, 0xb7, 0x16, 0x9c, 0x5f, 0x0e, - 0x23, 0xd7, 0x5f, 0xa2, 0x61, 0xc4, 0x76, 0x3e, 0xb6, 0x3e, 0xf6, 0xda, 0x47, 0x09, 0xfc, 0x58, - 0x82, 0x69, 0x79, 0x03, 0xde, 0xdb, 0x08, 0x69, 0x64, 0x1c, 0x35, 0xf4, 0x3c, 0x5e, 0x4c, 0xc1, - 0xb1, 0xaf, 0x06, 0xa3, 0x22, 0xaf, 0xc2, 0x63, 0x2a, 0x85, 0x24, 0x95, 0x7a, 0x0a, 0x8e, 0x7d, - 0x35, 0xec, 0xef, 0x17, 0xe0, 0x1c, 0xff, 0x8c, 0x54, 0xd0, 0xd6, 0xd7, 0x07, 0x05, 0x6d, 0x0d, - 0x39, 0x95, 0x39, 0xaf, 0x13, 0x84, 0x6c, 0xfd, 0x4d, 0x0b, 0xa6, 0x9a, 0xc9, 0x96, 0xce, 0xc7, - 0x22, 0x98, 0xd5, 0x87, 0xc2, 0xf7, 0x31, 0x55, 0x88, 0x69, 0xfe, 0xe4, 0xd7, 0x2c, 0x98, 0x4a, - 0x8a, 0xa9, 0x56, 0xf7, 0x53, 0x68, 0x24, 0x1d, 0xac, 0x90, 0x2c, 0x0f, 0x31, 0x2d, 0x82, 0xfd, - 0xbd, 0x11, 0xd9, 0xa5, 0xa7, 0x11, 0x91, 0x44, 0xee, 0x43, 0x39, 0x6a, 0x87, 0xa2, 0x50, 0x7e, - 0xed, 0x90, 0x87, 0xd6, 0xf5, 0x95, 0xba, 0x70, 0x75, 0x89, 0xf5, 0x4a, 0x59, 0xc2, 0xf4, 0x63, - 0xc5, 0x8b, 0x33, 0x6e, 0x74, 0x25, 0xe3, 0x5c, 0x4e, 0xcb, 0xeb, 0x8b, 0x6b, 0x69, 0xc6, 0xb2, - 0x84, 0x31, 0x56, 0xbc, 0xec, 0xdf, 0xb2, 0xa0, 0x7c, 0xd3, 0x57, 0xeb, 0xc8, 0xcf, 0xe5, 0x60, - 0x8b, 0xd2, 0x2a, 0xab, 0x56, 0x5a, 0xe2, 0x53, 0xd0, 0xcb, 0x09, 0x4b, 0xd4, 0x93, 0x06, 0xed, - 0x79, 0x9e, 0x6d, 0x91, 0x91, 0xba, 0xe9, 0x6f, 0x0c, 0x34, 0x5c, 0xff, 0x7a, 0x11, 0xce, 0xbc, - 0xea, 0xec, 0x52, 0x2f, 0x72, 0x8e, 0xbf, 0x49, 0xbc, 0x00, 0x15, 0xa7, 0xcb, 0x6f, 0x51, 0x8d, - 0x63, 0x48, 0x6c, 0xdc, 0x89, 0x41, 0x68, 0xe2, 0xc5, 0x0b, 0x9a, 0x08, 0x0f, 0xca, 0x5a, 0x8a, - 0x16, 0x53, 0x70, 0xec, 0xab, 0x41, 0x6e, 0x02, 0x91, 0x21, 0xf5, 0xd5, 0x46, 0xc3, 0xef, 0x79, - 0x62, 0x49, 0x13, 0x76, 0x1f, 0x7d, 0x1e, 0x5e, 0xed, 0xc3, 0xc0, 0x8c, 0x5a, 0xe4, 0xd3, 0x30, - 0xd3, 0xe0, 0x94, 0xe5, 0xe9, 0xc8, 0xa4, 0x28, 0x4e, 0xc8, 0x3a, 0xe0, 0x66, 0x71, 0x00, 0x1e, - 0x0e, 0xa4, 0xc0, 0x24, 0x0d, 0x23, 0x3f, 0x70, 0x5a, 0xd4, 0xa4, 0x3b, 0x96, 0x94, 0xb4, 0xde, - 0x87, 0x81, 0x19, 0xb5, 0xc8, 0xe7, 0xa1, 0x1c, 0x6d, 0x05, 0x34, 0xdc, 0xf2, 0xdb, 0x4d, 0x69, - 0xde, 0x1d, 0xd2, 0x18, 0x28, 0x7b, 0x7f, 0x5d, 0x51, 0x35, 0x86, 0xb7, 0x2a, 0xc2, 0x98, 0x27, - 0x09, 0x60, 0x2c, 0x6c, 0xf8, 0x5d, 0x1a, 0xca, 0x53, 0xc5, 0xcd, 0x5c, 0xb8, 0x73, 0xe3, 0x96, - 0x61, 0x86, 0xe4, 0x1c, 0x50, 0x72, 0xb2, 0x7f, 0x77, 0x04, 0x26, 0x4c, 0xc4, 0x23, 0xac, 0x4d, - 0x5f, 0xb2, 0x60, 0xa2, 0xe1, 0x7b, 0x51, 0xe0, 0xb7, 0xe3, 0x54, 0x11, 0xc3, 0x6b, 0x14, 0x8c, - 0xd4, 0x12, 0x8d, 0x1c, 0xb7, 0x6d, 0x58, 0xeb, 0x0c, 0x36, 0x98, 0x60, 0x4a, 0xbe, 0x66, 0xc1, - 0x54, 0xec, 0x92, 0x19, 0xdb, 0xfa, 0x72, 0x15, 0x44, 0x2f, 0xf5, 0xd7, 0x92, 0x9c, 0x30, 0xcd, - 0xda, 0xde, 0x80, 0xe9, 0x74, 0x6f, 0xb3, 0xa6, 0xec, 0x3a, 0x72, 0xae, 0x17, 0xe2, 0xa6, 0x5c, - 0x73, 0xc2, 0x10, 0x39, 0x84, 0x3c, 0x0b, 0xa5, 0x8e, 0x13, 0xb4, 0x5c, 0xcf, 0x69, 0xf3, 0x56, - 0x2c, 0x18, 0x0b, 0x92, 0x2c, 0x47, 0x8d, 0x61, 0x7f, 0x18, 0x26, 0x56, 0x1d, 0xaf, 0x45, 0x9b, - 0x72, 0x1d, 0x3e, 0x3c, 0x26, 0xf6, 0x8f, 0x47, 0xa1, 0x62, 0x1c, 0x1f, 0x4f, 0xff, 0x9c, 0x95, - 0x48, 0x81, 0x54, 0xc8, 0x31, 0x05, 0xd2, 0x27, 0x01, 0x36, 0x5d, 0xcf, 0x0d, 0xb7, 0x4e, 0x98, - 0x5c, 0x89, 0x7b, 0x05, 0x5c, 0xd7, 0x14, 0xd0, 0xa0, 0x16, 0x5f, 0xbd, 0x16, 0x0f, 0xc8, 0x53, - 0xf8, 0x8e, 0x65, 0x6c, 0x37, 0x63, 0x79, 0xb8, 0x9a, 0x18, 0x1d, 0x33, 0xaf, 0xb6, 0x1f, 0x71, - 0x2b, 0x76, 0xd0, 0xae, 0xb4, 0x0e, 0xa5, 0x80, 0x86, 0xbd, 0x0e, 0x3d, 0x51, 0x1a, 0x24, 0xee, - 0xf4, 0x83, 0xb2, 0x3e, 0x6a, 0x4a, 0xb3, 0x2f, 0xc1, 0x99, 0x84, 0x08, 0xc7, 0xba, 0x61, 0xf2, - 0x21, 0xd3, 0x46, 0x71, 0x92, 0xfb, 0x26, 0xd6, 0x17, 0x6d, 0x23, 0xfd, 0x91, 0xee, 0x0b, 0xe1, - 0xda, 0x25, 0x60, 0xf6, 0x8f, 0xc7, 0x40, 0x7a, 0x4f, 0x1c, 0x61, 0xb9, 0x32, 0xef, 0x4c, 0x47, - 0x4e, 0x70, 0x67, 0x7a, 0x13, 0x26, 0x5c, 0xcf, 0x8d, 0x5c, 0xa7, 0xcd, 0xed, 0x4f, 0x72, 0x3b, - 0x55, 0x61, 0x00, 0x13, 0xcb, 0x06, 0x2c, 0x83, 0x4e, 0xa2, 0x2e, 0x79, 0x0d, 0x8a, 0x7c, 0xbf, - 0x91, 0x03, 0xf8, 0xf8, 0x2e, 0x1e, 0xdc, 0xbb, 0x47, 0xc4, 0x06, 0x0a, 0x4a, 0xfc, 0xf0, 0x21, - 0xf2, 0x3f, 0xe9, 0xe3, 0xb7, 0x1c, 0xc7, 0xf1, 0xe1, 0x23, 0x05, 0xc7, 0xbe, 0x1a, 0x8c, 0xca, - 0xa6, 0xe3, 0xb6, 0x7b, 0x01, 0x8d, 0xa9, 0x8c, 0x25, 0xa9, 0x5c, 0x4f, 0xc1, 0xb1, 0xaf, 0x06, - 0xd9, 0x84, 0x09, 0x59, 0x26, 0x1c, 0xf6, 0xc6, 0x4f, 0xf8, 0x95, 0xdc, 0x31, 0xf3, 0xba, 0x41, - 0x09, 0x13, 0x74, 0x49, 0x0f, 0xce, 0xba, 0x5e, 0xc3, 0xf7, 0x1a, 0xed, 0x5e, 0xe8, 0xee, 0xd0, - 0x38, 0x30, 0xef, 0x24, 0xcc, 0x2e, 0xec, 0xef, 0xcd, 0x9d, 0x5d, 0x4e, 0x93, 0xc3, 0x7e, 0x0e, - 0xe4, 0x0b, 0x16, 0x5c, 0x68, 0xf8, 0x5e, 0xc8, 0xf3, 0x87, 0xec, 0xd0, 0x6b, 0x41, 0xe0, 0x07, - 0x82, 0x77, 0xf9, 0x84, 0xbc, 0xb9, 0xd9, 0x73, 0x31, 0x8b, 0x24, 0x66, 0x73, 0x22, 0x6f, 0x42, - 0xa9, 0x1b, 0xf8, 0x3b, 0x6e, 0x93, 0x06, 0xd2, 0xf9, 0x73, 0x25, 0x8f, 0xa4, 0x4a, 0x6b, 0x92, - 0x66, 0xbc, 0xf4, 0xa8, 0x12, 0xd4, 0xfc, 0xec, 0xff, 0x5b, 0x81, 0xc9, 0x24, 0x3a, 0xf9, 0x05, - 0x80, 0x6e, 0xe0, 0x77, 0x68, 0xb4, 0x45, 0x75, 0x80, 0xd5, 0xad, 0x61, 0xd3, 0xe6, 0x28, 0x7a, - 0xca, 0x61, 0x8a, 0x2d, 0x17, 0x71, 0x29, 0x1a, 0x1c, 0x49, 0x00, 0xe3, 0xdb, 0x62, 0xdb, 0x95, - 0x5a, 0xc8, 0xab, 0xb9, 0xe8, 0x4c, 0x92, 0x33, 0x8f, 0x0c, 0x92, 0x45, 0xa8, 0x18, 0x91, 0x0d, - 0x28, 0xdc, 0xa7, 0x1b, 0xf9, 0xe4, 0x6c, 0xb8, 0x4b, 0xe5, 0x69, 0xa6, 0x36, 0xbe, 0xbf, 0x37, - 0x57, 0xb8, 0x4b, 0x37, 0x90, 0x11, 0x67, 0xdf, 0xd5, 0x14, 0x5e, 0x13, 0x72, 0xa9, 0x78, 0x35, - 0x47, 0x17, 0x0c, 0xf1, 0x5d, 0xb2, 0x08, 0x15, 0x23, 0xf2, 0x26, 0x94, 0xef, 0x3b, 0x3b, 0x74, - 0x33, 0xf0, 0xbd, 0x48, 0x7a, 0xe9, 0x0d, 0x19, 0xd6, 0x72, 0x57, 0x91, 0x93, 0x7c, 0xf9, 0xf6, - 0xae, 0x0b, 0x31, 0x66, 0x47, 0x76, 0xa0, 0xe4, 0xd1, 0xfb, 0x48, 0xdb, 0x6e, 0x23, 0x9f, 0x30, - 0x92, 0x5b, 0x92, 0x9a, 0xe4, 0xcc, 0xf7, 0x3d, 0x55, 0x86, 0x9a, 0x17, 0xeb, 0xcb, 0x7b, 0xfe, - 0x46, 0x3e, 0xce, 0x1c, 0xfa, 0x64, 0x2a, 0xfa, 0xf2, 0xa6, 0xbf, 0x81, 0x8c, 0x38, 0x9b, 0x23, - 0x0d, 0xed, 0x22, 0x26, 0x97, 0xa9, 0x5b, 0xf9, 0xba, 0xc6, 0x89, 0x39, 0x12, 0x97, 0xa2, 0xc1, - 0x91, 0xb5, 0x6d, 0x4b, 0x1a, 0x2b, 0xe5, 0x42, 0x35, 0x64, 0xdb, 0x26, 0x4d, 0x9f, 0xa2, 0x6d, - 0x55, 0x19, 0x6a, 0x5e, 0x8c, 0xaf, 0x2b, 0x2d, 0x7f, 0xf9, 0x2c, 0x55, 0x49, 0x3b, 0xa2, 0xe0, - 0xab, 0xca, 0x50, 0xf3, 0x62, 0xed, 0x1d, 0x6e, 0xef, 0xde, 0x77, 0xda, 0xdb, 0xae, 0xd7, 0x92, - 0x01, 0xc3, 0xc3, 0x06, 0xd8, 0x6d, 0xef, 0xde, 0x15, 0xf4, 0xcc, 0xf6, 0x8e, 0x4b, 0xd1, 0xe0, - 0x48, 0xfe, 0x9e, 0xa5, 0x83, 0x80, 0x26, 0xf2, 0x70, 0x9f, 0x4a, 0x2e, 0xb9, 0x32, 0x26, 0x48, - 0x28, 0x8a, 0x3f, 0xad, 0x3d, 0x3e, 0x79, 0xe1, 0x57, 0xff, 0x68, 0x6e, 0x86, 0x7a, 0x0d, 0xbf, - 0xe9, 0x7a, 0xad, 0x85, 0x7b, 0xa1, 0xef, 0xcd, 0xa3, 0x73, 0x5f, 0xe9, 0xe8, 0x52, 0xa6, 0xd9, - 0x8f, 0x42, 0xc5, 0x20, 0x71, 0x98, 0xa2, 0x37, 0x61, 0x2a, 0x7a, 0xbf, 0x35, 0x06, 0x13, 0x66, - 0x06, 0xd4, 0x23, 0x68, 0x5f, 0xfa, 0xc4, 0x31, 0x72, 0x9c, 0x13, 0x07, 0x3b, 0x62, 0x1a, 0x17, - 0x5c, 0xca, 0xbc, 0xb5, 0x9c, 0x9b, 0xc2, 0x1d, 0x1f, 0x31, 0x8d, 0xc2, 0x10, 0x13, 0x4c, 0x8f, - 0xe1, 0xf3, 0xc2, 0xd4, 0x56, 0xa1, 0xd8, 0x15, 0x93, 0x6a, 0x6b, 0x42, 0x55, 0xbb, 0x0a, 0x10, - 0xa7, 0xea, 0x94, 0x17, 0x9f, 0x5a, 0x1f, 0x36, 0x52, 0x88, 0x1a, 0x58, 0xe4, 0x69, 0x18, 0x63, - 0xaa, 0x0f, 0x6d, 0xca, 0x7c, 0x06, 0xfa, 0x1c, 0x7f, 0x9d, 0x97, 0xa2, 0x84, 0x92, 0x17, 0x99, - 0x96, 0x1a, 0x2b, 0x2c, 0x32, 0x4d, 0xc1, 0xf9, 0x58, 0x4b, 0x8d, 0x61, 0x98, 0xc0, 0x64, 0xa2, - 0x53, 0xa6, 0x5f, 0xf0, 0xb5, 0xc1, 0x10, 0x9d, 0x2b, 0x1d, 0x28, 0x60, 0xdc, 0xae, 0x94, 0xd2, - 0x47, 0xf8, 0x9c, 0x2e, 0x1a, 0x76, 0xa5, 0x14, 0x1c, 0xfb, 0x6a, 0xb0, 0x8f, 0x91, 0x77, 0xb6, - 0x15, 0xe1, 0xaa, 0x3d, 0xe0, 0xb6, 0xf5, 0x17, 0xcd, 0xb3, 0x56, 0x8e, 0x73, 0x48, 0x8c, 0xda, - 0xa3, 0x1f, 0xb6, 0x86, 0x3b, 0x16, 0x7d, 0xd9, 0x82, 0xc9, 0xe4, 0x36, 0x94, 0xf7, 0xd5, 0x07, - 0xf9, 0x4b, 0x30, 0x1e, 0xb9, 0x1d, 0xea, 0xf7, 0xc4, 0x61, 0xbb, 0x20, 0x76, 0xf6, 0x75, 0x51, - 0x84, 0x0a, 0x66, 0xff, 0xc3, 0x31, 0x38, 0x77, 0xab, 0xe5, 0x7a, 0xe9, 0xac, 0x74, 0x59, 0x4f, - 0x50, 0x58, 0xc7, 0x7e, 0x82, 0x42, 0x47, 0x0d, 0xca, 0x07, 0x1e, 0xb2, 0xa3, 0x06, 0xd5, 0x6b, - 0x1b, 0x49, 0x5c, 0xf2, 0x87, 0x16, 0x3c, 0xe9, 0x34, 0xc5, 0xf9, 0xc1, 0x69, 0xcb, 0x52, 0x23, - 0x73, 0xba, 0x9c, 0xf9, 0xe1, 0x90, 0xda, 0x40, 0xff, 0xc7, 0xcf, 0x57, 0x0f, 0xe0, 0x2a, 0x46, - 0xc6, 0x4f, 0xc9, 0x2f, 0x78, 0xf2, 0x20, 0x54, 0x3c, 0x50, 0x7c, 0xf2, 0x57, 0x61, 0x2a, 0xf1, - 0xc1, 0xd2, 0x62, 0x5e, 0x16, 0x17, 0x1b, 0xf5, 0x24, 0x08, 0xd3, 0xb8, 0xe4, 0x7b, 0x16, 0xcc, - 0x08, 0xf3, 0x6c, 0x46, 0xd3, 0x88, 0x1b, 0x5d, 0x3f, 0xff, 0xa6, 0x59, 0x1c, 0xc0, 0x51, 0x34, - 0x4b, 0x6c, 0xaf, 0x1d, 0x80, 0x86, 0x03, 0x45, 0x9e, 0xbd, 0x0d, 0x1f, 0x38, 0xb4, 0xdd, 0x8f, - 0x95, 0x67, 0xff, 0x55, 0xb8, 0x78, 0xa0, 0xb4, 0xc7, 0x9a, 0xb1, 0xdf, 0xb5, 0x60, 0xc2, 0xcc, - 0xae, 0x45, 0x9e, 0x85, 0x52, 0xe4, 0x6f, 0x53, 0xef, 0x4e, 0xa0, 0xfc, 0xad, 0xf5, 0x6a, 0xb1, - 0xce, 0xcb, 0x71, 0x05, 0x35, 0x06, 0xc3, 0x6e, 0xb4, 0x5d, 0xea, 0x45, 0xcb, 0x4d, 0x39, 0x07, - 0x34, 0xf6, 0xa2, 0x28, 0x5f, 0x42, 0x8d, 0x21, 0x1c, 0x15, 0xd9, 0x6f, 0xe1, 0xf1, 0x2b, 0xed, - 0x0a, 0x86, 0xa3, 0x62, 0x0c, 0xc3, 0x04, 0x26, 0xb1, 0xb5, 0x9d, 0x78, 0x34, 0xbe, 0x1c, 0x4a, - 0xd9, 0x75, 0xbf, 0x6d, 0x41, 0x59, 0xdc, 0x73, 0x20, 0xdd, 0x4c, 0x79, 0x48, 0xa7, 0x2c, 0x31, - 0xd5, 0xb5, 0xe5, 0x2c, 0x0f, 0xe9, 0xcb, 0x30, 0xba, 0xed, 0x7a, 0xea, 0x4b, 0xf4, 0xde, 0xfe, - 0xaa, 0xeb, 0x35, 0x91, 0x43, 0xf4, 0xee, 0x5f, 0x18, 0xb8, 0xfb, 0x2f, 0x40, 0x59, 0x7b, 0xef, - 0xc8, 0x3d, 0x34, 0x76, 0x74, 0x56, 0x00, 0x8c, 0x71, 0xec, 0xdf, 0xb0, 0x60, 0x92, 0x07, 0xfc, - 0xc7, 0x46, 0x85, 0x17, 0xb4, 0x43, 0x9d, 0x90, 0xfb, 0x62, 0xd2, 0xa1, 0xee, 0xdd, 0xbd, 0xb9, - 0x8a, 0x48, 0x11, 0x90, 0xf4, 0xaf, 0xfb, 0x94, 0xb4, 0x44, 0x72, 0xb7, 0xbf, 0x91, 0x63, 0x1b, - 0xca, 0x62, 0x31, 0x15, 0x11, 0x8c, 0xe9, 0xd9, 0x6f, 0xc1, 0x84, 0x19, 0x4b, 0x47, 0x5e, 0x80, - 0x4a, 0xd7, 0xf5, 0x5a, 0xc9, 0x98, 0x6b, 0x7d, 0x5b, 0xb3, 0x16, 0x83, 0xd0, 0xc4, 0xe3, 0xd5, - 0xfc, 0xb8, 0x5a, 0xea, 0x92, 0x67, 0xcd, 0x37, 0xab, 0xc5, 0x7f, 0x6c, 0x0f, 0x20, 0x0e, 0x0c, - 0x3f, 0x92, 0x05, 0x6c, 0x4c, 0x5c, 0xa0, 0x08, 0x8d, 0x8e, 0x27, 0xf9, 0x18, 0x13, 0x23, 0xfc, - 0xdd, 0xbd, 0x83, 0x34, 0x46, 0x51, 0x8b, 0x3f, 0x21, 0x92, 0x11, 0x23, 0x9a, 0xfb, 0x13, 0x22, - 0x19, 0x3c, 0xde, 0xbb, 0x27, 0x44, 0xb2, 0x84, 0xf9, 0xf3, 0xf5, 0x84, 0xc8, 0x27, 0xe0, 0xb8, - 0xd9, 0x84, 0x99, 0x82, 0x76, 0xdf, 0xcc, 0xfa, 0xa1, 0x5b, 0x5c, 0xa6, 0xfd, 0x90, 0x50, 0xfb, - 0xf7, 0x46, 0x61, 0x3a, 0x6d, 0xa7, 0xc9, 0xdb, 0x05, 0x86, 0x7c, 0xcd, 0x82, 0x49, 0x27, 0x91, - 0xb9, 0x31, 0xa7, 0xf7, 0xc8, 0x12, 0x34, 0x8d, 0xcc, 0x81, 0x89, 0x72, 0x4c, 0xf1, 0x36, 0x75, - 0xad, 0xd1, 0xc1, 0xba, 0x16, 0xdb, 0x04, 0x5c, 0xae, 0xf6, 0x06, 0x54, 0xba, 0x73, 0x4f, 0xc7, - 0xe6, 0x66, 0x51, 0x8e, 0x1a, 0x83, 0x3c, 0x80, 0x71, 0xe1, 0x2c, 0xa3, 0xbc, 0xa2, 0x56, 0x73, - 0xb2, 0x27, 0x09, 0x7f, 0x9c, 0xb8, 0x0b, 0xc4, 0xff, 0x10, 0x15, 0x3b, 0xa6, 0x63, 0x43, 0xe0, - 0x78, 0x2d, 0xca, 0xdb, 0x5c, 0x5a, 0x40, 0x5e, 0xcf, 0xcb, 0x74, 0x87, 0x9a, 0x72, 0x35, 0x68, - 0x85, 0x32, 0x26, 0x53, 0x97, 0xa1, 0xc1, 0xd9, 0xfe, 0x15, 0x0b, 0x66, 0x06, 0x55, 0x64, 0x03, - 0x85, 0xaf, 0xba, 0x72, 0x44, 0x19, 0xa9, 0x20, 0x9c, 0x20, 0x42, 0x01, 0x23, 0x17, 0xa1, 0x40, - 0xf5, 0x46, 0xa5, 0xf3, 0x56, 0x5e, 0xf3, 0x9a, 0xc8, 0xca, 0xc9, 0x55, 0x18, 0x0d, 0x23, 0xda, - 0x4d, 0xc5, 0x3b, 0x8c, 0xb2, 0xc5, 0x33, 0xc3, 0x60, 0xcf, 0x71, 0xed, 0x0f, 0xc3, 0x31, 0x93, - 0x4f, 0xdb, 0xd7, 0x80, 0xa0, 0xdf, 0x6e, 0x6f, 0x38, 0x8d, 0xed, 0xbb, 0xae, 0xd7, 0xf4, 0xef, - 0xf3, 0x8d, 0x61, 0x01, 0xca, 0x81, 0x8c, 0x3f, 0x0f, 0xe5, 0x9c, 0xd2, 0x3b, 0x8b, 0x0a, 0x4c, - 0x0f, 0x31, 0xc6, 0xb1, 0xbf, 0x37, 0x02, 0xe3, 0x32, 0x59, 0xc2, 0x43, 0x08, 0xb6, 0xd9, 0x4e, - 0xb8, 0x38, 0x2c, 0xe7, 0x92, 0xe3, 0x61, 0x60, 0xa4, 0x4d, 0x98, 0x8a, 0xb4, 0x79, 0x35, 0x1f, - 0x76, 0x07, 0x87, 0xd9, 0x7c, 0xa7, 0x08, 0x53, 0xa9, 0xe4, 0x13, 0xa9, 0x3c, 0xf5, 0xd6, 0x7b, - 0x92, 0xa7, 0x9e, 0x84, 0x89, 0xb7, 0x0a, 0xf2, 0x73, 0xcd, 0xfd, 0xc9, 0xb3, 0x05, 0x79, 0x39, - 0x4d, 0x17, 0xdf, 0x3f, 0x4e, 0xd3, 0xff, 0xcd, 0x82, 0xc7, 0x07, 0xa6, 0x50, 0xe1, 0xc9, 0x08, - 0x83, 0x24, 0x54, 0xae, 0x17, 0x39, 0xa7, 0xa5, 0xd2, 0xee, 0x10, 0xe9, 0xfc, 0x71, 0x69, 0xf6, - 0xe4, 0x79, 0x98, 0xe0, 0x6b, 0x33, 0x5b, 0x39, 0xd9, 0xda, 0x2b, 0x6e, 0x73, 0xf9, 0xbd, 0x5e, - 0xdd, 0x28, 0xc7, 0x04, 0x96, 0xfd, 0x2d, 0x0b, 0x66, 0x06, 0xa5, 0xa6, 0x3b, 0x82, 0x9e, 0xfb, - 0x57, 0x52, 0xc1, 0x4a, 0x73, 0x7d, 0xc1, 0x4a, 0x29, 0x6b, 0xa3, 0x8a, 0x4b, 0x32, 0x0c, 0x7d, - 0x85, 0x43, 0x62, 0x71, 0x7e, 0xbf, 0x00, 0xd3, 0x52, 0xc4, 0xf8, 0x88, 0xf2, 0x62, 0x22, 0xc4, - 0xea, 0xa7, 0x52, 0x21, 0x56, 0xe7, 0xd3, 0xf8, 0x3f, 0x89, 0xaf, 0x7a, 0x7f, 0xc5, 0x57, 0x7d, - 0xb5, 0x08, 0x17, 0x32, 0x93, 0xc0, 0x91, 0xaf, 0x64, 0xec, 0x14, 0x77, 0x73, 0xce, 0x36, 0xa7, - 0x83, 0xc0, 0x4f, 0x37, 0x28, 0xe9, 0xd7, 0xcc, 0x60, 0x20, 0xb1, 0xfa, 0x6f, 0x9e, 0x42, 0xde, - 0xbc, 0xe3, 0xc6, 0x05, 0x3d, 0xdc, 0x77, 0xfc, 0xfe, 0x1c, 0x2c, 0xf5, 0x5f, 0x2d, 0xc0, 0x95, - 0xa3, 0xb6, 0xec, 0xfb, 0x34, 0x90, 0x36, 0x4c, 0x04, 0xd2, 0x3e, 0x24, 0xd5, 0xe6, 0x54, 0x62, - 0x6a, 0xff, 0xc1, 0xa8, 0xde, 0x77, 0xfb, 0x27, 0xec, 0x91, 0x2c, 0x2f, 0xe3, 0x4c, 0xf5, 0x55, - 0xaf, 0x1d, 0xc4, 0x7b, 0xc3, 0x78, 0x5d, 0x14, 0xbf, 0xbb, 0x37, 0x77, 0x36, 0xce, 0x96, 0x24, - 0x0b, 0x51, 0x55, 0x22, 0x57, 0xa0, 0x14, 0x08, 0xa8, 0x0a, 0x1d, 0x94, 0x0e, 0x5c, 0xa2, 0x0c, - 0x35, 0x94, 0x7c, 0xde, 0x38, 0x2b, 0x8c, 0x9e, 0x56, 0x52, 0xb0, 0x83, 0xfc, 0xd2, 0xde, 0x80, - 0x52, 0xa8, 0x52, 0xf2, 0x8b, 0xe9, 0xf4, 0xdc, 0x11, 0x23, 0x52, 0x9d, 0x0d, 0xda, 0x56, 0xf9, - 0xf9, 0xc5, 0xf7, 0xe9, 0xec, 0xfd, 0x9a, 0x24, 0xb1, 0xb5, 0x65, 0x42, 0xdc, 0x9b, 0x41, 0xbf, - 0x55, 0x82, 0x44, 0x30, 0x2e, 0xdf, 0xe5, 0x96, 0xc7, 0xd9, 0xd5, 0x9c, 0x42, 0xbb, 0xa4, 0xe3, - 0x3f, 0x3f, 0xf0, 0x2b, 0x8b, 0x9c, 0x62, 0x65, 0xff, 0xc0, 0x82, 0x8a, 0x1c, 0x23, 0x0f, 0x21, - 0x34, 0xf7, 0x5e, 0x32, 0x34, 0xf7, 0x5a, 0x2e, 0x4b, 0xf8, 0x80, 0xb8, 0xdc, 0x7b, 0x30, 0x61, - 0xa6, 0x63, 0x25, 0x9f, 0x34, 0xb6, 0x20, 0x6b, 0x98, 0x94, 0x83, 0x6a, 0x93, 0x8a, 0xb7, 0x27, - 0xfb, 0x9f, 0x96, 0x75, 0x2b, 0xf2, 0x83, 0xb3, 0x39, 0xf2, 0xad, 0x03, 0x47, 0xbe, 0x39, 0xf0, - 0x46, 0xf2, 0x1f, 0x78, 0xaf, 0x41, 0x49, 0x2d, 0x8b, 0x52, 0x9b, 0x7a, 0xca, 0x8c, 0x04, 0x60, - 0x2a, 0x19, 0x23, 0x66, 0x4c, 0x17, 0x7e, 0x00, 0x8e, 0xef, 0x09, 0xd4, 0x72, 0xad, 0xc9, 0x90, - 0x37, 0xa1, 0x72, 0xdf, 0x0f, 0xb6, 0xdb, 0xbe, 0xc3, 0xdf, 0x41, 0x81, 0x3c, 0x9c, 0x4f, 0xb4, - 0xad, 0x5f, 0x84, 0x63, 0xdd, 0x8d, 0xe9, 0xa3, 0xc9, 0x8c, 0x54, 0x61, 0xaa, 0xe3, 0x7a, 0x48, - 0x9d, 0xa6, 0x8e, 0xc0, 0x1d, 0x15, 0x6f, 0x10, 0x28, 0xdd, 0x7e, 0x35, 0x09, 0xc6, 0x34, 0x3e, - 0xb7, 0xcb, 0x05, 0x09, 0x53, 0x87, 0x4c, 0x34, 0xbe, 0x36, 0xfc, 0x60, 0x4c, 0x9a, 0x4f, 0x44, - 0x3c, 0x52, 0xb2, 0x1c, 0x53, 0xbc, 0xc9, 0xe7, 0xa0, 0x14, 0xaa, 0x17, 0x6f, 0x8b, 0x39, 0x9e, - 0x7a, 0xf4, 0xab, 0xb7, 0xba, 0x2b, 0xf5, 0xb3, 0xb7, 0x9a, 0x21, 0x59, 0x81, 0xf3, 0xca, 0x76, - 0x93, 0x78, 0xbc, 0x73, 0x2c, 0x4e, 0x96, 0x87, 0x19, 0x70, 0xcc, 0xac, 0xc5, 0x74, 0x5b, 0x9e, - 0xe6, 0x58, 0x5c, 0xf6, 0x1b, 0xf7, 0xe3, 0x7c, 0xfe, 0x35, 0x51, 0x42, 0x0f, 0x0a, 0x30, 0x2f, - 0x0d, 0x11, 0x60, 0x5e, 0x87, 0x0b, 0x69, 0x10, 0xcf, 0x82, 0xc8, 0x13, 0x2f, 0x1a, 0x5b, 0xe8, - 0x5a, 0x16, 0x12, 0x66, 0xd7, 0x25, 0x77, 0xa1, 0x1c, 0x50, 0x7e, 0xca, 0xab, 0x2a, 0x3f, 0xc9, - 0x63, 0x7b, 0x84, 0xa3, 0x22, 0x80, 0x31, 0x2d, 0xd6, 0xef, 0x4e, 0xf2, 0x55, 0x80, 0xd7, 0x72, - 0x7c, 0x12, 0x5f, 0xf6, 0xfd, 0x80, 0xec, 0xa4, 0xf6, 0xbf, 0x9f, 0x82, 0x33, 0x09, 0x03, 0x14, - 0x79, 0x0a, 0x8a, 0x3c, 0x2d, 0x24, 0x5f, 0xad, 0x4a, 0xf1, 0x8a, 0x2a, 0x1a, 0x47, 0xc0, 0xc8, - 0x2f, 0x5b, 0x30, 0xd5, 0x4d, 0x5c, 0x6f, 0xa9, 0x85, 0x7c, 0x48, 0x9b, 0x76, 0xf2, 0xce, 0xcc, - 0x78, 0x4f, 0x27, 0xc9, 0x0c, 0xd3, 0xdc, 0xd9, 0x7a, 0x20, 0xc3, 0x2a, 0xda, 0x34, 0xe0, 0xd8, - 0x52, 0xd1, 0xd3, 0x24, 0x16, 0x93, 0x60, 0x4c, 0xe3, 0xb3, 0x1e, 0xe6, 0x5f, 0x37, 0xcc, 0xb3, - 0xc7, 0x55, 0x45, 0x00, 0x63, 0x5a, 0xe4, 0x65, 0x98, 0x94, 0xc9, 0xe0, 0xd7, 0xfc, 0xe6, 0x0d, - 0x27, 0xdc, 0x92, 0x47, 0x3e, 0x7d, 0x44, 0x5d, 0x4c, 0x40, 0x31, 0x85, 0xcd, 0xbf, 0x2d, 0xce, - 0xb8, 0xcf, 0x09, 0x8c, 0x25, 0x9f, 0x1b, 0x5a, 0x4c, 0x82, 0x31, 0x8d, 0x4f, 0x9e, 0x35, 0xb6, - 0x21, 0xe1, 0x80, 0xa3, 0x57, 0x83, 0x8c, 0xad, 0xa8, 0x0a, 0x53, 0x3d, 0x7e, 0x42, 0x6e, 0x2a, - 0xa0, 0x9c, 0x8f, 0x9a, 0xe1, 0x9d, 0x24, 0x18, 0xd3, 0xf8, 0xe4, 0x25, 0x38, 0x13, 0xb0, 0xc5, - 0x56, 0x13, 0x10, 0x5e, 0x39, 0xda, 0x99, 0x02, 0x4d, 0x20, 0x26, 0x71, 0xc9, 0x2b, 0x70, 0x36, - 0x4e, 0x18, 0xac, 0x08, 0x08, 0x37, 0x1d, 0x9d, 0xbd, 0xb2, 0x9a, 0x46, 0xc0, 0xfe, 0x3a, 0xe4, - 0xaf, 0xc3, 0xb4, 0xd1, 0x12, 0xcb, 0x5e, 0x93, 0x3e, 0x90, 0x49, 0x5d, 0xf9, 0xf3, 0x79, 0x8b, - 0x29, 0x18, 0xf6, 0x61, 0x93, 0x8f, 0xc1, 0x64, 0xc3, 0x6f, 0xb7, 0xf9, 0x1a, 0x27, 0x9e, 0xba, - 0x11, 0xd9, 0x5b, 0x45, 0x9e, 0xdb, 0x04, 0x04, 0x53, 0x98, 0xe4, 0x26, 0x10, 0x7f, 0x83, 0xa9, - 0x57, 0xb4, 0xf9, 0x0a, 0xf5, 0xa8, 0xd4, 0x38, 0xce, 0x24, 0x83, 0xba, 0x6e, 0xf7, 0x61, 0x60, - 0x46, 0x2d, 0x9e, 0xfc, 0xd2, 0x08, 0x82, 0x9f, 0xcc, 0x23, 0xdd, 0x7e, 0xda, 0x9e, 0x73, 0x68, - 0x04, 0x7c, 0x00, 0x63, 0xc2, 0x23, 0x22, 0x9f, 0x34, 0xae, 0xe6, 0xab, 0x17, 0xf1, 0x1e, 0x21, - 0x4a, 0x51, 0x72, 0x22, 0xbf, 0x00, 0xe5, 0x0d, 0xf5, 0x04, 0x12, 0xcf, 0xdd, 0x3a, 0xf4, 0xbe, - 0x98, 0x7a, 0xcd, 0x2b, 0xb6, 0x57, 0x68, 0x00, 0xc6, 0x2c, 0xc9, 0xd3, 0x50, 0xb9, 0xb1, 0x56, - 0xd5, 0xa3, 0xf0, 0x2c, 0xef, 0xfd, 0x51, 0x56, 0x05, 0x4d, 0x00, 0x9b, 0x61, 0x5a, 0x7d, 0x23, - 0x49, 0xa7, 0x89, 0x0c, 0x6d, 0x8c, 0x61, 0x73, 0x17, 0x19, 0xac, 0xcf, 0x9c, 0x4b, 0x61, 0xcb, - 0x72, 0xd4, 0x18, 0xe4, 0x0d, 0xa8, 0xc8, 0xfd, 0x82, 0xaf, 0x4d, 0xe7, 0x4f, 0x96, 0x60, 0x01, - 0x63, 0x12, 0x68, 0xd2, 0xe3, 0xd7, 0xf7, 0xfc, 0x65, 0x18, 0x7a, 0xbd, 0xd7, 0x6e, 0xcf, 0x5c, - 0xe0, 0xeb, 0x66, 0x7c, 0x7d, 0x1f, 0x83, 0xd0, 0xc4, 0x23, 0xcf, 0x29, 0x97, 0xc8, 0x47, 0x13, - 0xfe, 0x0c, 0xda, 0x25, 0x52, 0x2b, 0xdd, 0x03, 0x62, 0xb0, 0x1e, 0x3b, 0xc4, 0x17, 0x71, 0x03, - 0x66, 0x95, 0xc6, 0xd7, 0x3f, 0x49, 0x66, 0x66, 0x12, 0xb6, 0xa3, 0xd9, 0xbb, 0x03, 0x31, 0xf1, - 0x00, 0x2a, 0x64, 0x03, 0x0a, 0x4e, 0x7b, 0x63, 0xe6, 0xf1, 0x3c, 0x54, 0xd7, 0xea, 0x4a, 0x4d, - 0x8e, 0x28, 0xee, 0x37, 0x5d, 0x5d, 0xa9, 0x21, 0x23, 0x4e, 0x5c, 0x18, 0x75, 0xda, 0x1b, 0xe1, - 0xcc, 0x2c, 0x9f, 0xb3, 0xb9, 0x31, 0x89, 0x8d, 0x07, 0x2b, 0xb5, 0x10, 0x39, 0x0b, 0xfb, 0x0b, - 0x23, 0xfa, 0x96, 0x48, 0x67, 0xd2, 0x7f, 0xcb, 0x9c, 0x40, 0xe2, 0xb8, 0x73, 0x3b, 0xb7, 0x09, - 0x24, 0xd5, 0x8b, 0x33, 0x03, 0xa7, 0x4f, 0x57, 0x2f, 0x19, 0xb9, 0x24, 0xc2, 0x4b, 0xbe, 0x12, - 0x20, 0x4e, 0xcf, 0xc9, 0x05, 0xc3, 0xfe, 0x62, 0x45, 0x5b, 0x41, 0x53, 0x6e, 0x82, 0x01, 0x14, - 0xdd, 0x30, 0x72, 0xfd, 0x1c, 0xf3, 0x0e, 0xa4, 0xd2, 0xeb, 0xf3, 0xb0, 0x26, 0x0e, 0x40, 0xc1, - 0x8a, 0xf1, 0xf4, 0x5a, 0xae, 0xf7, 0x40, 0x7e, 0xfe, 0x6b, 0xb9, 0x3b, 0xb9, 0x09, 0x9e, 0x1c, - 0x80, 0x82, 0x15, 0xb9, 0x27, 0x06, 0x75, 0x21, 0x8f, 0xbe, 0xae, 0xae, 0xd4, 0x52, 0xfc, 0x92, - 0x83, 0xfb, 0x1e, 0x14, 0xc2, 0x8e, 0x2b, 0xd5, 0xa5, 0x21, 0x79, 0xd5, 0x57, 0x97, 0xb3, 0x78, - 0xd5, 0x57, 0x97, 0x91, 0x31, 0xe1, 0x57, 0xfd, 0x4e, 0x67, 0xc3, 0x09, 0x43, 0xa7, 0xa9, 0xad, - 0x33, 0x43, 0x5e, 0xf5, 0x57, 0x35, 0xbd, 0x14, 0x6b, 0x7e, 0xd5, 0x1f, 0x43, 0xd1, 0xe0, 0x4c, - 0xde, 0x84, 0x71, 0x47, 0x3c, 0xd1, 0x2a, 0x83, 0x3c, 0xf2, 0x79, 0x77, 0x38, 0x25, 0x01, 0x37, - 0xd3, 0x48, 0x10, 0x2a, 0x86, 0x8c, 0x77, 0x14, 0x38, 0x74, 0xd3, 0xdd, 0x96, 0xc6, 0xa1, 0xfa, - 0xd0, 0x8f, 0x08, 0x31, 0x62, 0x59, 0xbc, 0x25, 0x08, 0x15, 0x43, 0xf2, 0x65, 0x0b, 0xce, 0x74, - 0x1c, 0xcf, 0xd1, 0xa1, 0xbb, 0xf9, 0x04, 0x78, 0x9b, 0xc1, 0xc0, 0xb1, 0x86, 0xb8, 0x6a, 0x32, - 0xc2, 0x24, 0x5f, 0xb2, 0x03, 0x63, 0x0e, 0x7f, 0x3c, 0x5a, 0x1e, 0xc5, 0x30, 0x8f, 0x87, 0xa8, - 0x53, 0x6d, 0xc0, 0x17, 0x17, 0xf9, 0x44, 0xb5, 0xe4, 0x46, 0x7e, 0xd3, 0x82, 0x71, 0x11, 0x7f, - 0xc0, 0x14, 0x52, 0xf6, 0xed, 0x9f, 0x39, 0x85, 0x67, 0x3a, 0x64, 0x6c, 0x84, 0x74, 0xce, 0xfa, - 0xa0, 0xf6, 0xad, 0x16, 0xa5, 0x07, 0x46, 0x47, 0x28, 0xe9, 0x98, 0xea, 0xdb, 0x71, 0x1e, 0x24, - 0x9e, 0x88, 0x32, 0x55, 0xdf, 0xd5, 0x14, 0x0c, 0xfb, 0xb0, 0x67, 0x3f, 0x06, 0x13, 0xa6, 0x1c, - 0xc7, 0x8a, 0xb0, 0xf8, 0x51, 0x01, 0x80, 0x77, 0x95, 0x48, 0xf7, 0xd3, 0xe1, 0x59, 0xc9, 0xb7, - 0xfc, 0x66, 0x4e, 0x4f, 0xd5, 0x1a, 0x59, 0x7b, 0x40, 0xa6, 0x20, 0xdf, 0xf2, 0x9b, 0x28, 0x99, - 0x90, 0x16, 0x8c, 0x76, 0x9d, 0x68, 0x2b, 0xff, 0x14, 0x41, 0x25, 0x11, 0xf7, 0x1e, 0x6d, 0x21, - 0x67, 0x40, 0xde, 0xb6, 0x62, 0xbf, 0xa7, 0x42, 0x1e, 0x89, 0x95, 0xe3, 0x36, 0x9b, 0x97, 0x9e, - 0x4e, 0xa9, 0xfc, 0xc2, 0x69, 0xff, 0xa7, 0xd9, 0x77, 0x2c, 0x98, 0x30, 0x51, 0x33, 0xba, 0xe9, - 0xe7, 0xcd, 0x6e, 0xca, 0xb3, 0x3d, 0xcc, 0x1e, 0xff, 0x1f, 0x16, 0x00, 0xf6, 0xbc, 0x7a, 0xaf, - 0xd3, 0x61, 0x6a, 0xbb, 0x0e, 0x24, 0xb1, 0x8e, 0x1c, 0x48, 0x32, 0x72, 0xcc, 0x40, 0x92, 0xc2, - 0xb1, 0x02, 0x49, 0x46, 0x8f, 0x1f, 0x48, 0x52, 0x1c, 0x1c, 0x48, 0x62, 0x7f, 0xc3, 0x82, 0xb3, - 0x7d, 0xfb, 0x15, 0xd3, 0xa4, 0x03, 0xdf, 0x8f, 0x06, 0xf8, 0xcf, 0x62, 0x0c, 0x42, 0x13, 0x8f, - 0x2c, 0xc1, 0xb4, 0x7c, 0x83, 0xa7, 0xde, 0x6d, 0xbb, 0x99, 0xe9, 0x9b, 0xd6, 0x53, 0x70, 0xec, - 0xab, 0x61, 0xff, 0x6b, 0x0b, 0x2a, 0x46, 0xd2, 0x07, 0xee, 0x73, 0xc6, 0x6f, 0xbc, 0xd2, 0x3e, - 0x67, 0xfc, 0xaa, 0x4b, 0xc0, 0xc4, 0x35, 0x74, 0xcb, 0x78, 0xa1, 0x21, 0xbe, 0x86, 0x66, 0xa5, - 0x28, 0xa1, 0x22, 0xf7, 0xbe, 0x74, 0x3e, 0x2b, 0x98, 0xb9, 0xf7, 0x69, 0x57, 0xb8, 0x9a, 0xc5, - 0x2e, 0x6e, 0xa3, 0x87, 0xbb, 0xb8, 0x15, 0xb3, 0x5d, 0xdc, 0xec, 0xdb, 0x30, 0x21, 0x7c, 0xc3, - 0x5f, 0xa5, 0xbb, 0x47, 0x7e, 0xeb, 0x99, 0x8d, 0xf6, 0x94, 0xcf, 0x1c, 0xab, 0xce, 0xca, 0x6d, - 0x07, 0xe2, 0x44, 0xd4, 0x47, 0xa0, 0x76, 0x15, 0x40, 0xa7, 0xc4, 0x17, 0x8e, 0x78, 0xa5, 0x78, - 0x40, 0xea, 0xbc, 0xf9, 0x4d, 0x34, 0xb0, 0xec, 0x7f, 0x62, 0x41, 0xea, 0x8d, 0x31, 0xe3, 0x92, - 0xc7, 0x1a, 0x78, 0xc9, 0x63, 0x5e, 0x0c, 0x8c, 0x1c, 0x78, 0x31, 0x70, 0x13, 0x48, 0x87, 0xcd, - 0xb6, 0xe4, 0x5a, 0x5e, 0x48, 0x3e, 0xc5, 0xb2, 0xda, 0x87, 0x81, 0x19, 0xb5, 0xec, 0x7f, 0x2c, - 0x84, 0x35, 0x5f, 0x1d, 0x3b, 0xbc, 0x55, 0x7a, 0x50, 0xe4, 0xa4, 0xa4, 0x89, 0x6f, 0x48, 0xf3, - 0x78, 0x7f, 0x36, 0xb8, 0x78, 0xac, 0xc8, 0x55, 0x85, 0x73, 0xb3, 0x7f, 0x5f, 0xc8, 0x6a, 0x3e, - 0x4b, 0x76, 0xb8, 0xac, 0x9d, 0xa4, 0xac, 0x37, 0xf2, 0x5a, 0x8e, 0xb3, 0x65, 0x24, 0xf3, 0x00, - 0x5d, 0x1a, 0x34, 0xa8, 0x17, 0xa9, 0xe8, 0xba, 0xa2, 0x8c, 0xf3, 0xd6, 0xa5, 0x68, 0x60, 0xd8, - 0x5f, 0x67, 0x73, 0x34, 0x7e, 0x68, 0x9d, 0x5c, 0x49, 0xfb, 0x1a, 0xa7, 0xe7, 0x9f, 0x76, 0x35, - 0x36, 0x42, 0xae, 0x46, 0x0e, 0x09, 0xb9, 0x7a, 0x06, 0xc6, 0x03, 0xbf, 0x4d, 0xab, 0x81, 0x97, - 0x76, 0x03, 0x42, 0x56, 0x8c, 0xb7, 0x50, 0xc1, 0xed, 0x5f, 0xb7, 0x60, 0x3a, 0x1d, 0x14, 0x9a, - 0xbb, 0x03, 0xb4, 0x99, 0xb9, 0xa2, 0x70, 0xfc, 0xcc, 0x15, 0xf6, 0x9f, 0x16, 0x61, 0x3a, 0xfd, - 0x00, 0x24, 0xe3, 0xec, 0x72, 0x7b, 0x5e, 0x6a, 0x83, 0x11, 0x86, 0x3c, 0x01, 0xd3, 0xe3, 0x65, - 0x64, 0xe0, 0x78, 0xb9, 0x0e, 0x65, 0xbf, 0xab, 0x6c, 0x0a, 0x42, 0xb8, 0x2b, 0xca, 0x1e, 0x74, - 0x5b, 0x01, 0xde, 0xdd, 0x9b, 0x3b, 0x17, 0x0b, 0xa0, 0x8b, 0x31, 0xae, 0x4a, 0x7e, 0x46, 0x19, - 0x43, 0x46, 0x13, 0xb9, 0xa0, 0xb4, 0x31, 0x64, 0x2a, 0xae, 0x3f, 0xc8, 0x1e, 0x52, 0x3c, 0x4e, - 0x4e, 0x9a, 0xb1, 0x1c, 0x73, 0xd2, 0xdc, 0x85, 0xb2, 0x34, 0xdf, 0x9e, 0x28, 0x17, 0x0b, 0x27, - 0x7c, 0x47, 0x11, 0xc0, 0x98, 0x56, 0x2a, 0xd9, 0x4d, 0x29, 0xd7, 0x64, 0x37, 0x2f, 0xc1, 0xf8, - 0x86, 0xd3, 0xd8, 0xf6, 0x37, 0x37, 0xf9, 0x11, 0xa0, 0x5c, 0xfb, 0x80, 0x6a, 0xb8, 0x9a, 0x28, - 0xce, 0x18, 0x52, 0xaa, 0x06, 0x5b, 0xe7, 0xa9, 0xf2, 0x78, 0x56, 0x96, 0x65, 0xbd, 0xce, 0x6b, - 0x5f, 0xe8, 0x10, 0x0d, 0x2c, 0xf2, 0x2c, 0x94, 0x9a, 0x6e, 0x28, 0x9e, 0x28, 0xaf, 0x24, 0x1d, - 0xe2, 0x97, 0x64, 0x39, 0x6a, 0x0c, 0xf2, 0xb2, 0x76, 0x88, 0x9b, 0x88, 0x63, 0x55, 0xb4, 0x33, - 0xdc, 0x01, 0xb1, 0x2a, 0xd2, 0xdf, 0xf7, 0x6d, 0x36, 0x31, 0x23, 0xb7, 0xb1, 0xed, 0x7a, 0x22, - 0xc1, 0x09, 0x5b, 0x2d, 0x9e, 0x81, 0x71, 0x2a, 0x1f, 0x49, 0x17, 0xb7, 0x33, 0x7a, 0xb0, 0xa8, - 0xb7, 0xd1, 0x15, 0x9c, 0x54, 0x61, 0x4a, 0xdd, 0x49, 0xab, 0x2b, 0x35, 0x91, 0x98, 0x49, 0x9b, - 0xf0, 0x97, 0x92, 0x60, 0x4c, 0xe3, 0xdb, 0x9f, 0x87, 0x8a, 0xa1, 0xeb, 0x71, 0xb5, 0xe8, 0x81, - 0xd3, 0xe8, 0x73, 0x61, 0xbf, 0xc6, 0x0a, 0x51, 0xc0, 0xf8, 0xcd, 0x9f, 0x88, 0xbf, 0x4c, 0xa9, - 0x13, 0x32, 0xea, 0x52, 0x42, 0x19, 0xb1, 0x80, 0xb6, 0xe8, 0x03, 0xf5, 0x2e, 0x8d, 0x22, 0x86, - 0xac, 0x10, 0x05, 0xcc, 0x7e, 0x16, 0x4a, 0x2a, 0x7d, 0x1e, 0xcf, 0x41, 0xa5, 0x6e, 0xa5, 0xcc, - 0x1c, 0x54, 0x7e, 0x10, 0x21, 0x87, 0xd8, 0xaf, 0x43, 0x49, 0x65, 0xf9, 0x3b, 0x1c, 0x9b, 0x6d, - 0xbf, 0xa1, 0xe7, 0xde, 0xf0, 0xc3, 0x48, 0xa5, 0x26, 0x14, 0x17, 0xe7, 0xb7, 0x96, 0x79, 0x19, - 0x6a, 0xa8, 0xfd, 0x67, 0x16, 0x54, 0xd6, 0xd7, 0x57, 0xb4, 0x3d, 0x0d, 0xe1, 0xd1, 0x50, 0xb4, - 0x50, 0x75, 0x33, 0xa2, 0xa6, 0x87, 0x8e, 0x58, 0x89, 0x66, 0xf7, 0xf7, 0xe6, 0x1e, 0xad, 0x67, - 0x62, 0xe0, 0x80, 0x9a, 0x64, 0x19, 0xce, 0x99, 0x10, 0x99, 0x32, 0x46, 0xea, 0x05, 0xfc, 0x55, - 0xfd, 0x7a, 0x3f, 0x18, 0xb3, 0xea, 0xa4, 0x49, 0x49, 0x2d, 0xda, 0x7c, 0xa0, 0xbf, 0xde, 0x0f, - 0xc6, 0xac, 0x3a, 0xf6, 0x73, 0x30, 0x95, 0x72, 0x1d, 0x39, 0x42, 0xaa, 0xae, 0xdf, 0x2d, 0xc0, - 0x84, 0xe9, 0x41, 0x70, 0x84, 0x3d, 0xfb, 0xe8, 0xaa, 0x50, 0xc6, 0xad, 0x7f, 0xe1, 0x98, 0xb7, - 0xfe, 0xa6, 0x9b, 0xc5, 0xe8, 0xe9, 0xba, 0x59, 0x14, 0xf3, 0x71, 0xb3, 0x30, 0xdc, 0x81, 0xc6, - 0x1e, 0x9e, 0x3b, 0xd0, 0xef, 0x14, 0x61, 0x32, 0x99, 0xfb, 0xf9, 0x08, 0x3d, 0xf9, 0x6c, 0x5f, - 0x4f, 0x1e, 0xf3, 0x9a, 0xb1, 0x30, 0xec, 0x35, 0xe3, 0xe8, 0xb0, 0xd7, 0x8c, 0xc5, 0x13, 0x5c, - 0x33, 0xf6, 0x5f, 0x12, 0x8e, 0x1d, 0xf9, 0x92, 0xf0, 0xe3, 0x7a, 0xa3, 0x18, 0x4f, 0x78, 0xd6, - 0xc5, 0x9b, 0x05, 0x49, 0x76, 0xc3, 0xa2, 0xdf, 0xcc, 0xf4, 0xf8, 0x2e, 0x1d, 0xa2, 0x3e, 0x04, - 0x99, 0x8e, 0xce, 0xc7, 0xf7, 0x64, 0x78, 0xf4, 0x18, 0x4e, 0xce, 0x2f, 0x40, 0x45, 0x8e, 0x27, - 0x7e, 0xa6, 0x85, 0xe4, 0x79, 0xb8, 0x1e, 0x83, 0xd0, 0xc4, 0x63, 0x03, 0xa3, 0x1b, 0x4f, 0x10, - 0x7e, 0xe1, 0x5d, 0x49, 0x5e, 0x78, 0xaf, 0x25, 0xc1, 0x98, 0xc6, 0xb7, 0x3f, 0x07, 0x17, 0x32, - 0x2d, 0x9b, 0xfc, 0x56, 0x89, 0x9f, 0x85, 0x68, 0x53, 0x22, 0x18, 0x62, 0xa4, 0x1e, 0xa3, 0x9a, - 0xbd, 0x3b, 0x10, 0x13, 0x0f, 0xa0, 0x62, 0xff, 0x76, 0x01, 0x26, 0x93, 0x8f, 0xb3, 0x93, 0xfb, - 0xfa, 0x1e, 0x24, 0x97, 0x2b, 0x18, 0x41, 0xd6, 0xc8, 0x27, 0x3c, 0xf0, 0xfe, 0xf4, 0x3e, 0x1f, - 0x5f, 0x1b, 0x3a, 0xb9, 0xf1, 0xe9, 0x31, 0x96, 0x17, 0x97, 0x92, 0x1d, 0x7f, 0xe2, 0x3c, 0x4e, - 0x29, 0x20, 0xcd, 0x63, 0xb9, 0x73, 0x8f, 0xa3, 0xbf, 0x35, 0x2b, 0x34, 0xd8, 0xb2, 0xbd, 0x65, - 0x87, 0x06, 0xee, 0xa6, 0x4b, 0x9b, 0xf2, 0xad, 0x09, 0xbe, 0x72, 0xbf, 0x2e, 0xcb, 0x50, 0x43, - 0xed, 0xb7, 0x47, 0xa0, 0xcc, 0x33, 0x25, 0x5e, 0x0f, 0xfc, 0x0e, 0x7f, 0xb6, 0x37, 0x34, 0x4c, - 0x11, 0xb2, 0xdb, 0x6e, 0xe6, 0xf1, 0x4e, 0x96, 0xa0, 0x28, 0xa3, 0x48, 0x8c, 0x12, 0x4c, 0x70, - 0x24, 0x5d, 0x28, 0x6d, 0xca, 0xcc, 0xee, 0xb2, 0xef, 0x86, 0xcc, 0x4e, 0xac, 0xf2, 0xc4, 0x8b, - 0x26, 0x50, 0xff, 0x50, 0x73, 0xb1, 0x1d, 0x98, 0x4a, 0xa5, 0xba, 0xca, 0x3d, 0x1f, 0xfc, 0xff, - 0x1a, 0x85, 0xb2, 0x0e, 0xee, 0x24, 0x1f, 0x4d, 0xd8, 0x85, 0x63, 0x1d, 0x5e, 0x1a, 0x74, 0xd9, - 0xb9, 0x49, 0x23, 0xa7, 0x6c, 0xbc, 0x17, 0xa1, 0xd0, 0x0b, 0xda, 0x69, 0xc3, 0xcf, 0x1d, 0x5c, - 0x41, 0x56, 0x6e, 0x06, 0xa4, 0x16, 0x1e, 0x6e, 0x40, 0xea, 0x65, 0x18, 0xdd, 0xf0, 0x9b, 0xbb, - 0xe9, 0x37, 0x28, 0x6b, 0x7e, 0x73, 0x17, 0x39, 0x84, 0xbc, 0x0c, 0x93, 0x32, 0xca, 0x56, 0x29, - 0x31, 0x45, 0xae, 0xa7, 0x6a, 0x7f, 0xa0, 0xf5, 0x04, 0x14, 0x53, 0xd8, 0x6c, 0x97, 0x65, 0xc7, - 0x06, 0x9e, 0xe5, 0x7f, 0x2c, 0xe9, 0x3c, 0x70, 0xb3, 0x7e, 0xfb, 0x16, 0xb7, 0x4f, 0x6b, 0x8c, - 0x44, 0x20, 0xef, 0xf8, 0xa1, 0x81, 0xbc, 0x4b, 0x82, 0x36, 0x93, 0x96, 0xef, 0x28, 0x13, 0xb5, - 0x2b, 0x8a, 0x2e, 0x2b, 0x3b, 0xf0, 0xec, 0xa2, 0x6b, 0x66, 0x85, 0x3c, 0x97, 0xdf, 0xbb, 0x90, - 0x67, 0xfb, 0x0e, 0x4c, 0xa5, 0xfa, 0x4f, 0xd9, 0x0d, 0xad, 0x6c, 0xbb, 0xe1, 0xd1, 0x5e, 0xb1, - 0xfc, 0xe7, 0x16, 0x9c, 0xed, 0x5b, 0x91, 0x8e, 0x1a, 0x7b, 0x9e, 0xde, 0x1b, 0x47, 0x4e, 0xbe, - 0x37, 0x16, 0x8e, 0xb7, 0x37, 0xd6, 0x36, 0xbe, 0xfb, 0xc3, 0x4b, 0x8f, 0x7c, 0xff, 0x87, 0x97, - 0x1e, 0xf9, 0x83, 0x1f, 0x5e, 0x7a, 0xe4, 0xed, 0xfd, 0x4b, 0xd6, 0x77, 0xf7, 0x2f, 0x59, 0xdf, - 0xdf, 0xbf, 0x64, 0xfd, 0xc1, 0xfe, 0x25, 0xeb, 0xbf, 0xee, 0x5f, 0xb2, 0xbe, 0xf1, 0xc7, 0x97, - 0x1e, 0xf9, 0xe4, 0xc7, 0xe3, 0x9e, 0x5a, 0x50, 0x3d, 0xc5, 0x7f, 0x7c, 0x48, 0xf5, 0xcb, 0x42, - 0x77, 0xbb, 0xb5, 0xc0, 0x7a, 0x6a, 0x41, 0x97, 0xa8, 0x9e, 0xfa, 0x7f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x68, 0x77, 0xe5, 0x89, 0x8f, 0xae, 0x00, 0x00, + // 9012 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x5d, 0x6c, 0x24, 0xd9, + 0x75, 0x18, 0xac, 0x62, 0xb3, 0xc9, 0xee, 0xd3, 0x1c, 0x92, 0x73, 0x67, 0x66, 0x87, 0xcb, 0xdd, + 0x19, 0x8e, 0x6a, 0xfd, 0xed, 0x37, 0x6b, 0xad, 0x48, 0x69, 0x76, 0xd7, 0x59, 0x69, 0x95, 0x4d, + 0xba, 0xc9, 0x99, 0x1d, 0xce, 0x92, 0x33, 0xdc, 0xd3, 0x9c, 0x1d, 0xeb, 0x67, 0x6d, 0x15, 0xbb, + 0x2f, 0x9b, 0x35, 0xec, 0xae, 0x6a, 0x55, 0x55, 0x73, 0x86, 0xab, 0x85, 0xb5, 0x92, 0xb0, 0x96, + 0xac, 0x48, 0xb0, 0x62, 0x5b, 0x08, 0xf2, 0x83, 0x40, 0x31, 0x1c, 0x38, 0x7f, 0x0f, 0x81, 0xa1, + 0x20, 0x79, 0x30, 0x90, 0x20, 0x8a, 0x03, 0x19, 0x88, 0x02, 0xf9, 0x21, 0x91, 0x13, 0xc0, 0x74, + 0x44, 0xe7, 0x25, 0x46, 0x02, 0xc1, 0x81, 0x03, 0x21, 0xfb, 0x60, 0x04, 0xf7, 0xb7, 0x6e, 0x55, + 0x57, 0xf3, 0xaf, 0x8b, 0xb3, 0xeb, 0xc4, 0x6f, 0xdd, 0xf7, 0x9c, 0x7b, 0xce, 0xa9, 0xfb, 0x7b, + 0xee, 0xb9, 0xe7, 0x9c, 0x0b, 0x2b, 0x2d, 0x37, 0xda, 0xea, 0x6d, 0xcc, 0x37, 0xfc, 0xce, 0x82, + 0x13, 0xb4, 0xfc, 0x6e, 0xe0, 0xdf, 0xe7, 0x3f, 0x3e, 0x1c, 0xf8, 0xed, 0xb6, 0xdf, 0x8b, 0xc2, + 0x85, 0xee, 0x76, 0x6b, 0xc1, 0xe9, 0xba, 0xe1, 0x82, 0x2e, 0xd9, 0xf9, 0xa8, 0xd3, 0xee, 0x6e, + 0x39, 0x1f, 0x5d, 0x68, 0x51, 0x8f, 0x06, 0x4e, 0x44, 0x9b, 0xf3, 0xdd, 0xc0, 0x8f, 0x7c, 0xf2, + 0x89, 0x98, 0xda, 0xbc, 0xa2, 0xc6, 0x7f, 0xfc, 0xbc, 0xaa, 0x3b, 0xdf, 0xdd, 0x6e, 0xcd, 0x33, + 0x6a, 0xf3, 0xba, 0x44, 0x51, 0x9b, 0xfd, 0xb0, 0x21, 0x4b, 0xcb, 0x6f, 0xf9, 0x0b, 0x9c, 0xe8, + 0x46, 0x6f, 0x93, 0xff, 0xe3, 0x7f, 0xf8, 0x2f, 0xc1, 0x6c, 0xf6, 0xa9, 0xed, 0x17, 0xc3, 0x79, + 0xd7, 0x67, 0xb2, 0x2d, 0x6c, 0x38, 0x51, 0x63, 0x6b, 0x61, 0xa7, 0x4f, 0xa2, 0x59, 0xdb, 0x40, + 0x6a, 0xf8, 0x01, 0xcd, 0xc2, 0x79, 0x3e, 0xc6, 0xe9, 0x38, 0x8d, 0x2d, 0xd7, 0xa3, 0xc1, 0x6e, + 0xfc, 0xd5, 0x1d, 0x1a, 0x39, 0x59, 0xb5, 0x16, 0x06, 0xd5, 0x0a, 0x7a, 0x5e, 0xe4, 0x76, 0x68, + 0x5f, 0x85, 0x9f, 0x39, 0xac, 0x42, 0xd8, 0xd8, 0xa2, 0x1d, 0xa7, 0xaf, 0xde, 0x73, 0x83, 0xea, + 0xf5, 0x22, 0xb7, 0xbd, 0xe0, 0x7a, 0x51, 0x18, 0x05, 0xe9, 0x4a, 0xf6, 0x8f, 0x0b, 0x50, 0xae, + 0xae, 0xd4, 0xea, 0x91, 0x13, 0xf5, 0x42, 0xf2, 0x8b, 0x16, 0x4c, 0xb4, 0x7d, 0xa7, 0x59, 0x73, + 0xda, 0x8e, 0xd7, 0xa0, 0xc1, 0x8c, 0x75, 0xc5, 0xba, 0x5a, 0xb9, 0xb6, 0x32, 0x3f, 0x4c, 0x7f, + 0xcd, 0x57, 0x1f, 0x84, 0x48, 0x43, 0xbf, 0x17, 0x34, 0x28, 0xd2, 0xcd, 0xda, 0xf9, 0xef, 0xed, + 0xcd, 0x7d, 0x60, 0x7f, 0x6f, 0x6e, 0x62, 0xc5, 0xe0, 0x84, 0x09, 0xbe, 0xe4, 0x5b, 0x16, 0x9c, + 0x6d, 0x38, 0x9e, 0x13, 0xec, 0xae, 0x3b, 0x41, 0x8b, 0x46, 0xaf, 0x04, 0x7e, 0xaf, 0x3b, 0x33, + 0x72, 0x0a, 0xd2, 0x3c, 0x2e, 0xa5, 0x39, 0xbb, 0x98, 0x66, 0x87, 0xfd, 0x12, 0x70, 0xb9, 0xc2, + 0xc8, 0xd9, 0x68, 0x53, 0x53, 0xae, 0xc2, 0x69, 0xca, 0x55, 0x4f, 0xb3, 0xc3, 0x7e, 0x09, 0xc8, + 0x33, 0x30, 0xee, 0x7a, 0xad, 0x80, 0x86, 0xe1, 0xcc, 0xe8, 0x15, 0xeb, 0x6a, 0xb9, 0x36, 0x25, + 0xab, 0x8f, 0x2f, 0x8b, 0x62, 0x54, 0x70, 0xfb, 0xb7, 0x0a, 0x70, 0xb6, 0xba, 0x52, 0x5b, 0x0f, + 0x9c, 0xcd, 0x4d, 0xb7, 0x81, 0x7e, 0x2f, 0x72, 0xbd, 0x96, 0x49, 0xc0, 0x3a, 0x98, 0x00, 0x79, + 0x01, 0x2a, 0x21, 0x0d, 0x76, 0xdc, 0x06, 0x5d, 0xf3, 0x83, 0x88, 0x77, 0x4a, 0xb1, 0x76, 0x4e, + 0xa2, 0x57, 0xea, 0x31, 0x08, 0x4d, 0x3c, 0x56, 0x2d, 0xf0, 0xfd, 0x48, 0xc2, 0x79, 0x9b, 0x95, + 0xe3, 0x6a, 0x18, 0x83, 0xd0, 0xc4, 0x23, 0x4b, 0x30, 0xed, 0x78, 0x9e, 0x1f, 0x39, 0x91, 0xeb, + 0x7b, 0x6b, 0x01, 0xdd, 0x74, 0x1f, 0xca, 0x4f, 0x9c, 0x91, 0x75, 0xa7, 0xab, 0x29, 0x38, 0xf6, + 0xd5, 0x20, 0xdf, 0xb4, 0x60, 0x3a, 0x8c, 0xdc, 0xc6, 0xb6, 0xeb, 0xd1, 0x30, 0x5c, 0xf4, 0xbd, + 0x4d, 0xb7, 0x35, 0x53, 0xe4, 0xdd, 0x76, 0x7b, 0xb8, 0x6e, 0xab, 0xa7, 0xa8, 0xd6, 0xce, 0x33, + 0x91, 0xd2, 0xa5, 0xd8, 0xc7, 0x9d, 0x7c, 0x08, 0xca, 0xb2, 0x45, 0x69, 0x38, 0x33, 0x76, 0xa5, + 0x70, 0xb5, 0x5c, 0x3b, 0xb3, 0xbf, 0x37, 0x57, 0x5e, 0x56, 0x85, 0x18, 0xc3, 0xed, 0x25, 0x98, + 0xa9, 0x76, 0x36, 0x9c, 0x30, 0x74, 0x9a, 0x7e, 0x90, 0xea, 0xba, 0xab, 0x50, 0xea, 0x38, 0xdd, + 0xae, 0xeb, 0xb5, 0x58, 0xdf, 0x31, 0x3a, 0x13, 0xfb, 0x7b, 0x73, 0xa5, 0x55, 0x59, 0x86, 0x1a, + 0x6a, 0xff, 0xa7, 0x11, 0xa8, 0x54, 0x3d, 0xa7, 0xbd, 0x1b, 0xba, 0x21, 0xf6, 0x3c, 0xf2, 0x59, + 0x28, 0xb1, 0x55, 0xab, 0xe9, 0x44, 0x8e, 0x9c, 0xe9, 0x1f, 0x99, 0x17, 0x8b, 0xc8, 0xbc, 0xb9, + 0x88, 0xc4, 0x9f, 0xcf, 0xb0, 0xe7, 0x77, 0x3e, 0x3a, 0x7f, 0x67, 0xe3, 0x3e, 0x6d, 0x44, 0xab, + 0x34, 0x72, 0x6a, 0x44, 0xf6, 0x02, 0xc4, 0x65, 0xa8, 0xa9, 0x12, 0x1f, 0x46, 0xc3, 0x2e, 0x6d, + 0xc8, 0x99, 0xbb, 0x3a, 0xe4, 0x0c, 0x89, 0x45, 0xaf, 0x77, 0x69, 0xa3, 0x36, 0x21, 0x59, 0x8f, + 0xb2, 0x7f, 0xc8, 0x19, 0x91, 0x07, 0x30, 0x16, 0xf2, 0xb5, 0x4c, 0x4e, 0xca, 0x3b, 0xf9, 0xb1, + 0xe4, 0x64, 0x6b, 0x93, 0x92, 0xe9, 0x98, 0xf8, 0x8f, 0x92, 0x9d, 0xfd, 0x9f, 0x2d, 0x38, 0x67, + 0x60, 0x57, 0x83, 0x56, 0xaf, 0x43, 0xbd, 0x88, 0x5c, 0x81, 0x51, 0xcf, 0xe9, 0x50, 0x39, 0xab, + 0xb4, 0xc8, 0xb7, 0x9d, 0x0e, 0x45, 0x0e, 0x21, 0x4f, 0x41, 0x71, 0xc7, 0x69, 0xf7, 0x28, 0x6f, + 0xa4, 0x72, 0xed, 0x8c, 0x44, 0x29, 0xbe, 0xce, 0x0a, 0x51, 0xc0, 0xc8, 0x5b, 0x50, 0xe6, 0x3f, + 0x6e, 0x04, 0x7e, 0x27, 0xa7, 0x4f, 0x93, 0x12, 0xbe, 0xae, 0xc8, 0x8a, 0xe1, 0xa7, 0xff, 0x62, + 0xcc, 0xd0, 0xfe, 0x43, 0x0b, 0xa6, 0x8c, 0x8f, 0x5b, 0x71, 0xc3, 0x88, 0x7c, 0xa6, 0x6f, 0xf0, + 0xcc, 0x1f, 0x6d, 0xf0, 0xb0, 0xda, 0x7c, 0xe8, 0x4c, 0xcb, 0x2f, 0x2d, 0xa9, 0x12, 0x63, 0xe0, + 0x78, 0x50, 0x74, 0x23, 0xda, 0x09, 0x67, 0x46, 0xae, 0x14, 0xae, 0x56, 0xae, 0x2d, 0xe7, 0xd6, + 0x8d, 0x71, 0xfb, 0x2e, 0x33, 0xfa, 0x28, 0xd8, 0xd8, 0xdf, 0x29, 0x24, 0xba, 0x6f, 0x55, 0xc9, + 0xf1, 0x8e, 0x05, 0x63, 0x6d, 0x67, 0x83, 0xb6, 0xc5, 0xdc, 0xaa, 0x5c, 0x7b, 0x23, 0x37, 0x49, + 0x14, 0x8f, 0xf9, 0x15, 0x4e, 0xff, 0xba, 0x17, 0x05, 0xbb, 0xf1, 0xf0, 0x12, 0x85, 0x28, 0x99, + 0x93, 0xbf, 0x69, 0x41, 0x25, 0x5e, 0xd5, 0x54, 0xb3, 0x6c, 0xe4, 0x2f, 0x4c, 0xbc, 0x98, 0x4a, + 0x89, 0xf4, 0x12, 0x6d, 0x40, 0xd0, 0x94, 0x65, 0xf6, 0x63, 0x50, 0x31, 0x3e, 0x81, 0x4c, 0x43, + 0x61, 0x9b, 0xee, 0x8a, 0x01, 0x8f, 0xec, 0x27, 0x39, 0x9f, 0x18, 0xe1, 0x72, 0x48, 0x7f, 0x7c, + 0xe4, 0x45, 0x6b, 0xf6, 0x65, 0x98, 0x4e, 0x33, 0x3c, 0x4e, 0x7d, 0xfb, 0x9f, 0x16, 0x13, 0x03, + 0x93, 0x2d, 0x04, 0xc4, 0x87, 0xf1, 0x0e, 0x8d, 0x02, 0xb7, 0xa1, 0xba, 0x6c, 0x69, 0xb8, 0x56, + 0x5a, 0xe5, 0xc4, 0xe2, 0x0d, 0x51, 0xfc, 0x0f, 0x51, 0x71, 0x21, 0x5b, 0x30, 0xea, 0x04, 0x2d, + 0xd5, 0x27, 0x37, 0xf2, 0x99, 0x96, 0xf1, 0x52, 0x51, 0x0d, 0x5a, 0x21, 0x72, 0x0e, 0x64, 0x01, + 0xca, 0x11, 0x0d, 0x3a, 0xae, 0xe7, 0x44, 0x62, 0x07, 0x2d, 0xd5, 0xce, 0x4a, 0xb4, 0xf2, 0xba, + 0x02, 0x60, 0x8c, 0x43, 0xda, 0x30, 0xd6, 0x0c, 0x76, 0xb1, 0xe7, 0xcd, 0x8c, 0xe6, 0xd1, 0x14, + 0x4b, 0x9c, 0x56, 0x3c, 0x48, 0xc5, 0x7f, 0x94, 0x3c, 0xc8, 0x6f, 0x58, 0x70, 0xbe, 0x43, 0x9d, + 0xb0, 0x17, 0x50, 0xf6, 0x09, 0x48, 0x23, 0xea, 0xb1, 0x8e, 0x9d, 0x29, 0x72, 0xe6, 0x38, 0x6c, + 0x3f, 0xf4, 0x53, 0xae, 0x3d, 0x29, 0x45, 0x39, 0x9f, 0x05, 0xc5, 0x4c, 0x69, 0xc8, 0x5b, 0x50, + 0x89, 0xa2, 0x76, 0x3d, 0x62, 0x7a, 0x70, 0x6b, 0x77, 0x66, 0x8c, 0x2f, 0x5e, 0x43, 0xae, 0x30, + 0xeb, 0xeb, 0x2b, 0x8a, 0x60, 0x6d, 0x8a, 0xcd, 0x16, 0xa3, 0x00, 0x4d, 0x76, 0xf6, 0xbf, 0x28, + 0xc2, 0xd9, 0xbe, 0x6d, 0x85, 0x3c, 0x0f, 0xc5, 0xee, 0x96, 0x13, 0xaa, 0x7d, 0xe2, 0xb2, 0x5a, + 0xa4, 0xd6, 0x58, 0xe1, 0xbb, 0x7b, 0x73, 0x67, 0x54, 0x15, 0x5e, 0x80, 0x02, 0x99, 0x69, 0x6d, + 0x1d, 0x1a, 0x86, 0x4e, 0x4b, 0x6d, 0x1e, 0xc6, 0x20, 0xe5, 0xc5, 0xa8, 0xe0, 0xe4, 0x2b, 0x16, + 0x9c, 0x11, 0x03, 0x16, 0x69, 0xd8, 0x6b, 0x47, 0x6c, 0x83, 0x64, 0x9d, 0x72, 0x2b, 0x8f, 0xc9, + 0x21, 0x48, 0xd6, 0x2e, 0x48, 0xee, 0x67, 0xcc, 0xd2, 0x10, 0x93, 0x7c, 0xc9, 0x3d, 0x28, 0x87, + 0x91, 0x13, 0x44, 0xb4, 0x59, 0x8d, 0xb8, 0x2a, 0x57, 0xb9, 0xf6, 0xd3, 0x47, 0xdb, 0x39, 0xd6, + 0xdd, 0x0e, 0x15, 0xbb, 0x54, 0x5d, 0x11, 0xc0, 0x98, 0x16, 0x79, 0x0b, 0x20, 0xe8, 0x79, 0xf5, + 0x5e, 0xa7, 0xe3, 0x04, 0xbb, 0x52, 0xbb, 0xbb, 0x39, 0xdc, 0xe7, 0xa1, 0xa6, 0x17, 0x2b, 0x3a, + 0x71, 0x19, 0x1a, 0xfc, 0xc8, 0x17, 0x2d, 0x38, 0x23, 0xe6, 0x81, 0x92, 0x60, 0x2c, 0x67, 0x09, + 0xce, 0xb2, 0xa6, 0x5d, 0x32, 0x59, 0x60, 0x92, 0x23, 0x79, 0x03, 0x2a, 0x0d, 0xbf, 0xd3, 0x6d, + 0x53, 0xd1, 0xb8, 0xe3, 0xc7, 0x6e, 0x5c, 0x3e, 0x74, 0x17, 0x63, 0x12, 0x68, 0xd2, 0xb3, 0xff, + 0x43, 0x52, 0xc7, 0x51, 0x43, 0x9a, 0x7c, 0x1a, 0x1e, 0x0f, 0x7b, 0x8d, 0x06, 0x0d, 0xc3, 0xcd, + 0x5e, 0x1b, 0x7b, 0xde, 0x4d, 0x37, 0x8c, 0xfc, 0x60, 0x77, 0xc5, 0xed, 0xb8, 0x11, 0x1f, 0xd0, + 0xc5, 0xda, 0xa5, 0xfd, 0xbd, 0xb9, 0xc7, 0xeb, 0x83, 0x90, 0x70, 0x70, 0x7d, 0xe2, 0xc0, 0x13, + 0x3d, 0x6f, 0x30, 0x79, 0x71, 0xfc, 0x98, 0xdb, 0xdf, 0x9b, 0x7b, 0xe2, 0xee, 0x60, 0x34, 0x3c, + 0x88, 0x86, 0xfd, 0xc7, 0x16, 0xdb, 0x86, 0xc4, 0x77, 0xad, 0xd3, 0x4e, 0xb7, 0xcd, 0x96, 0xce, + 0xd3, 0x57, 0x8e, 0xa3, 0x84, 0x72, 0x8c, 0xf9, 0xec, 0xe5, 0x4a, 0xfe, 0x41, 0x1a, 0xb2, 0xfd, + 0xdf, 0x2c, 0x38, 0x9f, 0x46, 0x7e, 0x04, 0x0a, 0x5d, 0x98, 0x54, 0xe8, 0x6e, 0xe7, 0xfb, 0xb5, + 0x03, 0xb4, 0xba, 0x5f, 0x32, 0x06, 0xac, 0x42, 0x45, 0xba, 0x49, 0x5e, 0x84, 0x89, 0x48, 0xfe, + 0xbd, 0x1d, 0x2b, 0xe7, 0xda, 0x30, 0xb1, 0x6e, 0xc0, 0x30, 0x81, 0xc9, 0x6a, 0x36, 0xda, 0xbd, + 0x30, 0xa2, 0x41, 0xbd, 0xe1, 0x77, 0xc5, 0xb2, 0x5b, 0x8a, 0x6b, 0x2e, 0x1a, 0x30, 0x4c, 0x60, + 0xda, 0x7f, 0xad, 0xd8, 0xdf, 0xee, 0xff, 0xb7, 0xeb, 0x2b, 0xb1, 0xfa, 0x51, 0x78, 0x2f, 0xd5, + 0x8f, 0xd1, 0xf7, 0x95, 0xfa, 0xf1, 0x25, 0x8b, 0x69, 0x71, 0x62, 0x00, 0x84, 0x52, 0x35, 0x7a, + 0x2d, 0xdf, 0xe9, 0x80, 0x74, 0xd3, 0x54, 0x0c, 0x25, 0x2f, 0x8c, 0xd9, 0xda, 0xff, 0x60, 0x14, + 0x26, 0xaa, 0x5e, 0xe4, 0x56, 0x37, 0x37, 0x5d, 0xcf, 0x8d, 0x76, 0xc9, 0xd7, 0x47, 0x60, 0xa1, + 0x1b, 0xd0, 0x4d, 0x1a, 0x04, 0xb4, 0xb9, 0xd4, 0x0b, 0x5c, 0xaf, 0x55, 0x6f, 0x6c, 0xd1, 0x66, + 0xaf, 0xed, 0x7a, 0xad, 0xe5, 0x96, 0xe7, 0xeb, 0xe2, 0xeb, 0x0f, 0x69, 0xa3, 0xc7, 0xdb, 0x55, + 0xac, 0x12, 0x9d, 0xe1, 0x64, 0x5f, 0x3b, 0x1e, 0xd3, 0xda, 0x73, 0xfb, 0x7b, 0x73, 0x0b, 0xc7, + 0xac, 0x84, 0xc7, 0xfd, 0x34, 0xf2, 0xd5, 0x11, 0x98, 0x0f, 0xe8, 0xe7, 0x7a, 0xee, 0xd1, 0x5b, + 0x43, 0x2c, 0xe3, 0xed, 0x21, 0xb7, 0xfb, 0x63, 0xf1, 0xac, 0x5d, 0xdb, 0xdf, 0x9b, 0x3b, 0x66, + 0x1d, 0x3c, 0xe6, 0x77, 0xd9, 0x6b, 0x50, 0xa9, 0x76, 0xdd, 0xd0, 0x7d, 0x88, 0x7e, 0x2f, 0xa2, + 0x47, 0x30, 0x68, 0xcc, 0x41, 0x31, 0xe8, 0xb5, 0xa9, 0x58, 0x60, 0xca, 0xb5, 0x32, 0x5b, 0x96, + 0x91, 0x15, 0xa0, 0x28, 0xb7, 0xbf, 0xc4, 0xb6, 0x20, 0x4e, 0x32, 0x65, 0xca, 0xba, 0x0f, 0xc5, + 0x80, 0x31, 0x91, 0x23, 0x6b, 0xd8, 0x53, 0x7f, 0x2c, 0xb5, 0x14, 0x82, 0xfd, 0x44, 0xc1, 0xc2, + 0xfe, 0xee, 0x08, 0x5c, 0xa8, 0x76, 0xbb, 0xab, 0x34, 0xdc, 0x4a, 0x49, 0xf1, 0xcb, 0x16, 0x4c, + 0xee, 0xb8, 0x41, 0xd4, 0x73, 0xda, 0xca, 0x5a, 0x29, 0xe4, 0xa9, 0x0f, 0x2b, 0x0f, 0xe7, 0xf6, + 0x7a, 0x82, 0x74, 0x8d, 0xec, 0xef, 0xcd, 0x4d, 0x26, 0xcb, 0x30, 0xc5, 0x9e, 0xfc, 0x0d, 0x0b, + 0xa6, 0x65, 0xd1, 0x6d, 0xbf, 0x49, 0x4d, 0x6b, 0xf8, 0xdd, 0x3c, 0x65, 0xd2, 0xc4, 0x85, 0x15, + 0x33, 0x5d, 0x8a, 0x7d, 0x42, 0xd8, 0xff, 0x63, 0x04, 0x2e, 0x0e, 0xa0, 0x41, 0x7e, 0xd3, 0x82, + 0xf3, 0xc2, 0x84, 0x6e, 0x80, 0x90, 0x6e, 0xca, 0xd6, 0xfc, 0x64, 0xde, 0x92, 0x23, 0x9b, 0xe2, + 0xd4, 0x6b, 0xd0, 0xda, 0x0c, 0x5b, 0x92, 0x17, 0x33, 0x58, 0x63, 0xa6, 0x40, 0x5c, 0x52, 0x61, + 0x54, 0x4f, 0x49, 0x3a, 0xf2, 0x48, 0x24, 0xad, 0x67, 0xb0, 0xc6, 0x4c, 0x81, 0xec, 0xbf, 0x02, + 0x4f, 0x1c, 0x40, 0xee, 0xf0, 0xc9, 0x69, 0xbf, 0xa1, 0x47, 0x7d, 0x72, 0xcc, 0x1d, 0x61, 0x5e, + 0xdb, 0x30, 0xc6, 0xa7, 0x8e, 0x9a, 0xd8, 0xc0, 0xf6, 0x60, 0x3e, 0xa7, 0x42, 0x94, 0x10, 0xfb, + 0xbb, 0x16, 0x94, 0x8e, 0x61, 0xfb, 0x9c, 0x4b, 0xda, 0x3e, 0xcb, 0x7d, 0x76, 0xcf, 0xa8, 0xdf, + 0xee, 0xf9, 0xca, 0x70, 0xbd, 0x71, 0x14, 0x7b, 0xe7, 0x8f, 0x2d, 0x38, 0xdb, 0x67, 0x1f, 0x25, + 0x5b, 0x70, 0xbe, 0xeb, 0x37, 0xd5, 0x76, 0x7a, 0xd3, 0x09, 0xb7, 0x38, 0x4c, 0x7e, 0xde, 0xf3, + 0xac, 0x27, 0xd7, 0x32, 0xe0, 0xef, 0xee, 0xcd, 0xcd, 0x68, 0x22, 0x29, 0x04, 0xcc, 0xa4, 0x48, + 0xba, 0x50, 0xda, 0x74, 0x69, 0xbb, 0x19, 0x0f, 0xc1, 0x21, 0xb5, 0xb4, 0x1b, 0x92, 0x9a, 0xb8, + 0x1a, 0x50, 0xff, 0x50, 0x73, 0xb1, 0xff, 0xd4, 0x82, 0xc9, 0x6a, 0x2f, 0xda, 0x62, 0x3a, 0x4a, + 0x83, 0x5b, 0xe3, 0x88, 0x07, 0xc5, 0xd0, 0x6d, 0xed, 0x3c, 0x9f, 0xcf, 0x62, 0x5c, 0x67, 0xa4, + 0xe4, 0x15, 0x89, 0x56, 0xd6, 0x79, 0x21, 0x0a, 0x36, 0x24, 0x80, 0x31, 0xdf, 0xe9, 0x45, 0x5b, + 0xd7, 0xe4, 0x27, 0x0f, 0x69, 0x99, 0xb8, 0xc3, 0x3e, 0xe7, 0x9a, 0xe4, 0xa8, 0x55, 0x46, 0x51, + 0x8a, 0x92, 0x93, 0xfd, 0x05, 0x98, 0x4c, 0xde, 0xbb, 0x1d, 0x61, 0xcc, 0x5e, 0x82, 0x82, 0x13, + 0x78, 0x72, 0xc4, 0x56, 0x24, 0x42, 0xa1, 0x8a, 0xb7, 0x91, 0x95, 0x93, 0x67, 0xa1, 0xb4, 0xd9, + 0x6b, 0xb7, 0xf9, 0xb9, 0x42, 0x5c, 0x72, 0xe9, 0x63, 0xd1, 0x0d, 0x59, 0x8e, 0x1a, 0xc3, 0xfe, + 0xdf, 0xa3, 0x30, 0x55, 0x6b, 0xf7, 0xe8, 0x2b, 0x01, 0xa5, 0xca, 0x16, 0x54, 0x85, 0xa9, 0x6e, + 0x40, 0x77, 0x5c, 0xfa, 0xa0, 0x4e, 0xdb, 0xb4, 0x11, 0xf9, 0x81, 0x94, 0xe6, 0xa2, 0x24, 0x34, + 0xb5, 0x96, 0x04, 0x63, 0x1a, 0x9f, 0xbc, 0x0c, 0x93, 0x4e, 0x23, 0x72, 0x77, 0xa8, 0xa6, 0x20, + 0xc4, 0x7d, 0x4c, 0x52, 0x98, 0xac, 0x26, 0xa0, 0x98, 0xc2, 0x26, 0x9f, 0x81, 0x99, 0xb0, 0xe1, + 0xb4, 0xe9, 0xdd, 0xae, 0x64, 0xb5, 0xb8, 0x45, 0x1b, 0xdb, 0x6b, 0xbe, 0xeb, 0x45, 0xd2, 0xee, + 0x78, 0x45, 0x52, 0x9a, 0xa9, 0x0f, 0xc0, 0xc3, 0x81, 0x14, 0xc8, 0xbf, 0xb4, 0xe0, 0x52, 0x37, + 0xa0, 0x6b, 0x81, 0xdf, 0xf1, 0xd9, 0x50, 0xeb, 0x33, 0x87, 0x49, 0xb3, 0xd0, 0xeb, 0x43, 0xea, + 0x52, 0xa2, 0xa4, 0xff, 0x0e, 0xe7, 0x83, 0xfb, 0x7b, 0x73, 0x97, 0xd6, 0x0e, 0x12, 0x00, 0x0f, + 0x96, 0x8f, 0xfc, 0x6b, 0x0b, 0x2e, 0x77, 0xfd, 0x30, 0x3a, 0xe0, 0x13, 0x8a, 0xa7, 0xfa, 0x09, + 0xf6, 0xfe, 0xde, 0xdc, 0xe5, 0xb5, 0x03, 0x25, 0xc0, 0x43, 0x24, 0xb4, 0xf7, 0x2b, 0x70, 0xd6, + 0x18, 0x7b, 0xd2, 0x98, 0xf3, 0x12, 0x9c, 0x51, 0x83, 0x21, 0xd6, 0x7d, 0xca, 0xb1, 0x6d, 0xaf, + 0x6a, 0x02, 0x31, 0x89, 0xcb, 0xc6, 0x9d, 0x1e, 0x8a, 0xa2, 0x76, 0x6a, 0xdc, 0xad, 0x25, 0xa0, + 0x98, 0xc2, 0x26, 0xcb, 0x70, 0x4e, 0x96, 0x20, 0xed, 0xb6, 0xdd, 0x86, 0xb3, 0xe8, 0xf7, 0xe4, + 0x90, 0x2b, 0xd6, 0x2e, 0xee, 0xef, 0xcd, 0x9d, 0x5b, 0xeb, 0x07, 0x63, 0x56, 0x1d, 0xb2, 0x02, + 0xe7, 0x9d, 0x5e, 0xe4, 0xeb, 0xef, 0xbf, 0xee, 0xb1, 0xed, 0xb4, 0xc9, 0x87, 0x56, 0x49, 0xec, + 0xbb, 0xd5, 0x0c, 0x38, 0x66, 0xd6, 0x22, 0x6b, 0x29, 0x6a, 0x75, 0xda, 0xf0, 0xbd, 0xa6, 0xe8, + 0xe5, 0x62, 0x7c, 0x0c, 0xac, 0x66, 0xe0, 0x60, 0x66, 0x4d, 0xd2, 0x86, 0xc9, 0x8e, 0xf3, 0xf0, + 0xae, 0xe7, 0xec, 0x38, 0x6e, 0x9b, 0x31, 0x91, 0xf6, 0xc2, 0xc1, 0x56, 0xa6, 0x5e, 0xe4, 0xb6, + 0xe7, 0x85, 0x1f, 0xc7, 0xfc, 0xb2, 0x17, 0xdd, 0x09, 0xea, 0x11, 0xd3, 0xd4, 0x85, 0x06, 0xb9, + 0x9a, 0xa0, 0x85, 0x29, 0xda, 0xe4, 0x0e, 0x5c, 0xe0, 0xd3, 0x71, 0xc9, 0x7f, 0xe0, 0x2d, 0xd1, + 0xb6, 0xb3, 0xab, 0x3e, 0x60, 0x9c, 0x7f, 0xc0, 0xe3, 0xfb, 0x7b, 0x73, 0x17, 0xea, 0x59, 0x08, + 0x98, 0x5d, 0x8f, 0x38, 0xf0, 0x44, 0x12, 0x80, 0x74, 0xc7, 0x0d, 0x5d, 0xdf, 0x13, 0x66, 0xb9, + 0x52, 0x6c, 0x96, 0xab, 0x0f, 0x46, 0xc3, 0x83, 0x68, 0x90, 0xbf, 0x6d, 0xc1, 0xf9, 0xac, 0x69, + 0x38, 0x53, 0xce, 0xe3, 0x36, 0x39, 0x35, 0xb5, 0xc4, 0x88, 0xc8, 0x5c, 0x14, 0x32, 0x85, 0x20, + 0x6f, 0x5b, 0x30, 0xe1, 0x18, 0x27, 0xe8, 0x19, 0xc8, 0x63, 0xd7, 0x32, 0xcf, 0xe4, 0xb5, 0xe9, + 0xfd, 0xbd, 0xb9, 0xc4, 0x29, 0x1d, 0x13, 0x1c, 0xc9, 0xdf, 0xb5, 0xe0, 0x42, 0xe6, 0x1c, 0x9f, + 0xa9, 0x9c, 0x46, 0x0b, 0xf1, 0x41, 0x92, 0xbd, 0xe6, 0x64, 0x8b, 0x41, 0xbe, 0x69, 0xe9, 0xad, + 0x4c, 0x5d, 0x30, 0xce, 0x4c, 0x70, 0xd1, 0x86, 0x34, 0x78, 0x18, 0x6a, 0x94, 0x22, 0x5c, 0x3b, + 0x67, 0xec, 0x8c, 0xaa, 0x10, 0xd3, 0xec, 0xc9, 0x37, 0x2c, 0xb5, 0x35, 0x6a, 0x89, 0xce, 0x9c, + 0x96, 0x44, 0x24, 0xde, 0x69, 0xb5, 0x40, 0x29, 0xe6, 0xe4, 0xe7, 0x60, 0xd6, 0xd9, 0xf0, 0x83, + 0x28, 0x73, 0xf2, 0xcd, 0x4c, 0xf2, 0x69, 0x74, 0x79, 0x7f, 0x6f, 0x6e, 0xb6, 0x3a, 0x10, 0x0b, + 0x0f, 0xa0, 0x60, 0xff, 0xee, 0x18, 0x4c, 0x88, 0x93, 0x90, 0xdc, 0xba, 0x7e, 0xdb, 0x82, 0x27, + 0x1b, 0xbd, 0x20, 0xa0, 0x5e, 0x54, 0x8f, 0x68, 0xb7, 0x7f, 0xe3, 0xb2, 0x4e, 0x75, 0xe3, 0xba, + 0xb2, 0xbf, 0x37, 0xf7, 0xe4, 0xe2, 0x01, 0xfc, 0xf1, 0x40, 0xe9, 0xc8, 0xbf, 0xb7, 0xc0, 0x96, + 0x08, 0x35, 0xa7, 0xb1, 0xdd, 0x0a, 0xfc, 0x9e, 0xd7, 0xec, 0xff, 0x88, 0x91, 0x53, 0xfd, 0x88, + 0xa7, 0xf7, 0xf7, 0xe6, 0xec, 0xc5, 0x43, 0xa5, 0xc0, 0x23, 0x48, 0x4a, 0x5e, 0x81, 0xb3, 0x12, + 0xeb, 0xfa, 0xc3, 0x2e, 0x0d, 0x5c, 0x76, 0xe6, 0x90, 0x8a, 0x63, 0xec, 0x9b, 0x96, 0x46, 0xc0, + 0xfe, 0x3a, 0x24, 0x84, 0xf1, 0x07, 0xd4, 0x6d, 0x6d, 0x45, 0x4a, 0x7d, 0x1a, 0xd2, 0x21, 0x4d, + 0x5a, 0x45, 0xee, 0x09, 0x9a, 0xb5, 0xca, 0xfe, 0xde, 0xdc, 0xb8, 0xfc, 0x83, 0x8a, 0x13, 0xb9, + 0x0d, 0x93, 0xe2, 0x9c, 0xba, 0xe6, 0x7a, 0xad, 0x35, 0xdf, 0x13, 0x5e, 0x55, 0xe5, 0xda, 0xd3, + 0x6a, 0xc3, 0xaf, 0x27, 0xa0, 0xef, 0xee, 0xcd, 0x4d, 0xa8, 0xdf, 0xeb, 0xbb, 0x5d, 0x8a, 0xa9, + 0xda, 0xe4, 0x6f, 0x59, 0x40, 0xc2, 0x88, 0x76, 0xd7, 0xda, 0xbd, 0x96, 0x2b, 0x9b, 0x48, 0xfa, + 0x47, 0xe5, 0xe0, 0xaa, 0x95, 0xa4, 0x5b, 0x9b, 0x95, 0x42, 0x92, 0x7a, 0x1f, 0x47, 0xcc, 0x90, + 0xc2, 0xfe, 0xce, 0x38, 0x80, 0x9a, 0x4b, 0xb4, 0x4b, 0x3e, 0x04, 0xe5, 0x90, 0x46, 0xa2, 0x49, + 0xe4, 0x35, 0x97, 0xb8, 0x9c, 0x54, 0x85, 0x18, 0xc3, 0xc9, 0x36, 0x14, 0xbb, 0x4e, 0x2f, 0xa4, + 0xf9, 0x1c, 0x6e, 0xe4, 0xc8, 0x5c, 0x63, 0x14, 0xc5, 0xa9, 0x99, 0xff, 0x44, 0xc1, 0x83, 0x7c, + 0xd9, 0x02, 0xa0, 0xc9, 0xd1, 0x34, 0xb4, 0xf5, 0x4a, 0xb2, 0x8c, 0x07, 0x1c, 0x6b, 0x83, 0xda, + 0xe4, 0xfe, 0xde, 0x1c, 0x18, 0xe3, 0xd2, 0x60, 0x4b, 0x1e, 0x40, 0xc9, 0x51, 0x1b, 0xd2, 0xe8, + 0x69, 0x6c, 0x48, 0xfc, 0x30, 0xab, 0x67, 0x94, 0x66, 0x46, 0xbe, 0x6a, 0xc1, 0x64, 0x48, 0x23, + 0xd9, 0x55, 0x6c, 0x59, 0x94, 0xda, 0xf8, 0x90, 0x33, 0xa2, 0x9e, 0xa0, 0x29, 0x96, 0xf7, 0x64, + 0x19, 0xa6, 0xf8, 0x2a, 0x51, 0x6e, 0x52, 0xa7, 0x49, 0x03, 0x6e, 0x2b, 0x91, 0x6a, 0xde, 0xf0, + 0xa2, 0x18, 0x34, 0xb5, 0x28, 0x46, 0x19, 0xa6, 0xf8, 0x2a, 0x51, 0x56, 0xdd, 0x20, 0xf0, 0xa5, + 0x28, 0xa5, 0x9c, 0x44, 0x31, 0x68, 0x6a, 0x51, 0x8c, 0x32, 0x4c, 0xf1, 0x25, 0x6d, 0x18, 0xeb, + 0xf2, 0xa9, 0x25, 0x55, 0xb9, 0x21, 0xef, 0xc8, 0xd5, 0x34, 0xa5, 0x5d, 0x61, 0x93, 0x12, 0xff, + 0x51, 0xf2, 0xb0, 0xbf, 0x7d, 0x06, 0x26, 0xd5, 0xb4, 0x8d, 0x0f, 0x39, 0xc2, 0x10, 0x38, 0xe0, + 0x90, 0xb3, 0x68, 0x02, 0x31, 0x89, 0xcb, 0x2a, 0x8b, 0x55, 0x2b, 0x79, 0xc6, 0xd1, 0x95, 0xeb, + 0x26, 0x10, 0x93, 0xb8, 0xa4, 0x03, 0x45, 0xb6, 0xb2, 0x28, 0xf7, 0x8b, 0x21, 0xbf, 0x3c, 0x5e, + 0x8d, 0x0c, 0xa3, 0x0a, 0x23, 0x8f, 0x82, 0x0b, 0xb7, 0x65, 0x47, 0x09, 0xf3, 0xb6, 0x9c, 0x8a, + 0xf9, 0xac, 0x06, 0x49, 0xcb, 0xb9, 0xe8, 0xfb, 0x64, 0x19, 0xa6, 0xd8, 0x67, 0x9c, 0x7b, 0x8a, + 0xa7, 0x78, 0xee, 0xf9, 0x14, 0x94, 0x3a, 0xce, 0xc3, 0x7a, 0x2f, 0x68, 0x9d, 0xfc, 0x7c, 0x25, + 0xdd, 0x69, 0x05, 0x15, 0xd4, 0xf4, 0xc8, 0x17, 0x2d, 0x63, 0x81, 0x13, 0xbe, 0x16, 0xf7, 0xf2, + 0x5d, 0xe0, 0xb4, 0xda, 0x30, 0x70, 0xa9, 0xeb, 0x3b, 0x85, 0x94, 0x1e, 0xf9, 0x29, 0x84, 0x69, + 0xd4, 0x62, 0x82, 0x68, 0x8d, 0xba, 0x7c, 0xaa, 0x1a, 0xf5, 0x62, 0x82, 0x19, 0xa6, 0x98, 0x73, + 0x79, 0xc4, 0x9c, 0xd3, 0xf2, 0xc0, 0xa9, 0xca, 0x53, 0x4f, 0x30, 0xc3, 0x14, 0xf3, 0xc1, 0x47, + 0xef, 0xca, 0xe9, 0x1c, 0xbd, 0x27, 0x72, 0x38, 0x7a, 0x1f, 0x7c, 0x2a, 0x39, 0x33, 0xec, 0xa9, + 0x84, 0xdc, 0x02, 0xd2, 0xdc, 0xf5, 0x9c, 0x8e, 0xdb, 0x90, 0x8b, 0x25, 0xdf, 0xa4, 0x27, 0xb9, + 0x69, 0x46, 0x6b, 0x65, 0x4b, 0x7d, 0x18, 0x98, 0x51, 0x8b, 0x44, 0x50, 0xea, 0x2a, 0xe5, 0x73, + 0x2a, 0x8f, 0xd1, 0xaf, 0x94, 0x51, 0xe1, 0x42, 0xc3, 0x26, 0x9e, 0x2a, 0x41, 0xcd, 0x89, 0xac, + 0xc0, 0xf9, 0x8e, 0xeb, 0xad, 0xf9, 0xcd, 0x70, 0x8d, 0x06, 0xd2, 0xf0, 0x54, 0xa7, 0xd1, 0xcc, + 0x34, 0x6f, 0x1b, 0x6e, 0x4c, 0x58, 0xcd, 0x80, 0x63, 0x66, 0x2d, 0xfb, 0x7f, 0x59, 0x30, 0xbd, + 0xd8, 0xf6, 0x7b, 0xcd, 0x7b, 0x4e, 0xd4, 0xd8, 0x12, 0x1e, 0x1b, 0xe4, 0x65, 0x28, 0xb9, 0x5e, + 0x44, 0x83, 0x1d, 0xa7, 0x2d, 0xf7, 0x27, 0x5b, 0x59, 0x92, 0x97, 0x65, 0xf9, 0xbb, 0x7b, 0x73, + 0x93, 0x4b, 0xbd, 0x80, 0x1b, 0xec, 0xc5, 0x6a, 0x85, 0xba, 0x0e, 0xf9, 0xb6, 0x05, 0x67, 0x85, + 0xcf, 0xc7, 0x92, 0x13, 0x39, 0xaf, 0xf5, 0x68, 0xe0, 0x52, 0xe5, 0xf5, 0x31, 0xe4, 0x42, 0x95, + 0x96, 0x55, 0x31, 0xd8, 0x8d, 0xcf, 0x2c, 0xab, 0x69, 0xce, 0xd8, 0x2f, 0x8c, 0xfd, 0xab, 0x05, + 0x78, 0x7c, 0x20, 0x2d, 0x32, 0x0b, 0x23, 0x6e, 0x53, 0x7e, 0x3a, 0x48, 0xba, 0x23, 0xcb, 0x4d, + 0x1c, 0x71, 0x9b, 0x64, 0x9e, 0x6b, 0xb8, 0x01, 0x0d, 0x43, 0x75, 0xf7, 0x5e, 0xd6, 0xca, 0xa8, + 0x2c, 0x45, 0x03, 0x83, 0xcc, 0x41, 0x91, 0xbb, 0x52, 0xcb, 0xa3, 0x15, 0xd7, 0x99, 0xb9, 0xd7, + 0x32, 0x8a, 0x72, 0xf2, 0x25, 0x0b, 0x40, 0x08, 0xc8, 0xf4, 0x7d, 0xb9, 0x4b, 0x62, 0xbe, 0xcd, + 0xc4, 0x28, 0x0b, 0x29, 0xe3, 0xff, 0x68, 0x70, 0x25, 0xeb, 0x30, 0xc6, 0xd4, 0x67, 0xbf, 0x79, + 0xe2, 0x4d, 0x51, 0x28, 0x40, 0x9c, 0x06, 0x4a, 0x5a, 0xac, 0xad, 0x02, 0x1a, 0xf5, 0x02, 0x8f, + 0x35, 0x2d, 0xdf, 0x06, 0x4b, 0x42, 0x0a, 0xd4, 0xa5, 0x68, 0x60, 0xd8, 0xff, 0x7c, 0x04, 0xce, + 0x67, 0x89, 0xce, 0x76, 0x9b, 0x31, 0x21, 0xad, 0xb4, 0x12, 0xfc, 0x6c, 0xfe, 0xed, 0x23, 0xdd, + 0x97, 0xf4, 0x8d, 0x8d, 0xf4, 0x25, 0x95, 0x7c, 0xc9, 0xcf, 0xea, 0x16, 0x1a, 0x39, 0x61, 0x0b, + 0x69, 0xca, 0xa9, 0x56, 0xba, 0x02, 0xa3, 0x21, 0xeb, 0xf9, 0x42, 0xf2, 0xe6, 0x87, 0xf7, 0x11, + 0x87, 0x30, 0x8c, 0x9e, 0xe7, 0x46, 0x32, 0xfe, 0x48, 0x63, 0xdc, 0xf5, 0xdc, 0x08, 0x39, 0xc4, + 0xfe, 0xd6, 0x08, 0xcc, 0x0e, 0xfe, 0x28, 0xf2, 0x2d, 0x0b, 0xa0, 0xc9, 0x0e, 0x47, 0x21, 0x77, + 0xe2, 0x17, 0xee, 0x5e, 0xce, 0x69, 0xb5, 0xe1, 0x92, 0xe2, 0x14, 0xfb, 0x21, 0xea, 0xa2, 0x10, + 0x0d, 0x41, 0xc8, 0x35, 0x35, 0xf4, 0xf9, 0xad, 0x95, 0x98, 0x4c, 0xba, 0xce, 0xaa, 0x86, 0xa0, + 0x81, 0xc5, 0x4e, 0xbf, 0x9e, 0xd3, 0xa1, 0x61, 0xd7, 0xd1, 0xd1, 0x5c, 0xfc, 0xf4, 0x7b, 0x5b, + 0x15, 0x62, 0x0c, 0xb7, 0xdb, 0xf0, 0xd4, 0x11, 0xe4, 0xcc, 0x29, 0x58, 0xc6, 0xfe, 0x13, 0x0b, + 0x2e, 0x4a, 0x4f, 0xbc, 0xff, 0x67, 0xdc, 0x3a, 0x7f, 0x62, 0xc1, 0x13, 0x03, 0xbe, 0xf9, 0x11, + 0x78, 0x77, 0xbe, 0x99, 0xf4, 0xee, 0xbc, 0x3b, 0xec, 0x90, 0xce, 0xfc, 0x8e, 0x01, 0x4e, 0x9e, + 0xdf, 0x1d, 0x85, 0x33, 0x6c, 0xd9, 0x6a, 0xfa, 0xad, 0x9c, 0x36, 0xce, 0xa7, 0xa0, 0xf8, 0x39, + 0xb6, 0x01, 0xa5, 0x07, 0x19, 0xdf, 0x95, 0x50, 0xc0, 0xc8, 0x97, 0x2d, 0x18, 0xff, 0x9c, 0xdc, + 0x53, 0xc5, 0x59, 0x6e, 0xc8, 0xc5, 0x30, 0xf1, 0x0d, 0xf3, 0x72, 0x87, 0x14, 0x31, 0x38, 0xda, + 0x97, 0x53, 0x6d, 0xa5, 0x8a, 0x33, 0x79, 0x06, 0xc6, 0x37, 0xfd, 0xa0, 0xd3, 0x6b, 0x3b, 0xe9, + 0xc0, 0xcf, 0x1b, 0xa2, 0x18, 0x15, 0x9c, 0x4d, 0x72, 0xa7, 0xeb, 0xbe, 0x4e, 0x83, 0x50, 0x84, + 0x64, 0x24, 0x26, 0x79, 0x55, 0x43, 0xd0, 0xc0, 0xe2, 0x75, 0x5a, 0xad, 0x80, 0xb6, 0x9c, 0xc8, + 0x0f, 0xf8, 0xce, 0x61, 0xd6, 0xd1, 0x10, 0x34, 0xb0, 0xc8, 0x43, 0x28, 0x87, 0xb4, 0x11, 0xd0, + 0x08, 0xe9, 0xa6, 0x3c, 0x16, 0xbd, 0x32, 0xac, 0x85, 0x41, 0x92, 0x8b, 0x9d, 0x1a, 0x75, 0x11, + 0xc6, 0xcc, 0x66, 0x3f, 0x0e, 0x13, 0x66, 0xb3, 0x1d, 0x2b, 0x92, 0xe8, 0x13, 0x20, 0xdd, 0x49, + 0x53, 0x8b, 0xa1, 0x75, 0x94, 0xc5, 0xd0, 0xfe, 0x8f, 0x23, 0x60, 0x58, 0xc1, 0x1e, 0xc1, 0x22, + 0xe3, 0x25, 0x16, 0x99, 0x21, 0x2d, 0x38, 0x86, 0x4d, 0x6f, 0x50, 0x5c, 0xe5, 0x4e, 0x2a, 0xae, + 0xf2, 0x76, 0x6e, 0x1c, 0x0f, 0x0e, 0xab, 0xfc, 0xa1, 0x05, 0x4f, 0xc4, 0xc8, 0xfd, 0xd6, 0xf3, + 0xc3, 0x77, 0x8c, 0x17, 0xa0, 0xe2, 0xc4, 0xd5, 0xe4, 0x94, 0x36, 0x82, 0xda, 0x34, 0x08, 0x4d, + 0xbc, 0x38, 0x20, 0xa7, 0x70, 0xc2, 0x80, 0x9c, 0xd1, 0x83, 0x03, 0x72, 0xec, 0x3f, 0x1d, 0x81, + 0x4b, 0xfd, 0x5f, 0x66, 0x7a, 0xa9, 0x1f, 0xfe, 0x6d, 0x69, 0x3f, 0xf6, 0x91, 0x13, 0xfb, 0xb1, + 0x17, 0x8e, 0xea, 0xc7, 0xae, 0xbd, 0xc7, 0x47, 0x4f, 0xdd, 0x7b, 0xbc, 0x0e, 0x17, 0x94, 0xab, + 0xea, 0x0d, 0x3f, 0x90, 0x51, 0x29, 0x6a, 0xed, 0x2a, 0xd5, 0x2e, 0xc9, 0x2a, 0x17, 0x30, 0x0b, + 0x09, 0xb3, 0xeb, 0xda, 0x3f, 0x2c, 0xc0, 0xb9, 0xb8, 0xd9, 0x17, 0x7d, 0xaf, 0xe9, 0x72, 0x6f, + 0xa7, 0x97, 0x60, 0x34, 0xda, 0xed, 0xaa, 0xc6, 0xfe, 0xff, 0x95, 0x38, 0xeb, 0xbb, 0x5d, 0xd6, + 0xdb, 0x17, 0x33, 0xaa, 0xf0, 0xfb, 0x0b, 0x5e, 0x89, 0xac, 0xe8, 0xd9, 0x21, 0x7a, 0xe0, 0xf9, + 0xe4, 0x68, 0x7e, 0x77, 0x6f, 0x2e, 0x23, 0xbf, 0xc4, 0xbc, 0xa6, 0x94, 0x1c, 0xf3, 0xe4, 0x3e, + 0x4c, 0xb6, 0x9d, 0x30, 0xba, 0xdb, 0x6d, 0x3a, 0x11, 0x5d, 0x77, 0xa5, 0x1f, 0xd1, 0xf1, 0x02, + 0x79, 0xb4, 0xc3, 0xc5, 0x4a, 0x82, 0x12, 0xa6, 0x28, 0x93, 0x1d, 0x20, 0xac, 0x64, 0x3d, 0x70, + 0xbc, 0x50, 0x7c, 0x15, 0xe3, 0x77, 0xfc, 0xa8, 0x2c, 0x7d, 0x68, 0x5f, 0xe9, 0xa3, 0x86, 0x19, + 0x1c, 0xc8, 0xd3, 0x30, 0x16, 0x50, 0x27, 0xd4, 0x1b, 0x91, 0x9e, 0xff, 0xc8, 0x4b, 0x51, 0x42, + 0xcd, 0x09, 0x35, 0x76, 0xc8, 0x84, 0xfa, 0x03, 0x0b, 0x26, 0xe3, 0x6e, 0x7a, 0x04, 0x4a, 0x4f, + 0x27, 0xa9, 0xf4, 0xdc, 0xcc, 0x6b, 0x49, 0x1c, 0xa0, 0xe7, 0xfc, 0xf1, 0xb8, 0xf9, 0x7d, 0x3c, + 0x74, 0xe4, 0xf3, 0x66, 0x24, 0x81, 0x95, 0x47, 0x3c, 0x5f, 0x42, 0xcf, 0x3c, 0x30, 0x84, 0x80, + 0x69, 0x59, 0x4d, 0xa9, 0x41, 0xc9, 0x61, 0xaf, 0xb5, 0x2c, 0xa5, 0x59, 0x65, 0x69, 0x59, 0xaa, + 0x0e, 0xb9, 0x0b, 0x17, 0xbb, 0x81, 0xcf, 0x33, 0x1c, 0x2c, 0x51, 0xa7, 0xd9, 0x76, 0x3d, 0xaa, + 0x0c, 0x4c, 0xc2, 0xdf, 0xe7, 0x89, 0xfd, 0xbd, 0xb9, 0x8b, 0x6b, 0xd9, 0x28, 0x38, 0xa8, 0x6e, + 0x32, 0x46, 0x76, 0xf4, 0x08, 0x31, 0xb2, 0xbf, 0xa4, 0xcd, 0xb8, 0x3a, 0x1c, 0xe3, 0xd3, 0x79, + 0x75, 0x65, 0x56, 0x60, 0x86, 0x1e, 0x52, 0x55, 0xc9, 0x14, 0x35, 0xfb, 0xc1, 0xb6, 0xc2, 0xb1, + 0x13, 0xda, 0x0a, 0xe3, 0x08, 0x9c, 0xf1, 0xf7, 0x32, 0x02, 0xa7, 0xf4, 0xbe, 0x8a, 0xc0, 0xf9, + 0xb6, 0x05, 0xe7, 0x9c, 0xfe, 0xd8, 0xf7, 0x7c, 0xcc, 0xd6, 0x19, 0x41, 0xf5, 0xb5, 0x27, 0xa4, + 0x90, 0x59, 0x29, 0x06, 0x30, 0x4b, 0x14, 0xfb, 0x9d, 0x22, 0x4c, 0xa7, 0x95, 0xa4, 0xd3, 0x0f, + 0x12, 0xfe, 0x15, 0x0b, 0xa6, 0xd5, 0x04, 0xd7, 0x77, 0xef, 0xe2, 0x70, 0xb3, 0x92, 0xd3, 0xba, + 0x22, 0xd4, 0x3d, 0x9d, 0xbb, 0x65, 0x3d, 0xc5, 0x0d, 0xfb, 0xf8, 0x93, 0x37, 0xa0, 0xa2, 0xef, + 0x73, 0x4e, 0x14, 0x31, 0xcc, 0x83, 0x5a, 0xab, 0x31, 0x09, 0x34, 0xe9, 0x91, 0x77, 0x2c, 0x80, + 0x86, 0xda, 0x89, 0x73, 0x8a, 0xc7, 0xca, 0xd0, 0x16, 0x62, 0x7d, 0x5e, 0x17, 0x85, 0x68, 0x30, + 0x26, 0xbf, 0xca, 0x6f, 0x72, 0xf4, 0x48, 0x50, 0x3e, 0x0f, 0x9f, 0xcc, 0x7b, 0x29, 0x8a, 0xbd, + 0x58, 0xb4, 0xb6, 0x67, 0x80, 0x42, 0x4c, 0x08, 0x61, 0xbf, 0x04, 0xda, 0x5b, 0x9c, 0xad, 0xac, + 0xdc, 0x5f, 0x7c, 0xcd, 0x89, 0xb6, 0xe4, 0x10, 0xd4, 0x2b, 0xeb, 0x0d, 0x05, 0xc0, 0x18, 0xc7, + 0xfe, 0x2c, 0x4c, 0xbe, 0x12, 0x38, 0xdd, 0x2d, 0x97, 0xdf, 0x98, 0xb0, 0x93, 0xf9, 0x33, 0x30, + 0xee, 0x34, 0x9b, 0x59, 0x69, 0x86, 0xaa, 0xa2, 0x18, 0x15, 0xfc, 0x48, 0x87, 0x70, 0xfb, 0xdf, + 0x5a, 0x40, 0xe2, 0x3b, 0x6e, 0xd7, 0x6b, 0xad, 0x3a, 0x51, 0x63, 0x8b, 0x1d, 0xe1, 0xb6, 0x78, + 0x69, 0xd6, 0x11, 0xee, 0xa6, 0x86, 0xa0, 0x81, 0x45, 0xde, 0x82, 0x8a, 0xf8, 0xf7, 0xba, 0x3e, + 0x20, 0x0e, 0xef, 0xf4, 0xce, 0xf7, 0x3c, 0x2e, 0x93, 0x18, 0x85, 0x37, 0x63, 0x0e, 0x68, 0xb2, + 0x63, 0x4d, 0xb5, 0xec, 0x6d, 0xb6, 0x7b, 0x0f, 0x9b, 0x1b, 0x71, 0x53, 0x75, 0x03, 0x7f, 0xd3, + 0x6d, 0xd3, 0x74, 0x53, 0xad, 0x89, 0x62, 0x54, 0xf0, 0xa3, 0x35, 0xd5, 0xbf, 0xb1, 0xe0, 0xfc, + 0x72, 0x18, 0xb9, 0xfe, 0x12, 0x0d, 0x23, 0xb6, 0xf3, 0xb1, 0xf5, 0xb1, 0xd7, 0x3e, 0x4a, 0xe0, + 0xc7, 0x12, 0x4c, 0xcb, 0x1b, 0xf0, 0xde, 0x46, 0x48, 0x23, 0xe3, 0xa8, 0xa1, 0xe7, 0xf1, 0x62, + 0x0a, 0x8e, 0x7d, 0x35, 0x18, 0x15, 0x79, 0x15, 0x1e, 0x53, 0x29, 0x24, 0xa9, 0xd4, 0x53, 0x70, + 0xec, 0xab, 0x61, 0xff, 0xa0, 0x00, 0xe7, 0xf8, 0x67, 0xa4, 0x82, 0xb6, 0xbe, 0x31, 0x28, 0x68, + 0x6b, 0xc8, 0xa9, 0xcc, 0x79, 0x9d, 0x20, 0x64, 0xeb, 0xaf, 0x5b, 0x30, 0xd5, 0x4c, 0xb6, 0x74, + 0x3e, 0x16, 0xc1, 0xac, 0x3e, 0x14, 0xbe, 0x8f, 0xa9, 0x42, 0x4c, 0xf3, 0x27, 0xbf, 0x66, 0xc1, + 0x54, 0x52, 0x4c, 0xb5, 0xba, 0x9f, 0x42, 0x23, 0xe9, 0x60, 0x85, 0x64, 0x79, 0x88, 0x69, 0x11, + 0xec, 0xef, 0x8f, 0xc8, 0x2e, 0x3d, 0x8d, 0x88, 0x24, 0xf2, 0x00, 0xca, 0x51, 0x3b, 0x14, 0x85, + 0xf2, 0x6b, 0x87, 0x3c, 0xb4, 0xae, 0xaf, 0xd4, 0x85, 0xab, 0x4b, 0xac, 0x57, 0xca, 0x12, 0xa6, + 0x1f, 0x2b, 0x5e, 0x9c, 0x71, 0xa3, 0x2b, 0x19, 0xe7, 0x72, 0x5a, 0x5e, 0x5f, 0x5c, 0x4b, 0x33, + 0x96, 0x25, 0x8c, 0xb1, 0xe2, 0x65, 0xff, 0x63, 0x0b, 0xca, 0xb7, 0x7c, 0xb5, 0x8e, 0xfc, 0x5c, + 0x0e, 0xb6, 0x28, 0xad, 0xb2, 0x6a, 0xa5, 0x25, 0x3e, 0x05, 0xbd, 0x9c, 0xb0, 0x44, 0x3d, 0x69, + 0xd0, 0x9e, 0xe7, 0xd9, 0x16, 0x19, 0xa9, 0x5b, 0xfe, 0xc6, 0x40, 0xc3, 0xf5, 0xaf, 0x17, 0xe1, + 0xcc, 0xab, 0xce, 0x2e, 0xf5, 0x22, 0xe7, 0xf8, 0x9b, 0xc4, 0x0b, 0x50, 0x71, 0xba, 0xfc, 0x16, + 0xd5, 0x38, 0x86, 0xc4, 0xc6, 0x9d, 0x18, 0x84, 0x26, 0x5e, 0xbc, 0xa0, 0x89, 0xf0, 0xa0, 0xac, + 0xa5, 0x68, 0x31, 0x05, 0xc7, 0xbe, 0x1a, 0xe4, 0x16, 0x10, 0x19, 0x52, 0x5f, 0x6d, 0x34, 0xfc, + 0x9e, 0x27, 0x96, 0x34, 0x61, 0xf7, 0xd1, 0xe7, 0xe1, 0xd5, 0x3e, 0x0c, 0xcc, 0xa8, 0x45, 0x3e, + 0x03, 0x33, 0x0d, 0x4e, 0x59, 0x9e, 0x8e, 0x4c, 0x8a, 0xe2, 0x84, 0xac, 0x03, 0x6e, 0x16, 0x07, + 0xe0, 0xe1, 0x40, 0x0a, 0x4c, 0xd2, 0x30, 0xf2, 0x03, 0xa7, 0x45, 0x4d, 0xba, 0x63, 0x49, 0x49, + 0xeb, 0x7d, 0x18, 0x98, 0x51, 0x8b, 0x7c, 0x01, 0xca, 0xd1, 0x56, 0x40, 0xc3, 0x2d, 0xbf, 0xdd, + 0x94, 0xe6, 0xdd, 0x21, 0x8d, 0x81, 0xb2, 0xf7, 0xd7, 0x15, 0x55, 0x63, 0x78, 0xab, 0x22, 0x8c, + 0x79, 0x92, 0x00, 0xc6, 0xc2, 0x86, 0xdf, 0xa5, 0xa1, 0x3c, 0x55, 0xdc, 0xca, 0x85, 0x3b, 0x37, + 0x6e, 0x19, 0x66, 0x48, 0xce, 0x01, 0x25, 0x27, 0xfb, 0x77, 0x46, 0x60, 0xc2, 0x44, 0x3c, 0xc2, + 0xda, 0xf4, 0x65, 0x0b, 0x26, 0x1a, 0xbe, 0x17, 0x05, 0x7e, 0x3b, 0x4e, 0x15, 0x31, 0xbc, 0x46, + 0xc1, 0x48, 0x2d, 0xd1, 0xc8, 0x71, 0xdb, 0x86, 0xb5, 0xce, 0x60, 0x83, 0x09, 0xa6, 0xe4, 0xeb, + 0x16, 0x4c, 0xc5, 0x2e, 0x99, 0xb1, 0xad, 0x2f, 0x57, 0x41, 0xf4, 0x52, 0x7f, 0x3d, 0xc9, 0x09, + 0xd3, 0xac, 0xed, 0x0d, 0x98, 0x4e, 0xf7, 0x36, 0x6b, 0xca, 0xae, 0x23, 0xe7, 0x7a, 0x21, 0x6e, + 0xca, 0x35, 0x27, 0x0c, 0x91, 0x43, 0xc8, 0xb3, 0x50, 0xea, 0x38, 0x41, 0xcb, 0xf5, 0x9c, 0x36, + 0x6f, 0xc5, 0x82, 0xb1, 0x20, 0xc9, 0x72, 0xd4, 0x18, 0xf6, 0x47, 0x60, 0x62, 0xd5, 0xf1, 0x5a, + 0xb4, 0x29, 0xd7, 0xe1, 0xc3, 0x63, 0x62, 0xff, 0x68, 0x14, 0x2a, 0xc6, 0xf1, 0xf1, 0xf4, 0xcf, + 0x59, 0x89, 0x14, 0x48, 0x85, 0x1c, 0x53, 0x20, 0x7d, 0x0a, 0x60, 0xd3, 0xf5, 0xdc, 0x70, 0xeb, + 0x84, 0xc9, 0x95, 0xb8, 0x57, 0xc0, 0x0d, 0x4d, 0x01, 0x0d, 0x6a, 0xf1, 0xd5, 0x6b, 0xf1, 0x80, + 0x3c, 0x85, 0xef, 0x58, 0xc6, 0x76, 0x33, 0x96, 0x87, 0xab, 0x89, 0xd1, 0x31, 0xf3, 0x6a, 0xfb, + 0x11, 0xb7, 0x62, 0x07, 0xed, 0x4a, 0xeb, 0x50, 0x0a, 0x68, 0xd8, 0xeb, 0xd0, 0x13, 0xa5, 0x41, + 0xe2, 0x4e, 0x3f, 0x28, 0xeb, 0xa3, 0xa6, 0x34, 0xfb, 0x12, 0x9c, 0x49, 0x88, 0x70, 0xac, 0x1b, + 0x26, 0x1f, 0x32, 0x6d, 0x14, 0x27, 0xb9, 0x6f, 0x62, 0x7d, 0xd1, 0x36, 0xd2, 0x1f, 0xe9, 0xbe, + 0x10, 0xae, 0x5d, 0x02, 0x66, 0xff, 0xd9, 0x38, 0x48, 0xef, 0x89, 0x23, 0x2c, 0x57, 0xe6, 0x9d, + 0xe9, 0xc8, 0x09, 0xee, 0x4c, 0x6f, 0xc1, 0x84, 0xeb, 0xb9, 0x91, 0xeb, 0xb4, 0xb9, 0xfd, 0x49, + 0x6e, 0xa7, 0x2a, 0x0c, 0x60, 0x62, 0xd9, 0x80, 0x65, 0xd0, 0x49, 0xd4, 0x25, 0xaf, 0x41, 0x91, + 0xef, 0x37, 0x72, 0x00, 0x1f, 0xdf, 0xc5, 0x83, 0x7b, 0xf7, 0x88, 0xd8, 0x40, 0x41, 0x89, 0x1f, + 0x3e, 0x44, 0xfe, 0x27, 0x7d, 0xfc, 0x96, 0xe3, 0x38, 0x3e, 0x7c, 0xa4, 0xe0, 0xd8, 0x57, 0x83, + 0x51, 0xd9, 0x74, 0xdc, 0x76, 0x2f, 0xa0, 0x31, 0x95, 0xb1, 0x24, 0x95, 0x1b, 0x29, 0x38, 0xf6, + 0xd5, 0x20, 0x9b, 0x30, 0x21, 0xcb, 0x84, 0xc3, 0xde, 0xf8, 0x09, 0xbf, 0x92, 0x3b, 0x66, 0xde, + 0x30, 0x28, 0x61, 0x82, 0x2e, 0xe9, 0xc1, 0x59, 0xd7, 0x6b, 0xf8, 0x5e, 0xa3, 0xdd, 0x0b, 0xdd, + 0x1d, 0x1a, 0x07, 0xe6, 0x9d, 0x84, 0xd9, 0x85, 0xfd, 0xbd, 0xb9, 0xb3, 0xcb, 0x69, 0x72, 0xd8, + 0xcf, 0x81, 0x7c, 0xd1, 0x82, 0x0b, 0x0d, 0xdf, 0x0b, 0x79, 0xfe, 0x90, 0x1d, 0x7a, 0x3d, 0x08, + 0xfc, 0x40, 0xf0, 0x2e, 0x9f, 0x90, 0x37, 0x37, 0x7b, 0x2e, 0x66, 0x91, 0xc4, 0x6c, 0x4e, 0xe4, + 0x4d, 0x28, 0x75, 0x03, 0x7f, 0xc7, 0x6d, 0xd2, 0x40, 0x3a, 0x7f, 0xae, 0xe4, 0x91, 0x54, 0x69, + 0x4d, 0xd2, 0x8c, 0x97, 0x1e, 0x55, 0x82, 0x9a, 0x1f, 0xf9, 0x8a, 0x05, 0x17, 0x0d, 0xa9, 0xe4, + 0xb0, 0x12, 0x2d, 0x50, 0x39, 0x61, 0x0b, 0x70, 0x53, 0xf8, 0x62, 0x36, 0x51, 0x1c, 0xc4, 0xcd, + 0xfe, 0xb3, 0x0a, 0x4c, 0x26, 0x05, 0x27, 0xbf, 0x00, 0xd0, 0x0d, 0xfc, 0x0e, 0x8d, 0xb6, 0xa8, + 0x0e, 0xf5, 0xba, 0x3d, 0x6c, 0x02, 0x1f, 0x45, 0x4f, 0xb9, 0x6e, 0xb1, 0x85, 0x2b, 0x2e, 0x45, + 0x83, 0x23, 0x09, 0x60, 0x7c, 0x5b, 0x28, 0x00, 0x52, 0x1f, 0x7a, 0x35, 0x17, 0xed, 0x4d, 0x72, + 0xe6, 0x31, 0x4a, 0xb2, 0x08, 0x15, 0x23, 0xb2, 0x01, 0x85, 0x07, 0x74, 0x23, 0x9f, 0xec, 0x11, + 0xf7, 0xa8, 0x3c, 0x57, 0xd5, 0xc6, 0xf7, 0xf7, 0xe6, 0x0a, 0xf7, 0xe8, 0x06, 0x32, 0xe2, 0xec, + 0xbb, 0x9a, 0xc2, 0x7f, 0x43, 0x2e, 0x5a, 0xaf, 0xe6, 0xe8, 0x0c, 0x22, 0xbe, 0x4b, 0x16, 0xa1, + 0x62, 0x44, 0xde, 0x84, 0xf2, 0x03, 0x67, 0x87, 0x6e, 0x06, 0xbe, 0x17, 0x49, 0x7f, 0xc1, 0x21, + 0x03, 0x6c, 0xee, 0x29, 0x72, 0x92, 0x2f, 0x57, 0x34, 0x74, 0x21, 0xc6, 0xec, 0xc8, 0x0e, 0x94, + 0x3c, 0xfa, 0x00, 0x69, 0xdb, 0x6d, 0xe4, 0x13, 0xd0, 0x72, 0x5b, 0x52, 0x93, 0x9c, 0xf9, 0x0e, + 0xac, 0xca, 0x50, 0xf3, 0x62, 0x7d, 0x79, 0xdf, 0xdf, 0xc8, 0xc7, 0xad, 0x44, 0x9f, 0x91, 0x45, + 0x5f, 0xde, 0xf2, 0x37, 0x90, 0x11, 0x67, 0x73, 0xa4, 0xa1, 0x9d, 0xd5, 0xe4, 0x82, 0x79, 0x3b, + 0x5f, 0x27, 0x3d, 0x31, 0x47, 0xe2, 0x52, 0x34, 0x38, 0xb2, 0xb6, 0x6d, 0x49, 0xb3, 0xa9, 0x5c, + 0x32, 0x87, 0x6c, 0xdb, 0xa4, 0x11, 0x56, 0xb4, 0xad, 0x2a, 0x43, 0xcd, 0x8b, 0xf1, 0x75, 0xa5, + 0x0d, 0x32, 0x9f, 0x45, 0x33, 0x69, 0xd1, 0x14, 0x7c, 0x55, 0x19, 0x6a, 0x5e, 0xac, 0xbd, 0xc3, + 0xed, 0xdd, 0x07, 0x4e, 0x7b, 0xdb, 0xf5, 0x5a, 0x72, 0x89, 0x1c, 0x36, 0xd4, 0x6f, 0x7b, 0xf7, + 0x9e, 0xa0, 0x67, 0xb6, 0x77, 0x5c, 0x8a, 0x06, 0x47, 0xf2, 0x77, 0x2c, 0x1d, 0x8e, 0x34, 0x91, + 0x87, 0x23, 0x57, 0x72, 0xc9, 0x95, 0xd1, 0x49, 0x42, 0x65, 0xfd, 0x69, 0xed, 0x7b, 0xca, 0x0b, + 0xbf, 0xf6, 0x87, 0x73, 0x33, 0xd4, 0x6b, 0xf8, 0x4d, 0xd7, 0x6b, 0x2d, 0xdc, 0x0f, 0x7d, 0x6f, + 0x1e, 0x9d, 0x07, 0xea, 0xb4, 0x20, 0x65, 0x9a, 0xfd, 0x18, 0x54, 0x0c, 0x12, 0x87, 0xa9, 0x9c, + 0x13, 0xa6, 0xca, 0xf9, 0x93, 0x31, 0x98, 0x30, 0x73, 0xb1, 0x1e, 0x41, 0x0f, 0xd4, 0x67, 0x9f, + 0x91, 0xe3, 0x9c, 0x7d, 0xd8, 0x61, 0xd7, 0xb8, 0x6a, 0x53, 0x86, 0xb6, 0xe5, 0xdc, 0x54, 0xff, + 0xf8, 0xb0, 0x6b, 0x14, 0x86, 0x98, 0x60, 0x7a, 0x0c, 0xef, 0x1b, 0xa6, 0x40, 0x0b, 0x15, 0xb3, + 0x98, 0x54, 0xa0, 0x13, 0x4a, 0xe3, 0x35, 0x80, 0x38, 0x69, 0xa8, 0xbc, 0x82, 0xd5, 0x9a, 0xb9, + 0x91, 0xcc, 0xd4, 0xc0, 0x22, 0x4f, 0xc3, 0x18, 0x53, 0xc2, 0x68, 0x53, 0x66, 0x56, 0xd0, 0x16, + 0x85, 0x1b, 0xbc, 0x14, 0x25, 0x94, 0xbc, 0xc8, 0xf4, 0xe5, 0x58, 0x75, 0x92, 0x09, 0x13, 0xce, + 0xc7, 0xfa, 0x72, 0x0c, 0xc3, 0x04, 0x26, 0x13, 0x9d, 0x32, 0x4d, 0x87, 0xaf, 0x0d, 0x86, 0xe8, + 0x5c, 0xfd, 0x41, 0x01, 0xe3, 0x16, 0xae, 0x94, 0x66, 0xc4, 0xe7, 0x74, 0xd1, 0xb0, 0x70, 0xa5, + 0xe0, 0xd8, 0x57, 0x83, 0x7d, 0x8c, 0xbc, 0x3d, 0xae, 0x08, 0xa7, 0xf1, 0x01, 0xf7, 0xbe, 0xbf, + 0x68, 0x9e, 0xfa, 0x72, 0x9c, 0x43, 0x62, 0xd4, 0x1e, 0xe3, 0xd8, 0x77, 0x0b, 0x48, 0xbf, 0x32, + 0x24, 0xe3, 0x55, 0xb4, 0xa1, 0xab, 0x5f, 0x8f, 0xc2, 0x8c, 0x5a, 0xc3, 0x1d, 0xf6, 0xbe, 0x62, + 0xc1, 0x64, 0x72, 0x4b, 0xcb, 0xfb, 0x42, 0x87, 0xfc, 0x7f, 0x30, 0x1e, 0xb9, 0x1d, 0xea, 0xf7, + 0x84, 0x09, 0xa1, 0x20, 0xb4, 0x84, 0x75, 0x51, 0x84, 0x0a, 0x66, 0xff, 0xfd, 0x31, 0x38, 0x77, + 0xbb, 0xe5, 0x7a, 0xe9, 0x5c, 0x7b, 0x59, 0x0f, 0x6b, 0x58, 0xc7, 0x7e, 0x58, 0x43, 0xc7, 0x42, + 0xca, 0x67, 0x2b, 0xb2, 0x63, 0x21, 0xd5, 0x1b, 0x22, 0x49, 0x5c, 0xf2, 0x07, 0x16, 0x3c, 0xe9, + 0x34, 0xc5, 0xa9, 0xc8, 0x69, 0xcb, 0x52, 0x23, 0x1f, 0xbc, 0x5c, 0x45, 0xc2, 0x21, 0x35, 0x8b, + 0xfe, 0x8f, 0x9f, 0xaf, 0x1e, 0xc0, 0x55, 0x8c, 0xb2, 0x9f, 0x92, 0x5f, 0xf0, 0xe4, 0x41, 0xa8, + 0x78, 0xa0, 0xf8, 0xe4, 0x2f, 0xc3, 0x54, 0xe2, 0x83, 0xe5, 0x3d, 0x40, 0x59, 0x5c, 0xd7, 0xd4, + 0x93, 0x20, 0x4c, 0xe3, 0x92, 0xef, 0x5b, 0x30, 0x23, 0x8c, 0xce, 0x19, 0x4d, 0x23, 0xee, 0xa9, + 0xfd, 0xfc, 0x9b, 0x66, 0x71, 0x00, 0x47, 0xd1, 0x2c, 0xb1, 0x15, 0x7a, 0x00, 0x1a, 0x0e, 0x14, + 0x79, 0xf6, 0x0e, 0x7c, 0xf0, 0xd0, 0x76, 0x3f, 0xd6, 0xeb, 0x01, 0xaf, 0xc2, 0xa5, 0x03, 0xa5, + 0x3d, 0xd6, 0x8c, 0xfd, 0x9e, 0x05, 0x13, 0x66, 0xce, 0x30, 0xf2, 0x2c, 0x94, 0x22, 0x7f, 0x9b, + 0x7a, 0x77, 0x03, 0xe5, 0x45, 0xae, 0x57, 0x9e, 0x75, 0x5e, 0x8e, 0x2b, 0xa8, 0x31, 0x18, 0x76, + 0xa3, 0xed, 0x52, 0x2f, 0x5a, 0x6e, 0xca, 0x39, 0xa0, 0xb1, 0x17, 0x45, 0xf9, 0x12, 0x6a, 0x0c, + 0xe1, 0x7e, 0xc9, 0x7e, 0x0b, 0x3f, 0x66, 0x69, 0x2d, 0x31, 0xdc, 0x2f, 0x63, 0x18, 0x26, 0x30, + 0x89, 0xad, 0xad, 0xdf, 0xa3, 0xf1, 0x95, 0x57, 0xca, 0x5a, 0xfd, 0x1d, 0x0b, 0xca, 0xe2, 0xf6, + 0x06, 0xe9, 0x66, 0xca, 0xef, 0x3b, 0x65, 0x5f, 0xaa, 0xae, 0x2d, 0x67, 0xf9, 0x7d, 0x5f, 0x81, + 0xd1, 0x6d, 0xd7, 0x53, 0x5f, 0xa2, 0xf5, 0x84, 0x57, 0x5d, 0xaf, 0x89, 0x1c, 0xa2, 0x35, 0x89, + 0xc2, 0x40, 0x4d, 0x62, 0x01, 0xca, 0xda, 0x27, 0x49, 0xee, 0xc7, 0xb1, 0xfb, 0xb6, 0x02, 0x60, + 0x8c, 0x63, 0xff, 0x86, 0x05, 0x93, 0x3c, 0x8d, 0x41, 0x6c, 0x2a, 0x79, 0x41, 0xbb, 0x09, 0x0a, + 0xb9, 0x2f, 0x25, 0xdd, 0x04, 0xdf, 0xdd, 0x9b, 0xab, 0x88, 0xc4, 0x07, 0x49, 0xaf, 0xc1, 0x4f, + 0x4b, 0xfb, 0x2a, 0x77, 0x66, 0x1c, 0x39, 0xb6, 0xf9, 0x2f, 0x16, 0x53, 0x11, 0xc1, 0x98, 0x9e, + 0xfd, 0x16, 0x4c, 0x98, 0x11, 0x82, 0xe4, 0x05, 0xa8, 0x74, 0x5d, 0xaf, 0x95, 0x8c, 0x24, 0xd7, + 0x77, 0x50, 0x6b, 0x31, 0x08, 0x4d, 0x3c, 0x5e, 0xcd, 0x8f, 0xab, 0xa5, 0xae, 0xae, 0xd6, 0x7c, + 0xb3, 0x5a, 0xfc, 0xc7, 0xf6, 0x00, 0xe2, 0x70, 0xf7, 0x23, 0xd9, 0xf5, 0xc6, 0xc4, 0xb5, 0x90, + 0xd0, 0x0e, 0x79, 0xea, 0x92, 0x31, 0x31, 0xc2, 0xdf, 0xdd, 0x3b, 0x48, 0xfb, 0x14, 0xb5, 0xf8, + 0xc3, 0x28, 0x19, 0x91, 0xaf, 0xb9, 0x3f, 0x8c, 0x92, 0xc1, 0xe3, 0xbd, 0x7b, 0x18, 0x25, 0x4b, + 0x98, 0x3f, 0x5f, 0x0f, 0xa3, 0x7c, 0x12, 0x8e, 0x9b, 0x23, 0x99, 0x29, 0x7b, 0x0f, 0xcc, 0x5c, + 0x26, 0xba, 0xc5, 0x65, 0x32, 0x13, 0x09, 0xb5, 0x7f, 0x77, 0x14, 0xa6, 0xd3, 0x36, 0x9f, 0xbc, + 0x1d, 0x7b, 0xc8, 0xd7, 0x2d, 0x98, 0x74, 0x12, 0xf9, 0x28, 0x73, 0x7a, 0x65, 0x2d, 0x41, 0xd3, + 0xc8, 0x87, 0x98, 0x28, 0xc7, 0x14, 0x6f, 0x53, 0xd7, 0x1a, 0x1d, 0xac, 0x6b, 0xb1, 0x4d, 0xc0, + 0xe5, 0x7a, 0x64, 0x40, 0xa5, 0x93, 0xfa, 0x74, 0x6c, 0x44, 0x17, 0xe5, 0xa8, 0x31, 0xc8, 0x43, + 0x18, 0x17, 0x2e, 0x40, 0xca, 0xd7, 0x6b, 0x35, 0x27, 0xdb, 0x94, 0xf0, 0x32, 0x8a, 0xbb, 0x40, + 0xfc, 0x0f, 0x51, 0xb1, 0x63, 0xfa, 0x3a, 0x04, 0x8e, 0xd7, 0xa2, 0xbc, 0xcd, 0xa5, 0x35, 0xe5, + 0xf5, 0xbc, 0xcc, 0x80, 0xa8, 0x29, 0x57, 0x83, 0x56, 0x28, 0x23, 0x4d, 0x75, 0x19, 0x1a, 0x9c, + 0xed, 0x5f, 0xb1, 0x60, 0x66, 0x50, 0x45, 0x36, 0x50, 0xf8, 0xaa, 0x2b, 0x47, 0x94, 0x91, 0xe0, + 0xc2, 0x09, 0x22, 0x14, 0x30, 0x72, 0x09, 0x0a, 0x54, 0x6f, 0x54, 0x3a, 0x1b, 0xe7, 0x75, 0xaf, + 0x89, 0xac, 0x9c, 0x5c, 0x83, 0xd1, 0x30, 0xa2, 0xdd, 0x54, 0x14, 0xc7, 0x28, 0x5b, 0x3c, 0x33, + 0xae, 0x21, 0x38, 0xae, 0xfd, 0x11, 0x38, 0x66, 0x4a, 0x6d, 0xfb, 0x3a, 0x10, 0xf4, 0xdb, 0xed, + 0x0d, 0xa7, 0xb1, 0x7d, 0xcf, 0xf5, 0x9a, 0xfe, 0x03, 0xbe, 0x31, 0x2c, 0x40, 0x39, 0x90, 0x51, + 0xf5, 0xa1, 0x9c, 0x53, 0x7a, 0x67, 0x51, 0xe1, 0xf6, 0x21, 0xc6, 0x38, 0xf6, 0xf7, 0x47, 0x60, + 0x5c, 0xa6, 0x80, 0x78, 0x04, 0x21, 0x44, 0xdb, 0x09, 0xc7, 0x8d, 0xe5, 0x5c, 0x32, 0x57, 0x0c, + 0x8c, 0x1f, 0x0a, 0x53, 0xf1, 0x43, 0xaf, 0xe6, 0xc3, 0xee, 0xe0, 0xe0, 0xa1, 0xef, 0x16, 0x61, + 0x2a, 0x95, 0x52, 0x23, 0x95, 0x7d, 0xdf, 0x7a, 0x4f, 0xb2, 0xef, 0x93, 0x30, 0xf1, 0x02, 0x43, + 0x7e, 0x0e, 0xc7, 0x7f, 0xf1, 0x18, 0x43, 0x5e, 0xae, 0xe0, 0xc5, 0xf7, 0x8f, 0x2b, 0xf8, 0x7f, + 0xb5, 0xe0, 0xf1, 0x81, 0x89, 0x61, 0x78, 0x8a, 0xc5, 0x20, 0x09, 0x95, 0xeb, 0x45, 0xce, 0xc9, + 0xb6, 0xb4, 0x93, 0x47, 0x3a, 0x2b, 0x5e, 0x9a, 0x3d, 0x79, 0x1e, 0x26, 0xf8, 0xda, 0xcc, 0x56, + 0x4e, 0xb6, 0xf6, 0x8a, 0x3b, 0x6a, 0x7e, 0x5b, 0x59, 0x37, 0xca, 0x31, 0x81, 0x65, 0x7f, 0xdb, + 0x82, 0x99, 0x41, 0x09, 0xf7, 0x8e, 0xa0, 0xe7, 0xfe, 0xa5, 0x54, 0x08, 0xd6, 0x5c, 0x5f, 0x08, + 0x56, 0xca, 0x72, 0xa9, 0xa2, 0xad, 0x0c, 0xa3, 0x61, 0xe1, 0x90, 0x08, 0xa3, 0xdf, 0x2b, 0xc0, + 0xb4, 0x14, 0x31, 0x3e, 0xa2, 0xbc, 0x98, 0x08, 0x1c, 0xfb, 0xa9, 0x54, 0xe0, 0xd8, 0xf9, 0x34, + 0xfe, 0x5f, 0x44, 0x8d, 0xbd, 0xbf, 0xa2, 0xc6, 0xbe, 0x56, 0x84, 0x0b, 0x99, 0xa9, 0xed, 0xc8, + 0x57, 0x33, 0x76, 0x8a, 0x7b, 0x39, 0xe7, 0xd0, 0xd3, 0xa1, 0xed, 0xa7, 0x1b, 0x6a, 0xf5, 0x6b, + 0x66, 0x88, 0x93, 0x58, 0xfd, 0x37, 0x4f, 0x21, 0x1b, 0xe0, 0x71, 0xa3, 0x9d, 0x1e, 0xed, 0xeb, + 0x84, 0x7f, 0x0e, 0x96, 0xfa, 0xaf, 0x15, 0xe0, 0xea, 0x51, 0x5b, 0xf6, 0x7d, 0x1a, 0x1e, 0x1c, + 0x26, 0xc2, 0x83, 0x1f, 0x91, 0x6a, 0x73, 0x2a, 0x91, 0xc2, 0x7f, 0x6f, 0x54, 0xef, 0xbb, 0xfd, + 0x13, 0xf6, 0x48, 0x96, 0x97, 0x71, 0xa6, 0xfa, 0xaa, 0x37, 0x1c, 0xe2, 0xbd, 0x61, 0xbc, 0x2e, + 0x8a, 0xdf, 0xdd, 0x9b, 0x3b, 0x1b, 0xe7, 0x80, 0x92, 0x85, 0xa8, 0x2a, 0x91, 0xab, 0x50, 0x0a, + 0x04, 0x54, 0x05, 0x44, 0x4a, 0xb7, 0x34, 0x51, 0x86, 0x1a, 0x4a, 0xbe, 0x60, 0x9c, 0x15, 0x46, + 0x4f, 0x2b, 0xd5, 0xd9, 0x41, 0xd7, 0x2e, 0x6f, 0x40, 0x29, 0x54, 0x0f, 0x0d, 0x88, 0xe9, 0xf4, + 0xdc, 0x11, 0xe3, 0x6c, 0x9d, 0x0d, 0xda, 0x56, 0xaf, 0x0e, 0x88, 0xef, 0xd3, 0x6f, 0x12, 0x68, + 0x92, 0xc4, 0xd6, 0x96, 0x09, 0x71, 0x07, 0x07, 0xfd, 0x56, 0x09, 0x12, 0xc1, 0xb8, 0x7c, 0x6d, + 0x5c, 0x1e, 0x67, 0x57, 0x73, 0x0a, 0x58, 0x93, 0xe1, 0x0c, 0xfc, 0xc0, 0xaf, 0x2c, 0x72, 0x8a, + 0x95, 0xfd, 0x43, 0x0b, 0x2a, 0x72, 0x8c, 0x3c, 0x82, 0x80, 0xe3, 0xfb, 0xc9, 0x80, 0xe3, 0xeb, + 0xb9, 0x2c, 0xe1, 0x03, 0xa2, 0x8d, 0xef, 0xc3, 0x84, 0x99, 0x64, 0x96, 0x7c, 0xca, 0xd8, 0x82, + 0xac, 0x61, 0x12, 0x29, 0xaa, 0x4d, 0x2a, 0xde, 0x9e, 0xec, 0x7f, 0x52, 0xd6, 0xad, 0xc8, 0x0f, + 0xce, 0xe6, 0xc8, 0xb7, 0x0e, 0x1c, 0xf9, 0xe6, 0xc0, 0x1b, 0xc9, 0x7f, 0xe0, 0xbd, 0x06, 0x25, + 0xb5, 0x2c, 0x4a, 0x6d, 0xea, 0x29, 0x33, 0xbe, 0x81, 0xa9, 0x64, 0x8c, 0x98, 0x31, 0x5d, 0xf8, + 0x01, 0x38, 0xbe, 0x27, 0x50, 0xcb, 0xb5, 0x26, 0x43, 0xde, 0x84, 0xca, 0x03, 0x3f, 0xd8, 0x6e, + 0xfb, 0x0e, 0x7f, 0xdd, 0x05, 0xf2, 0x70, 0x64, 0xd1, 0xb6, 0x7e, 0x11, 0x64, 0x76, 0x2f, 0xa6, + 0x8f, 0x26, 0x33, 0x52, 0x85, 0xa9, 0x8e, 0xeb, 0x21, 0x75, 0x9a, 0x3a, 0xae, 0x78, 0x54, 0xbc, + 0xac, 0xa0, 0x74, 0xfb, 0xd5, 0x24, 0x18, 0xd3, 0xf8, 0xdc, 0x2e, 0x17, 0x24, 0x4c, 0x1d, 0x32, + 0x7d, 0xfa, 0xda, 0xf0, 0x83, 0x31, 0x69, 0x3e, 0x11, 0x51, 0x56, 0xc9, 0x72, 0x4c, 0xf1, 0x26, + 0x9f, 0x87, 0x52, 0xa8, 0xde, 0xf1, 0x2d, 0xe6, 0x78, 0xea, 0xd1, 0x6f, 0xf9, 0xea, 0xae, 0xd4, + 0x8f, 0xf9, 0x6a, 0x86, 0x64, 0x05, 0xce, 0x2b, 0xdb, 0x4d, 0xe2, 0x49, 0xd2, 0xb1, 0x38, 0x05, + 0x20, 0x66, 0xc0, 0x31, 0xb3, 0x16, 0xd3, 0x6d, 0x79, 0xf2, 0x66, 0xe1, 0x38, 0x60, 0xdc, 0xb5, + 0xf3, 0xf9, 0xd7, 0x44, 0x09, 0x3d, 0x28, 0x6c, 0xbe, 0x34, 0x44, 0xd8, 0x7c, 0x1d, 0x2e, 0xa4, + 0x41, 0x3c, 0xb7, 0x23, 0x4f, 0x27, 0x69, 0x6c, 0xa1, 0x6b, 0x59, 0x48, 0x98, 0x5d, 0x97, 0xdc, + 0x83, 0x72, 0x40, 0xf9, 0x29, 0xaf, 0xaa, 0xbc, 0x3f, 0x8f, 0xed, 0xe7, 0x8e, 0x8a, 0x00, 0xc6, + 0xb4, 0x58, 0xbf, 0x3b, 0xc9, 0xb7, 0x0e, 0x5e, 0xcb, 0xf1, 0xa1, 0x7f, 0xd9, 0xf7, 0x03, 0x72, + 0xae, 0xda, 0xff, 0x6e, 0x0a, 0xce, 0x24, 0x0c, 0x50, 0xe4, 0x29, 0x28, 0xf2, 0x64, 0x97, 0x7c, + 0xb5, 0x2a, 0xc5, 0x2b, 0xaa, 0x68, 0x1c, 0x01, 0x23, 0xbf, 0x6c, 0xc1, 0x54, 0x37, 0x71, 0xbd, + 0xa5, 0x16, 0xf2, 0x21, 0x6d, 0xda, 0xc9, 0x3b, 0x33, 0xe3, 0x95, 0xa0, 0x24, 0x33, 0x4c, 0x73, + 0x67, 0xeb, 0x81, 0x0c, 0x16, 0x69, 0xd3, 0x80, 0x63, 0x4b, 0x45, 0x4f, 0x93, 0x58, 0x4c, 0x82, + 0x31, 0x8d, 0xcf, 0x7a, 0x98, 0x7f, 0xdd, 0x30, 0x8f, 0x39, 0x57, 0x15, 0x01, 0x8c, 0x69, 0x91, + 0x97, 0x61, 0x52, 0xa6, 0xb8, 0x5f, 0xf3, 0x9b, 0x37, 0x9d, 0x70, 0x4b, 0x1e, 0xf9, 0xf4, 0x11, + 0x75, 0x31, 0x01, 0xc5, 0x14, 0x36, 0xff, 0xb6, 0xf8, 0x1d, 0x01, 0x4e, 0x60, 0x2c, 0xf9, 0x88, + 0xd2, 0x62, 0x12, 0x8c, 0x69, 0x7c, 0xf2, 0xac, 0xb1, 0x0d, 0x09, 0x67, 0x1e, 0xbd, 0x1a, 0x64, + 0x6c, 0x45, 0x55, 0x98, 0xea, 0xf1, 0x13, 0x72, 0x53, 0x01, 0xe5, 0x7c, 0xd4, 0x0c, 0xef, 0x26, + 0xc1, 0x98, 0xc6, 0x27, 0x2f, 0xc1, 0x99, 0x80, 0x2d, 0xb6, 0x9a, 0x80, 0xf0, 0xf0, 0xd1, 0xce, + 0x14, 0x68, 0x02, 0x31, 0x89, 0x4b, 0x5e, 0x81, 0xb3, 0x71, 0x1a, 0x64, 0x45, 0x40, 0xb8, 0xfc, + 0xe8, 0x9c, 0x9c, 0xd5, 0x34, 0x02, 0xf6, 0xd7, 0x21, 0x7f, 0x15, 0xa6, 0x8d, 0x96, 0x58, 0xf6, + 0x9a, 0xf4, 0xa1, 0x4c, 0x55, 0xcb, 0x1f, 0x05, 0x5c, 0x4c, 0xc1, 0xb0, 0x0f, 0x9b, 0x7c, 0x1c, + 0x26, 0x1b, 0x7e, 0xbb, 0xcd, 0xd7, 0x38, 0xf1, 0x80, 0x8f, 0xc8, 0x49, 0x2b, 0xb2, 0xf7, 0x26, + 0x20, 0x98, 0xc2, 0x24, 0xb7, 0x80, 0xf8, 0x1b, 0x4c, 0xbd, 0xa2, 0xcd, 0x57, 0xa8, 0x47, 0xa5, + 0xc6, 0x71, 0x26, 0x19, 0xaa, 0x76, 0xa7, 0x0f, 0x03, 0x33, 0x6a, 0xf1, 0x94, 0x9e, 0x46, 0x68, + 0xff, 0x64, 0x1e, 0x8f, 0x08, 0xa4, 0xed, 0x39, 0x87, 0xc6, 0xf5, 0x07, 0x30, 0x26, 0x3c, 0x22, + 0xf2, 0x49, 0x4e, 0x6b, 0xbe, 0xe5, 0x11, 0xef, 0x11, 0xa2, 0x14, 0x25, 0x27, 0xf2, 0x0b, 0x50, + 0xde, 0x50, 0x0f, 0x3b, 0xf1, 0x8c, 0xb4, 0x43, 0xef, 0x8b, 0xa9, 0x37, 0xca, 0x62, 0x7b, 0x85, + 0x06, 0x60, 0xcc, 0x92, 0x3c, 0x0d, 0x95, 0x9b, 0x6b, 0x55, 0x3d, 0x0a, 0xcf, 0xf2, 0xde, 0x1f, + 0x65, 0x55, 0xd0, 0x04, 0xb0, 0x19, 0xa6, 0xd5, 0x37, 0x92, 0x74, 0x9a, 0xc8, 0xd0, 0xc6, 0x18, + 0x36, 0x77, 0x91, 0xc1, 0xfa, 0xcc, 0xb9, 0x14, 0xb6, 0x2c, 0x47, 0x8d, 0x41, 0xde, 0x80, 0x8a, + 0xdc, 0x2f, 0xf8, 0xda, 0x74, 0xfe, 0x64, 0x69, 0x23, 0x30, 0x26, 0x81, 0x26, 0x3d, 0x7e, 0x7d, + 0xcf, 0xdf, 0xbb, 0xa1, 0x37, 0x7a, 0xed, 0xf6, 0xcc, 0x05, 0xbe, 0x6e, 0xc6, 0xd7, 0xf7, 0x31, + 0x08, 0x4d, 0x3c, 0xf2, 0x9c, 0x72, 0xaf, 0x7c, 0x2c, 0xe1, 0xcf, 0xa0, 0xdd, 0x2b, 0xb5, 0xd2, + 0x3d, 0x20, 0xb2, 0xec, 0xe2, 0x21, 0x7e, 0x8d, 0x1b, 0x30, 0xab, 0x34, 0xbe, 0xfe, 0x49, 0x32, + 0x33, 0x93, 0xb0, 0x1d, 0xcd, 0xde, 0x1b, 0x88, 0x89, 0x07, 0x50, 0x21, 0x1b, 0x50, 0x70, 0xda, + 0x1b, 0x33, 0x8f, 0xe7, 0xa1, 0xba, 0x56, 0x57, 0x6a, 0x72, 0x44, 0x71, 0x1f, 0xec, 0xea, 0x4a, + 0x0d, 0x19, 0x71, 0xe2, 0xc2, 0xa8, 0xd3, 0xde, 0x08, 0x67, 0x66, 0xf9, 0x9c, 0xcd, 0x8d, 0x49, + 0x6c, 0x3c, 0x58, 0xa9, 0x85, 0xc8, 0x59, 0xd8, 0x5f, 0x1c, 0xd1, 0xb7, 0x44, 0xfa, 0x7d, 0x80, + 0xb7, 0xcc, 0x09, 0x24, 0x8e, 0x3b, 0x77, 0x72, 0x9b, 0x40, 0x52, 0xbd, 0x38, 0x33, 0x70, 0xfa, + 0x74, 0xf5, 0x92, 0x91, 0x4b, 0x7a, 0xbf, 0xe4, 0xdb, 0x07, 0xe2, 0xf4, 0x9c, 0x5c, 0x30, 0xec, + 0x2f, 0x55, 0xb4, 0x15, 0x34, 0xe5, 0x26, 0x18, 0x40, 0xd1, 0x0d, 0x23, 0xd7, 0xcf, 0x31, 0x9b, + 0x42, 0xea, 0xd1, 0x00, 0x1e, 0xac, 0xc5, 0x01, 0x28, 0x58, 0x31, 0x9e, 0x5e, 0xcb, 0xf5, 0x1e, + 0xca, 0xcf, 0x7f, 0x2d, 0x77, 0x27, 0x37, 0xc1, 0x93, 0x03, 0x50, 0xb0, 0x22, 0xf7, 0xc5, 0xa0, + 0x2e, 0xe4, 0xd1, 0xd7, 0xd5, 0x95, 0x5a, 0x8a, 0x5f, 0x72, 0x70, 0xdf, 0x87, 0x42, 0xd8, 0x71, + 0xa5, 0xba, 0x34, 0x24, 0xaf, 0xfa, 0xea, 0x72, 0x16, 0xaf, 0xfa, 0xea, 0x32, 0x32, 0x26, 0xfc, + 0xaa, 0xdf, 0xe9, 0x6c, 0x38, 0x61, 0xe8, 0x34, 0xb5, 0x75, 0x66, 0xc8, 0xab, 0xfe, 0xaa, 0xa6, + 0x97, 0x62, 0xcd, 0xaf, 0xfa, 0x63, 0x28, 0x1a, 0x9c, 0xc9, 0x9b, 0x30, 0xee, 0x88, 0x87, 0x67, + 0x65, 0xc0, 0x48, 0x3e, 0xaf, 0x29, 0xa7, 0x24, 0xe0, 0x66, 0x1a, 0x09, 0x42, 0xc5, 0x90, 0xf1, + 0x8e, 0x02, 0x87, 0x6e, 0xba, 0xdb, 0xd2, 0x38, 0x54, 0x1f, 0xfa, 0x69, 0x24, 0x46, 0x2c, 0x8b, + 0xb7, 0x04, 0xa1, 0x62, 0x48, 0xbe, 0x62, 0xc1, 0x99, 0x8e, 0xe3, 0x39, 0x3a, 0x20, 0x39, 0x9f, + 0xb0, 0x75, 0x33, 0xc4, 0x39, 0xd6, 0x10, 0x57, 0x4d, 0x46, 0x98, 0xe4, 0x4b, 0x76, 0x60, 0xcc, + 0xe1, 0x4f, 0x62, 0xcb, 0xa3, 0x18, 0xe6, 0xf1, 0xbc, 0x76, 0xaa, 0x0d, 0xf8, 0xe2, 0x22, 0x1f, + 0xde, 0x96, 0xdc, 0xc8, 0x6f, 0x5a, 0x30, 0x2e, 0x62, 0x19, 0x98, 0x42, 0xca, 0xbe, 0xfd, 0xb3, + 0xa7, 0xf0, 0xf8, 0x88, 0x8c, 0xb3, 0x90, 0xce, 0x59, 0x1f, 0xd2, 0xbe, 0xd5, 0xa2, 0xf4, 0xc0, + 0x48, 0x0b, 0x25, 0x1d, 0x53, 0x7d, 0x3b, 0xce, 0xc3, 0xc4, 0xc3, 0x57, 0xa6, 0xea, 0xbb, 0x9a, + 0x82, 0x61, 0x1f, 0xf6, 0xec, 0xc7, 0x61, 0xc2, 0x94, 0xe3, 0x58, 0xd1, 0x1a, 0x3f, 0x2e, 0x00, + 0xf0, 0xae, 0x12, 0x49, 0x8c, 0x3a, 0x3c, 0xd7, 0xfa, 0x96, 0xdf, 0xcc, 0xe9, 0x01, 0x5e, 0x23, + 0x17, 0x11, 0xc8, 0xc4, 0xea, 0x5b, 0x7e, 0x13, 0x25, 0x13, 0xd2, 0x82, 0xd1, 0xae, 0x13, 0x6d, + 0xe5, 0x9f, 0xf8, 0xa8, 0x24, 0xa2, 0xf9, 0xa3, 0x2d, 0xe4, 0x0c, 0xc8, 0xdb, 0x56, 0xec, 0xf7, + 0x54, 0xc8, 0x23, 0x5d, 0x74, 0xdc, 0x66, 0xf3, 0xd2, 0xd3, 0x29, 0x95, 0x35, 0x39, 0xed, 0xff, + 0x34, 0xfb, 0x8e, 0x05, 0x13, 0x26, 0x6a, 0x46, 0x37, 0xfd, 0xbc, 0xd9, 0x4d, 0x79, 0xb6, 0x87, + 0xd9, 0xe3, 0xff, 0xdd, 0x02, 0xc0, 0x9e, 0x57, 0xef, 0x75, 0x3a, 0x4c, 0x6d, 0xd7, 0x41, 0x29, + 0xd6, 0x91, 0x83, 0x52, 0x46, 0x8e, 0x19, 0x94, 0x52, 0x38, 0x56, 0x50, 0xca, 0xe8, 0xf1, 0x83, + 0x52, 0x8a, 0x83, 0x83, 0x52, 0xec, 0x6f, 0x5a, 0x70, 0xb6, 0x6f, 0xbf, 0x62, 0x9a, 0x74, 0xe0, + 0xfb, 0xd1, 0x00, 0xff, 0x59, 0x8c, 0x41, 0x68, 0xe2, 0x91, 0x25, 0x98, 0x96, 0x2f, 0x0b, 0xd5, + 0xbb, 0x6d, 0x37, 0x33, 0x29, 0xd5, 0x7a, 0x0a, 0x8e, 0x7d, 0x35, 0xec, 0x7f, 0x65, 0x41, 0xc5, + 0x48, 0x65, 0xc1, 0x7d, 0xce, 0xf8, 0x8d, 0x57, 0xda, 0xe7, 0x8c, 0x5f, 0x75, 0x09, 0x98, 0xb8, + 0x86, 0x6e, 0x19, 0xef, 0x4e, 0xc4, 0xd7, 0xd0, 0xac, 0x14, 0x25, 0x54, 0xbc, 0x28, 0x20, 0x9d, + 0xcf, 0x0a, 0xe6, 0x8b, 0x02, 0xb4, 0x2b, 0x5c, 0xcd, 0x62, 0x17, 0xb7, 0xd1, 0xc3, 0x5d, 0xdc, + 0x8a, 0xd9, 0x2e, 0x6e, 0xf6, 0x1d, 0x98, 0x10, 0xbe, 0xe1, 0xaf, 0xd2, 0xdd, 0x23, 0xbf, 0x60, + 0xcd, 0x46, 0x7b, 0xca, 0x67, 0x8e, 0x55, 0x67, 0xe5, 0xb6, 0x03, 0x71, 0x7a, 0xed, 0x23, 0x50, + 0xbb, 0x06, 0xa0, 0x13, 0xfd, 0x0b, 0x47, 0xbc, 0x52, 0x3c, 0x20, 0xf5, 0x6b, 0x00, 0x4d, 0x34, + 0xb0, 0xec, 0x7f, 0x64, 0x41, 0xea, 0xe5, 0x34, 0xe3, 0x92, 0xc7, 0x1a, 0x78, 0xc9, 0x63, 0x5e, + 0x0c, 0x8c, 0x1c, 0x78, 0x31, 0x70, 0x0b, 0x48, 0x87, 0xcd, 0xb6, 0xe4, 0x5a, 0x5e, 0x48, 0x3e, + 0x30, 0xb3, 0xda, 0x87, 0x81, 0x19, 0xb5, 0xec, 0x7f, 0x28, 0x84, 0x35, 0xdf, 0x52, 0x3b, 0xbc, + 0x55, 0x7a, 0x50, 0xe4, 0xa4, 0xa4, 0x89, 0x6f, 0x48, 0xf3, 0x78, 0x7f, 0x8e, 0xbb, 0x78, 0xac, + 0xc8, 0x55, 0x85, 0x73, 0xb3, 0x7f, 0x4f, 0xc8, 0x6a, 0x3e, 0xb6, 0x76, 0xb8, 0xac, 0x9d, 0xa4, + 0xac, 0x37, 0xf3, 0x5a, 0x8e, 0xb3, 0x65, 0x24, 0xf3, 0x00, 0x5d, 0x1a, 0x34, 0xa8, 0x17, 0xa9, + 0x48, 0xbd, 0xa2, 0x8c, 0x19, 0xd7, 0xa5, 0x68, 0x60, 0xd8, 0xdf, 0x60, 0x73, 0x34, 0x7e, 0x3e, + 0x9e, 0x5c, 0x4d, 0xfb, 0x1a, 0xa7, 0xe7, 0x9f, 0x76, 0x35, 0x36, 0x42, 0xae, 0x46, 0x0e, 0x09, + 0xb9, 0x7a, 0x06, 0xc6, 0x03, 0xbf, 0x4d, 0xab, 0x81, 0x97, 0x76, 0x03, 0x42, 0x56, 0x8c, 0xb7, + 0x51, 0xc1, 0xed, 0x5f, 0xb7, 0x60, 0x3a, 0x1d, 0x60, 0x9a, 0xbb, 0x03, 0xb4, 0x99, 0x8f, 0xa3, + 0x70, 0xfc, 0x7c, 0x1c, 0xf6, 0x9f, 0x14, 0x61, 0x3a, 0xfd, 0xac, 0x25, 0xe3, 0xec, 0x72, 0x7b, + 0x5e, 0x6a, 0x83, 0x11, 0x86, 0x3c, 0x01, 0xd3, 0xe3, 0x65, 0x64, 0xe0, 0x78, 0xb9, 0x01, 0x65, + 0xbf, 0xab, 0x6c, 0x0a, 0x42, 0xb8, 0xab, 0xca, 0x1e, 0x74, 0x47, 0x01, 0xde, 0xdd, 0x9b, 0x3b, + 0x17, 0x0b, 0xa0, 0x8b, 0x31, 0xae, 0x4a, 0x7e, 0x46, 0x19, 0x43, 0x46, 0x13, 0x19, 0xae, 0xb4, + 0x31, 0x64, 0x2a, 0xae, 0x3f, 0xc8, 0x1e, 0x52, 0x3c, 0x4e, 0xa6, 0x9d, 0xb1, 0x1c, 0x33, 0xed, + 0xdc, 0x83, 0xb2, 0x34, 0xdf, 0x9e, 0x28, 0xc3, 0x0c, 0x27, 0x7c, 0x57, 0x11, 0xc0, 0x98, 0x56, + 0x2a, 0x85, 0x4f, 0x29, 0xd7, 0x14, 0x3e, 0x2f, 0xc1, 0xf8, 0x86, 0xd3, 0xd8, 0xf6, 0x37, 0x37, + 0xf9, 0x11, 0xa0, 0x5c, 0xfb, 0xa0, 0x6a, 0xb8, 0x9a, 0x28, 0xce, 0x18, 0x52, 0xaa, 0x06, 0x5b, + 0xe7, 0xa9, 0xf2, 0x78, 0x56, 0x96, 0x65, 0xbd, 0xce, 0x6b, 0x5f, 0xe8, 0x10, 0x0d, 0x2c, 0xf2, + 0x2c, 0x94, 0x9a, 0x6e, 0x28, 0x1e, 0x5e, 0xaf, 0x24, 0x1d, 0xe2, 0x97, 0x64, 0x39, 0x6a, 0x0c, + 0xf2, 0xb2, 0x76, 0x88, 0x9b, 0x88, 0x63, 0x55, 0xb4, 0x33, 0xdc, 0x01, 0xb1, 0x2a, 0xd2, 0xdf, + 0xf7, 0x6d, 0x36, 0x31, 0x23, 0xb7, 0xb1, 0xed, 0x7a, 0x22, 0x6d, 0x0b, 0x5b, 0x2d, 0x9e, 0x81, + 0x71, 0x2a, 0x9f, 0x7e, 0x17, 0xb7, 0x33, 0x7a, 0xb0, 0xa8, 0x17, 0xdf, 0x15, 0x9c, 0x54, 0x61, + 0x4a, 0xdd, 0x49, 0xab, 0x2b, 0x35, 0x91, 0x6e, 0x4a, 0x9b, 0xf0, 0x97, 0x92, 0x60, 0x4c, 0xe3, + 0xdb, 0x5f, 0x80, 0x8a, 0xa1, 0xeb, 0x71, 0xb5, 0xe8, 0xa1, 0xd3, 0xe8, 0x73, 0x61, 0xbf, 0xce, + 0x0a, 0x51, 0xc0, 0xf8, 0xcd, 0x9f, 0x88, 0xbf, 0x4c, 0xa9, 0x13, 0x32, 0xea, 0x52, 0x42, 0x19, + 0xb1, 0x80, 0xb6, 0xe8, 0x43, 0xf5, 0xda, 0x8e, 0x22, 0x86, 0xac, 0x10, 0x05, 0xcc, 0x7e, 0x16, + 0x4a, 0x2a, 0x29, 0x20, 0xcf, 0xac, 0xa5, 0x6e, 0xa5, 0xcc, 0xcc, 0x5a, 0x7e, 0x10, 0x21, 0x87, + 0xd8, 0xaf, 0x43, 0x49, 0xe5, 0x2e, 0x3c, 0x1c, 0x9b, 0x6d, 0xbf, 0xa1, 0xe7, 0xde, 0xf4, 0xc3, + 0x48, 0x25, 0x5c, 0x14, 0x17, 0xe7, 0xb7, 0x97, 0x79, 0x19, 0x6a, 0xa8, 0xfd, 0x13, 0x0b, 0x2a, + 0xeb, 0xeb, 0x2b, 0xda, 0x9e, 0x86, 0xf0, 0x58, 0x28, 0x5a, 0xa8, 0xba, 0x19, 0x51, 0xd3, 0x43, + 0x47, 0xac, 0x44, 0xb3, 0xfb, 0x7b, 0x73, 0x8f, 0xd5, 0x33, 0x31, 0x70, 0x40, 0x4d, 0xb2, 0x0c, + 0xe7, 0x4c, 0x88, 0x4c, 0x84, 0x23, 0xf5, 0x82, 0x8b, 0xfb, 0x6c, 0xf9, 0xe9, 0x07, 0x63, 0x56, + 0x9d, 0x34, 0x29, 0x15, 0x37, 0x5c, 0xc8, 0x26, 0xa5, 0x82, 0x86, 0xb3, 0xea, 0xd8, 0xcf, 0xc1, + 0x54, 0xca, 0x75, 0xe4, 0x08, 0x09, 0xc8, 0x7e, 0xa7, 0x00, 0x13, 0xa6, 0x07, 0xc1, 0x11, 0xf6, + 0xec, 0xa3, 0xab, 0x42, 0x19, 0xb7, 0xfe, 0x85, 0x63, 0xde, 0xfa, 0x9b, 0x6e, 0x16, 0xa3, 0xa7, + 0xeb, 0x66, 0x51, 0xcc, 0xc7, 0xcd, 0xc2, 0x70, 0x07, 0x1a, 0x7b, 0x74, 0xee, 0x40, 0xbf, 0x5d, + 0x84, 0xc9, 0x64, 0x46, 0xeb, 0x23, 0xf4, 0xe4, 0xb3, 0x7d, 0x3d, 0x79, 0xcc, 0x6b, 0xc6, 0xc2, + 0xb0, 0xd7, 0x8c, 0xa3, 0xc3, 0x5e, 0x33, 0x16, 0x4f, 0x70, 0xcd, 0xd8, 0x7f, 0x49, 0x38, 0x76, + 0xe4, 0x4b, 0xc2, 0x4f, 0xe8, 0x8d, 0x62, 0x3c, 0xe1, 0x59, 0x17, 0x6f, 0x16, 0x24, 0xd9, 0x0d, + 0x8b, 0x7e, 0x33, 0xd3, 0xe3, 0xbb, 0x74, 0x88, 0xfa, 0x10, 0x64, 0x3a, 0x3a, 0x1f, 0xdf, 0x93, + 0xe1, 0xb1, 0x63, 0x38, 0x39, 0xbf, 0x00, 0x15, 0x39, 0x9e, 0xf8, 0x99, 0x16, 0x92, 0xe7, 0xe1, + 0x7a, 0x0c, 0x42, 0x13, 0x8f, 0x0d, 0x8c, 0x6e, 0x3c, 0x41, 0xf8, 0x85, 0x77, 0x25, 0x79, 0xe1, + 0xbd, 0x96, 0x04, 0x63, 0x1a, 0xdf, 0xfe, 0x3c, 0x5c, 0xc8, 0xb4, 0x6c, 0xf2, 0x5b, 0x25, 0x7e, + 0x16, 0xa2, 0x4d, 0x89, 0x60, 0x88, 0x91, 0x7a, 0x62, 0x6b, 0xf6, 0xde, 0x40, 0x4c, 0x3c, 0x80, + 0x8a, 0xfd, 0x5b, 0x05, 0x98, 0x4c, 0x3e, 0x39, 0x4f, 0x1e, 0xe8, 0x7b, 0x90, 0x5c, 0xae, 0x60, + 0x04, 0x59, 0x23, 0x4b, 0xf2, 0xc0, 0xfb, 0xd3, 0x07, 0x7c, 0x7c, 0x6d, 0xe8, 0x94, 0xcd, 0xa7, + 0xc7, 0x58, 0x5e, 0x5c, 0x4a, 0x76, 0xfc, 0xe1, 0xf6, 0x38, 0xa5, 0x80, 0x34, 0x8f, 0xe5, 0xce, + 0x3d, 0x8e, 0xfe, 0xd6, 0xac, 0xd0, 0x60, 0xcb, 0xf6, 0x96, 0x1d, 0x1a, 0xb8, 0x9b, 0x2e, 0x6d, + 0xca, 0x17, 0x34, 0xf8, 0xca, 0xfd, 0xba, 0x2c, 0x43, 0x0d, 0xb5, 0xdf, 0x1e, 0x81, 0x32, 0xcf, + 0xff, 0x78, 0x23, 0xf0, 0x3b, 0xfc, 0x31, 0xe2, 0xd0, 0x30, 0x45, 0xc8, 0x6e, 0xbb, 0x95, 0xc7, + 0xeb, 0x5f, 0x82, 0xa2, 0x8c, 0x22, 0x31, 0x4a, 0x30, 0xc1, 0x91, 0x74, 0xa1, 0xb4, 0x29, 0xf3, + 0xd5, 0xcb, 0xbe, 0x1b, 0x32, 0xe7, 0xb2, 0xca, 0x7e, 0x2f, 0x9a, 0x40, 0xfd, 0x43, 0xcd, 0xc5, + 0x76, 0x60, 0x2a, 0x95, 0x36, 0x2b, 0xf7, 0x2c, 0xf7, 0xff, 0x73, 0x14, 0xca, 0x3a, 0xb8, 0x93, + 0x7c, 0x2c, 0x61, 0x17, 0x8e, 0x75, 0x78, 0x69, 0xd0, 0x65, 0xe7, 0x26, 0x8d, 0x9c, 0xb2, 0xf1, + 0x5e, 0x82, 0x42, 0x2f, 0x68, 0xa7, 0x0d, 0x3f, 0x77, 0x71, 0x05, 0x59, 0xb9, 0x19, 0x90, 0x5a, + 0x78, 0xb4, 0x01, 0xa9, 0x57, 0x60, 0x74, 0xc3, 0x6f, 0xee, 0xa6, 0x5f, 0xd6, 0xac, 0xf9, 0xcd, + 0x5d, 0xe4, 0x10, 0xf2, 0x32, 0x4c, 0xca, 0x28, 0x5b, 0xa5, 0xc4, 0x14, 0xb9, 0x9e, 0xaa, 0xfd, + 0x81, 0xd6, 0x13, 0x50, 0x4c, 0x61, 0xb3, 0x5d, 0x96, 0x1d, 0x1b, 0xf8, 0xdb, 0x05, 0x63, 0x49, + 0xe7, 0x81, 0x5b, 0xf5, 0x3b, 0xb7, 0xb9, 0x7d, 0x5a, 0x63, 0x24, 0x02, 0x79, 0xc7, 0x0f, 0x0d, + 0xe4, 0x5d, 0x12, 0xb4, 0x99, 0xb4, 0x7c, 0x47, 0x99, 0xa8, 0x5d, 0x55, 0x74, 0x59, 0xd9, 0x81, + 0x67, 0x17, 0x5d, 0x33, 0x2b, 0xe4, 0xb9, 0xfc, 0xde, 0x85, 0x3c, 0xdb, 0x77, 0x61, 0x2a, 0xd5, + 0x7f, 0xca, 0x6e, 0x68, 0x65, 0xdb, 0x0d, 0x8f, 0xf6, 0x36, 0xe7, 0x3f, 0xb3, 0xe0, 0x6c, 0xdf, + 0x8a, 0x74, 0xd4, 0xd8, 0xf3, 0xf4, 0xde, 0x38, 0x72, 0xf2, 0xbd, 0xb1, 0x70, 0xbc, 0xbd, 0xb1, + 0xb6, 0xf1, 0xbd, 0x1f, 0x5d, 0xfe, 0xc0, 0x0f, 0x7e, 0x74, 0xf9, 0x03, 0xbf, 0xff, 0xa3, 0xcb, + 0x1f, 0x78, 0x7b, 0xff, 0xb2, 0xf5, 0xbd, 0xfd, 0xcb, 0xd6, 0x0f, 0xf6, 0x2f, 0x5b, 0xbf, 0xbf, + 0x7f, 0xd9, 0xfa, 0x2f, 0xfb, 0x97, 0xad, 0x6f, 0xfe, 0xd1, 0xe5, 0x0f, 0x7c, 0xea, 0x13, 0x71, + 0x4f, 0x2d, 0xa8, 0x9e, 0xe2, 0x3f, 0x3e, 0xac, 0xfa, 0x65, 0xa1, 0xbb, 0xdd, 0x5a, 0x60, 0x3d, + 0xb5, 0xa0, 0x4b, 0x54, 0x4f, 0xfd, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0x87, 0x61, 0xb2, + 0x65, 0xaf, 0x00, 0x00, } func (m *ALBStatus) Marshal() (dAtA []byte, err error) { @@ -7454,6 +7457,18 @@ func (m *Metric) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.ConsecutiveSuccessLimit != nil { + { + size, err := m.ConsecutiveSuccessLimit.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + } { size, err := m.Provider.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -7741,6 +7756,9 @@ func (m *MetricResult) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + i = encodeVarintGenerated(dAtA, i, uint64(m.ConsecutiveSuccess)) + i-- + dAtA[i] = 0x68 if len(m.Metadata) > 0 { keysForMetadata := make([]string, 0, len(m.Metadata)) for k := range m.Metadata { @@ -12134,6 +12152,10 @@ func (m *Metric) Size() (n int) { } l = m.Provider.Size() n += 1 + l + sovGenerated(uint64(l)) + if m.ConsecutiveSuccessLimit != nil { + l = m.ConsecutiveSuccessLimit.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -12235,6 +12257,7 @@ func (m *MetricResult) Size() (n int) { n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) } } + n += 1 + sovGenerated(uint64(m.ConsecutiveSuccess)) return n } @@ -14323,6 +14346,7 @@ func (this *Metric) String() string { `InconclusiveLimit:` + strings.Replace(fmt.Sprintf("%v", this.InconclusiveLimit), "IntOrString", "intstr.IntOrString", 1) + `,`, `ConsecutiveErrorLimit:` + strings.Replace(fmt.Sprintf("%v", this.ConsecutiveErrorLimit), "IntOrString", "intstr.IntOrString", 1) + `,`, `Provider:` + strings.Replace(strings.Replace(this.Provider.String(), "MetricProvider", "MetricProvider", 1), `&`, ``, 1) + `,`, + `ConsecutiveSuccessLimit:` + strings.Replace(fmt.Sprintf("%v", this.ConsecutiveSuccessLimit), "IntOrString", "intstr.IntOrString", 1) + `,`, `}`, }, "") return s @@ -14390,6 +14414,7 @@ func (this *MetricResult) String() string { `ConsecutiveError:` + fmt.Sprintf("%v", this.ConsecutiveError) + `,`, `DryRun:` + fmt.Sprintf("%v", this.DryRun) + `,`, `Metadata:` + mapStringForMetadata + `,`, + `ConsecutiveSuccess:` + fmt.Sprintf("%v", this.ConsecutiveSuccess) + `,`, `}`, }, "") return s @@ -26145,6 +26170,42 @@ func (m *Metric) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConsecutiveSuccessLimit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ConsecutiveSuccessLimit == nil { + m.ConsecutiveSuccessLimit = &intstr.IntOrString{} + } + if err := m.ConsecutiveSuccessLimit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -27160,6 +27221,25 @@ func (m *MetricResult) Unmarshal(dAtA []byte) error { } m.Metadata[mapkey] = mapvalue iNdEx = postIndex + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ConsecutiveSuccess", wireType) + } + m.ConsecutiveSuccess = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ConsecutiveSuccess |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/rollouts/v1alpha1/generated.proto b/pkg/apis/rollouts/v1alpha1/generated.proto index 832258d4b9..489548d836 100644 --- a/pkg/apis/rollouts/v1alpha1/generated.proto +++ b/pkg/apis/rollouts/v1alpha1/generated.proto @@ -1014,6 +1014,7 @@ message Metric { // FailureLimit is the maximum number of times the measurement is allowed to fail, before the // entire metric is considered Failed (default: 0) + // -1 for making it disabled (when opting to use ConsecutiveSuccessLimit solely) optional k8s.io.apimachinery.pkg.util.intstr.IntOrString failureLimit = 7; // InconclusiveLimit is the maximum number of times the measurement is allowed to measure @@ -1026,6 +1027,10 @@ message Metric { // Provider configuration to the external system to use to verify the analysis optional MetricProvider provider = 10; + + // ConsecutiveSuccessLimit is the number of consecutive times the measurement must succeed for the + // entire metric to be considered Successful (default: 0, which means it's disabled) + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString consecutiveSuccessLimit = 11; } // MetricProvider which external system to use to verify the analysis @@ -1113,6 +1118,10 @@ message MetricResult { // the final state which gets used while taking measurements. For example, Prometheus uses this field // to store the final resolved query after substituting the template arguments. map metadata = 12; + + // ConsecutiveSuccess is the number of times a measurement was successful in succession + // Resets to zero when failures, inconclusive measurements, or errors are encountered + optional int32 consecutiveSuccess = 13; } // NewRelicMetric defines the newrelic query to perform canary analysis diff --git a/pkg/apis/rollouts/v1alpha1/openapi_generated.go b/pkg/apis/rollouts/v1alpha1/openapi_generated.go index 69b7cd50a2..2f60871c4b 100644 --- a/pkg/apis/rollouts/v1alpha1/openapi_generated.go +++ b/pkg/apis/rollouts/v1alpha1/openapi_generated.go @@ -3063,7 +3063,7 @@ func schema_pkg_apis_rollouts_v1alpha1_Metric(ref common.ReferenceCallback) comm }, "failureLimit": { SchemaProps: spec.SchemaProps{ - Description: "FailureLimit is the maximum number of times the measurement is allowed to fail, before the entire metric is considered Failed (default: 0)", + Description: "FailureLimit is the maximum number of times the measurement is allowed to fail, before the entire metric is considered Failed (default: 0) -1 for making it disabled (when opting to use ConsecutiveSuccessLimit solely)", Ref: ref("k8s.io/apimachinery/pkg/util/intstr.IntOrString"), }, }, @@ -3086,6 +3086,12 @@ func schema_pkg_apis_rollouts_v1alpha1_Metric(ref common.ReferenceCallback) comm Ref: ref("github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1.MetricProvider"), }, }, + "consecutiveSuccessLimit": { + SchemaProps: spec.SchemaProps{ + Description: "ConsecutiveSuccessLimit is the number of consecutive times the measurement must succeed for the entire metric to be considered Successful (default: 0, which means it's disabled)", + Ref: ref("k8s.io/apimachinery/pkg/util/intstr.IntOrString"), + }, + }, }, Required: []string{"name", "provider"}, }, @@ -3300,6 +3306,13 @@ func schema_pkg_apis_rollouts_v1alpha1_MetricResult(ref common.ReferenceCallback }, }, }, + "consecutiveSuccess": { + SchemaProps: spec.SchemaProps{ + Description: "ConsecutiveSuccess is the number of times a measurement was successful in succession Resets to zero when failures, inconclusive measurements, or errors are encountered", + Type: []string{"integer"}, + Format: "int32", + }, + }, }, Required: []string{"name", "phase"}, }, diff --git a/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go index 5229bb83f8..44cfd72188 100644 --- a/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/rollouts/v1alpha1/zz_generated.deepcopy.go @@ -1701,6 +1701,11 @@ func (in *Metric) DeepCopyInto(out *Metric) { **out = **in } in.Provider.DeepCopyInto(&out.Provider) + if in.ConsecutiveSuccessLimit != nil { + in, out := &in.ConsecutiveSuccessLimit, &out.ConsecutiveSuccessLimit + *out = new(intstr.IntOrString) + **out = **in + } return } diff --git a/ui/src/app/components/analysis-modal/constants.ts b/ui/src/app/components/analysis-modal/constants.ts index c1a35ce0d5..70771ba985 100644 --- a/ui/src/app/components/analysis-modal/constants.ts +++ b/ui/src/app/components/analysis-modal/constants.ts @@ -3,6 +3,7 @@ import {AnalysisStatus, FunctionalStatus} from './types'; export const METRIC_FAILURE_LIMIT_DEFAULT = 0; export const METRIC_INCONCLUSIVE_LIMIT_DEFAULT = 0; export const METRIC_CONSECUTIVE_ERROR_LIMIT_DEFAULT = 4; +export const METRIC_CONSECUTIVE_SUCCESS_LIMIT_DEFAULT = 0; export const ANALYSIS_STATUS_THEME_MAP: {[key in AnalysisStatus]: string} = { Successful: FunctionalStatus.SUCCESS, diff --git a/ui/src/app/components/analysis-modal/criteria-list/criteria-list.tsx b/ui/src/app/components/analysis-modal/criteria-list/criteria-list.tsx index 51247b6d22..04ab3fb051 100644 --- a/ui/src/app/components/analysis-modal/criteria-list/criteria-list.tsx +++ b/ui/src/app/components/analysis-modal/criteria-list/criteria-list.tsx @@ -63,11 +63,13 @@ interface CriteriaListProps { analysisStatus: AnalysisStatus; className?: string[] | string; consecutiveErrors: number; + consecutiveSuccesses: number; failures: number; inconclusives: number; maxConsecutiveErrors: number; maxFailures: number; maxInconclusives: number; + consecutiveSuccessLimit: number; showIcons: boolean; } @@ -75,25 +77,34 @@ const CriteriaList = ({ analysisStatus, className, consecutiveErrors, + consecutiveSuccesses, failures, inconclusives, maxConsecutiveErrors, maxFailures, maxInconclusives, + consecutiveSuccessLimit, showIcons, }: CriteriaListProps) => { let failureStatus = defaultCriterionStatus(analysisStatus); let errorStatus = defaultCriterionStatus(analysisStatus); let inconclusiveStatus = defaultCriterionStatus(analysisStatus); + let successStatus = defaultCriterionStatus(analysisStatus); if (analysisStatus !== AnalysisStatus.Pending && analysisStatus !== AnalysisStatus.Running) { failureStatus = failures <= maxFailures ? CriterionStatus.Pass : CriterionStatus.Fail; errorStatus = consecutiveErrors <= maxConsecutiveErrors ? CriterionStatus.Pass : CriterionStatus.Fail; inconclusiveStatus = inconclusives <= maxInconclusives ? CriterionStatus.Pass : CriterionStatus.Fail; + successStatus = consecutiveSuccesses >= consecutiveSuccessLimit ? CriterionStatus.Pass : CriterionStatus.Fail; } return (
    + {consecutiveSuccessLimit > 0 && ( + + {`Exactly ${consecutiveSuccessLimit} consecutive successes.`} + + )} {maxFailures > -1 && ( {criterionLabel('measurement failures', maxFailures)} diff --git a/ui/src/app/components/analysis-modal/panels/metric-panel.tsx b/ui/src/app/components/analysis-modal/panels/metric-panel.tsx index b1deba1c6f..4aed851308 100644 --- a/ui/src/app/components/analysis-modal/panels/metric-panel.tsx +++ b/ui/src/app/components/analysis-modal/panels/metric-panel.tsx @@ -14,7 +14,7 @@ import MetricTable from '../metric-table/metric-table'; import QueryBox from '../query-box/query-box'; import {AnalysisStatus, FunctionalStatus, TransformedMetricSpec, TransformedMetricStatus} from '../types'; import {isFiniteNumber} from '../transforms'; -import {METRIC_CONSECUTIVE_ERROR_LIMIT_DEFAULT, METRIC_FAILURE_LIMIT_DEFAULT, METRIC_INCONCLUSIVE_LIMIT_DEFAULT} from '../constants'; +import {METRIC_CONSECUTIVE_ERROR_LIMIT_DEFAULT, METRIC_FAILURE_LIMIT_DEFAULT, METRIC_INCONCLUSIVE_LIMIT_DEFAULT, METRIC_CONSECUTIVE_SUCCESS_LIMIT_DEFAULT} from '../constants'; import classNames from 'classnames'; import './styles.scss'; @@ -36,6 +36,7 @@ const MetricPanel = ({className, metricName, metricSpec, metricResults, status, const consecutiveErrorLimit = isFiniteNumber(metricSpec.consecutiveErrorLimit ?? null) ? metricSpec.consecutiveErrorLimit : METRIC_CONSECUTIVE_ERROR_LIMIT_DEFAULT; const failureLimit = isFiniteNumber(metricSpec.failureLimit ?? null) ? metricSpec.failureLimit : METRIC_FAILURE_LIMIT_DEFAULT; const inconclusiveLimit = isFiniteNumber(metricSpec.inconclusiveLimit ?? null) ? metricSpec.inconclusiveLimit : METRIC_INCONCLUSIVE_LIMIT_DEFAULT; + const consecutiveSuccessLimit = isFiniteNumber(metricSpec.consecutiveSuccessLimit ?? null) ? metricSpec.consecutiveSuccessLimit : METRIC_CONSECUTIVE_SUCCESS_LIMIT_DEFAULT; const canChartMetric = metricResults.chartable && metricResults.chartMax !== null; @@ -112,6 +113,9 @@ const MetricPanel = ({className, metricName, metricSpec, metricResults, status, maxFailures={failureLimit} // @ts-ignore maxInconclusives={inconclusiveLimit} + // @ts-ignore + consecutiveSuccessLimit={consecutiveSuccessLimit} + consecutiveSuccesses={metricResults.consecutiveSuccess ?? 0} consecutiveErrors={metricResults.consecutiveError ?? 0} failures={metricResults.failed ?? 0} inconclusives={metricResults.inconclusive ?? 0} diff --git a/ui/src/models/rollout/generated/api.ts b/ui/src/models/rollout/generated/api.ts index 63068ec02c..642bd611ed 100755 --- a/ui/src/models/rollout/generated/api.ts +++ b/ui/src/models/rollout/generated/api.ts @@ -1491,6 +1491,12 @@ export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Metric { * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Metric */ provider?: GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MetricProvider; + /** + * + * @type {K8sIoApimachineryPkgUtilIntstrIntOrString} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Metric + */ + consecutiveSuccessLimit?: K8sIoApimachineryPkgUtilIntstrIntOrString; } /** * @@ -1649,6 +1655,12 @@ export interface GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MetricResul * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MetricResult */ metadata?: { [key: string]: string; }; + /** + * + * @type {number} + * @memberof GithubComArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MetricResult + */ + consecutiveSuccess?: number; } /** * diff --git a/utils/analysis/factory.go b/utils/analysis/factory.go index 0e17e587a7..c2fefd3068 100644 --- a/utils/analysis/factory.go +++ b/utils/analysis/factory.go @@ -157,15 +157,48 @@ func ValidateMetric(metric v1alpha1.Metric) error { failureLimit = metric.FailureLimit.IntValue() } + consecutiveSuccessLimit := 0 + if metric.ConsecutiveSuccessLimit != nil { + consecutiveSuccessLimit = metric.ConsecutiveSuccessLimit.IntValue() + } + inconclusiveLimit := 0 if metric.InconclusiveLimit != nil { inconclusiveLimit = metric.InconclusiveLimit.IntValue() } + // Negative value checks + if consecutiveSuccessLimit < 0 { + return fmt.Errorf("consecutiveSuccessLimit must be >= 0") + } + if failureLimit < -1 { + return fmt.Errorf("failureLimit must be >= 0, or -1 to be disabled") + } + // if consecutiveSuccessLimit is disabled (set to 0), AND + // failureLimit is disabled (set to -1), then this is invalid + if consecutiveSuccessLimit == 0 && failureLimit == -1 { + return fmt.Errorf("failureLimit and consecutiveSuccessLimit cannot both be disabled") + } + + if inconclusiveLimit < 0 { + return fmt.Errorf("inconclusiveLimit must be >= 0") + } + + if metric.ConsecutiveErrorLimit != nil && metric.ConsecutiveErrorLimit.IntValue() < 0 { + return fmt.Errorf("consecutiveErrorLimit must be >= 0") + } + if count > 0 { - if count < failureLimit { - return fmt.Errorf("count must be >= failureLimit") + if consecutiveSuccessLimit >= 0 && failureLimit >= 0 { + if count < failureLimit+consecutiveSuccessLimit { + return fmt.Errorf("count (%d) must be >= failureLimit + consecutiveSuccessLimit (%d + %d) if both >= 0", count, failureLimit, consecutiveSuccessLimit) + } + } else if consecutiveSuccessLimit >= 0 && failureLimit < 0 { + if count < consecutiveSuccessLimit { + return fmt.Errorf("count must be >= consecutiveSuccessLimit") + } } + if count < inconclusiveLimit { return fmt.Errorf("count must be >= inconclusiveLimit") } @@ -184,16 +217,6 @@ func ValidateMetric(metric v1alpha1.Metric) error { } } - if failureLimit < 0 { - return fmt.Errorf("failureLimit must be >= 0") - } - if inconclusiveLimit < 0 { - return fmt.Errorf("inconclusiveLimit must be >= 0") - } - - if metric.ConsecutiveErrorLimit != nil && metric.ConsecutiveErrorLimit.IntValue() < 0 { - return fmt.Errorf("consecutiveErrorLimit must be >= 0") - } numProviders := 0 if metric.Provider.Prometheus != nil { numProviders++ diff --git a/utils/analysis/factory_test.go b/utils/analysis/factory_test.go index d3fe7dfec1..d6b7bab1d5 100644 --- a/utils/analysis/factory_test.go +++ b/utils/analysis/factory_test.go @@ -178,7 +178,7 @@ func TestBackgroundLabels(t *testing.T) { } func TestValidateMetrics(t *testing.T) { - t.Run("Ensure count >= failureLimit", func(t *testing.T) { + t.Run("Ensure count >= failureLimit + consecutiveSuccessLimit", func(t *testing.T) { failureLimit := intstr.FromInt(2) count := intstr.FromInt(1) spec := v1alpha1.AnalysisTemplateSpec{ @@ -194,7 +194,7 @@ func TestValidateMetrics(t *testing.T) { }, } err := ValidateMetrics(spec.Metrics) - assert.EqualError(t, err, "metrics[0]: count must be >= failureLimit") + assert.EqualError(t, err, "metrics[0]: count (1) must be >= failureLimit + consecutiveSuccessLimit (2 + 0) if both >= 0") count = intstr.FromInt(0) spec.Metrics[0].Count = &count err = ValidateMetrics(spec.Metrics) @@ -323,8 +323,8 @@ func TestValidateMetrics(t *testing.T) { err := ValidateMetrics(spec.Metrics) assert.EqualError(t, err, "metrics[1]: duplicate name 'success-rate'") }) - t.Run("Ensure failureLimit >= 0", func(t *testing.T) { - failureLimit := intstr.FromInt(-1) + t.Run("Ensure failureLimit >= -1", func(t *testing.T) { + failureLimit := intstr.FromInt(-2) spec := v1alpha1.AnalysisTemplateSpec{ Metrics: []v1alpha1.Metric{ { @@ -337,7 +337,7 @@ func TestValidateMetrics(t *testing.T) { }, } err := ValidateMetrics(spec.Metrics) - assert.EqualError(t, err, "metrics[0]: failureLimit must be >= 0") + assert.EqualError(t, err, "metrics[0]: failureLimit must be >= 0, or -1 to be disabled") }) t.Run("Ensure inconclusiveLimit >= 0", func(t *testing.T) { inconclusiveLimit := intstr.FromInt(-1) @@ -407,6 +407,40 @@ func TestValidateMetrics(t *testing.T) { err := ValidateMetrics(spec.Metrics) assert.EqualError(t, err, "metrics[0]: multiple providers specified") }) + t.Run("Ensure consecutiveSuccessLimit >= 0", func(t *testing.T) { + consecutiveSuccessLimit := intstr.FromInt(-1) + spec := v1alpha1.AnalysisTemplateSpec{ + Metrics: []v1alpha1.Metric{ + { + Name: "success-rate", + ConsecutiveSuccessLimit: &consecutiveSuccessLimit, + Provider: v1alpha1.MetricProvider{ + Prometheus: &v1alpha1.PrometheusMetric{}, + }, + }, + }, + } + err := ValidateMetrics(spec.Metrics) + assert.EqualError(t, err, "metrics[0]: consecutiveSuccessLimit must be >= 0") + }) + t.Run("Ensure consecutiveSuccessLimit and failureLimit are not both disabled", func(t *testing.T) { + consecutiveSuccessLimit := intstr.FromInt(0) + failureLimit := intstr.FromInt(-1) + spec := v1alpha1.AnalysisTemplateSpec{ + Metrics: []v1alpha1.Metric{ + { + Name: "success-rate", + ConsecutiveSuccessLimit: &consecutiveSuccessLimit, + FailureLimit: &failureLimit, + Provider: v1alpha1.MetricProvider{ + Prometheus: &v1alpha1.PrometheusMetric{}, + }, + }, + }, + } + err := ValidateMetrics(spec.Metrics) + assert.EqualError(t, err, "metrics[0]: failureLimit and consecutiveSuccessLimit cannot both be disabled") + }) } // TestResolveMetricArgs verifies that metric arguments are resolved From 5e39d5931175b52c4ee9fa251fdf7937a6473b49 Mon Sep 17 00:00:00 2001 From: William Van Hevelingen Date: Thu, 5 Dec 2024 14:49:01 -0800 Subject: [PATCH 197/219] chore: update golangci-lint to v1.61.0 (#3857) Signed-off-by: william.vanhevelingen --- .github/workflows/go.yml | 2 +- .golangci.yml | 17 +++++++++-------- Dockerfile | 2 +- metricproviders/job/job_test.go | 5 +++-- .../validation/validation_references.go | 5 +++-- .../cmd/list/list_experiments.go | 2 +- .../cmd/list/list_rollouts.go | 2 +- pkg/kubectl-argo-rollouts/cmd/undo/undo.go | 2 +- rollout/restart_test.go | 6 +++--- rollout/trafficrouting/alb/alb_test.go | 5 +++-- rollout/trafficrouting/ambassador/ambassador.go | 2 +- utils/analysis/factory_test.go | 2 +- 12 files changed, 28 insertions(+), 24 deletions(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 290d0f216a..4126b694c9 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -35,7 +35,7 @@ jobs: - name: Run golangci-lint uses: golangci/golangci-lint-action@v6 with: - version: v1.57.2 + version: v1.61.0 args: --timeout 6m build: name: Build diff --git a/.golangci.yml b/.golangci.yml index c59d635e9c..af89264b4a 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,20 +1,21 @@ run: - deadline: 1m - skip-files: - - ".*\\.pb\\.go" - skip-dirs: - - pkg/client + timeout: 10m modules-download-mode: readonly +issues: + exclude-dirs: + - pkg/client + exclude-files: + - ".*\\.pb\\.go" linter-settings: goimports: local-prefixes: github.com/argoproj/argo-rollouts linters: enable: - - vet - gofmt - goimports - - unused + - govet - ineffassign - - unconvert - misspell + - unconvert + - unused disable-all: true diff --git a/Dockerfile b/Dockerfile index ffd0244abc..dfbf1160ad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ RUN apt-get update && apt-get install -y \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # Install golangci-lint -RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.57.2 && \ +RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.61.0 && \ golangci-lint linters COPY .golangci.yml ${GOPATH}/src/dummy/.golangci.yml diff --git a/metricproviders/job/job_test.go b/metricproviders/job/job_test.go index 80fdb28342..eb7a6a1629 100644 --- a/metricproviders/job/job_test.go +++ b/metricproviders/job/job_test.go @@ -2,6 +2,7 @@ package job import ( "context" + "errors" "fmt" "testing" "time" @@ -178,7 +179,7 @@ func TestRunCreateFail(t *testing.T) { // The following causes the Create call to fail fakeClient := p.kubeclientset.(*k8sfake.Clientset) fakeClient.PrependReactor("create", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) { - return true, nil, fmt.Errorf(errMsg) + return true, nil, errors.New(errMsg) }) metricsMetadata := p.GetMetadata(run.Spec.Metrics[0]) assert.Nil(t, metricsMetadata) @@ -269,7 +270,7 @@ func TestTerminateError(t *testing.T) { errMsg := "random delete error" fakeClient := p.kubeclientset.(*k8sfake.Clientset) fakeClient.PrependReactor("delete", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) { - return true, nil, fmt.Errorf(errMsg) + return true, nil, errors.New(errMsg) }) measurement = p.Terminate(run, run.Spec.Metrics[0], measurement) diff --git a/pkg/apis/rollouts/validation/validation_references.go b/pkg/apis/rollouts/validation/validation_references.go index 9079536c20..f51df2925d 100644 --- a/pkg/apis/rollouts/validation/validation_references.go +++ b/pkg/apis/rollouts/validation/validation_references.go @@ -1,6 +1,7 @@ package validation import ( + "errors" "fmt" appsv1 "k8s.io/api/apps/v1" @@ -342,11 +343,11 @@ func ValidateRolloutVirtualServicesConfig(r *v1alpha1.Rollout) error { if canary.TrafficRouting != nil && canary.TrafficRouting.Istio != nil { if istioutil.MultipleVirtualServiceConfigured(r) { if r.Spec.Strategy.Canary.TrafficRouting.Istio.VirtualService != nil { - return field.InternalError(fldPath, fmt.Errorf(errorString)) + return field.InternalError(fldPath, errors.New(errorString)) } } else { if r.Spec.Strategy.Canary.TrafficRouting.Istio.VirtualService == nil { - return field.InternalError(fldPath, fmt.Errorf(errorString)) + return field.InternalError(fldPath, errors.New(errorString)) } } } diff --git a/pkg/kubectl-argo-rollouts/cmd/list/list_experiments.go b/pkg/kubectl-argo-rollouts/cmd/list/list_experiments.go index 962b4d6ce4..4b4ec6b302 100644 --- a/pkg/kubectl-argo-rollouts/cmd/list/list_experiments.go +++ b/pkg/kubectl-argo-rollouts/cmd/list/list_experiments.go @@ -84,7 +84,7 @@ func (o *ListOptions) PrintExperimentTable(expList *v1alpha1.ExperimentList) err headerStr = "NAMESPACE\t" + headerStr fmtStr = "%-9s\t" + fmtStr } - fmt.Fprintf(w, headerStr) + fmt.Fprint(w, headerStr) for _, exp := range expList.Items { age := duration.HumanDuration(timeutil.MetaNow().Sub(exp.CreationTimestamp.Time)) dur := "-" diff --git a/pkg/kubectl-argo-rollouts/cmd/list/list_rollouts.go b/pkg/kubectl-argo-rollouts/cmd/list/list_rollouts.go index c233776c6d..16dcc68c75 100644 --- a/pkg/kubectl-argo-rollouts/cmd/list/list_rollouts.go +++ b/pkg/kubectl-argo-rollouts/cmd/list/list_rollouts.go @@ -93,7 +93,7 @@ func (o *ListOptions) PrintRolloutTable(roList *v1alpha1.RolloutList) error { if o.timestamps { headerStr = "TIMESTAMP\t" + headerStr } - fmt.Fprintf(w, headerStr) + fmt.Fprint(w, headerStr) for _, ro := range roList.Items { roLine := newRolloutInfo(ro) fmt.Fprintln(w, roLine.String(o.timestamps, o.allNamespaces)) diff --git a/pkg/kubectl-argo-rollouts/cmd/undo/undo.go b/pkg/kubectl-argo-rollouts/cmd/undo/undo.go index be9d0289d7..1f3fb186b1 100644 --- a/pkg/kubectl-argo-rollouts/cmd/undo/undo.go +++ b/pkg/kubectl-argo-rollouts/cmd/undo/undo.go @@ -58,7 +58,7 @@ func NewCmdUndo(o *options.ArgoRolloutsOptions) *cobra.Command { if err != nil { return err } - fmt.Fprintf(o.Out, result) + fmt.Fprint(o.Out, result) return nil }, ValidArgsFunction: completionutil.RolloutNameCompletionFunc(o), diff --git a/rollout/restart_test.go b/rollout/restart_test.go index a6a20b4188..1ef873f36d 100644 --- a/rollout/restart_test.go +++ b/rollout/restart_test.go @@ -2,7 +2,7 @@ package rollout import ( "bytes" - "fmt" + "errors" "testing" "time" @@ -199,7 +199,7 @@ func TestRestartReconcile(t *testing.T) { } client.PrependReactor("create", "pods", func(action k8stesting.Action) (handled bool, ret runtime.Object, err error) { // this is the pod eviction - return true, nil, fmt.Errorf(expectedErrMsg) + return true, nil, errors.New(expectedErrMsg) }) r := RolloutPodRestarter{ client: client, @@ -309,7 +309,7 @@ func TestRestartReplicaSetPod(t *testing.T) { client := fake.NewSimpleClientset() expectedErrMsg := "big bad error" client.PrependReactor("list", "pods", func(action k8stesting.Action) (handled bool, ret runtime.Object, err error) { - return true, nil, fmt.Errorf(expectedErrMsg) + return true, nil, errors.New(expectedErrMsg) }) r := RolloutPodRestarter{client: client} roCtx := &rolloutContext{ diff --git a/rollout/trafficrouting/alb/alb_test.go b/rollout/trafficrouting/alb/alb_test.go index faa798e524..562c3b599a 100644 --- a/rollout/trafficrouting/alb/alb_test.go +++ b/rollout/trafficrouting/alb/alb_test.go @@ -3,6 +3,7 @@ package alb import ( "context" "encoding/json" + "errors" "fmt" "strings" "testing" @@ -668,7 +669,7 @@ func TestErrorPatching(t *testing.T) { errMessage := "some error occurred" r.cfg.Client.(*fake.Clientset).Fake.AddReactor("patch", "ingresses", func(action k8stesting.Action) (handled bool, ret runtime.Object, err error) { - return true, nil, fmt.Errorf(errMessage) + return true, nil, errors.New(errMessage) }) err = r.SetWeight(10) @@ -700,7 +701,7 @@ func TestErrorPatchingMultiIngress(t *testing.T) { errMessage := "some error occurred" r.cfg.Client.(*fake.Clientset).Fake.AddReactor("patch", "ingresses", func(action k8stesting.Action) (handled bool, ret runtime.Object, err error) { - return true, nil, fmt.Errorf(errMessage) + return true, nil, errors.New(errMessage) }) err = r.SetWeight(10) diff --git a/rollout/trafficrouting/ambassador/ambassador.go b/rollout/trafficrouting/ambassador/ambassador.go index ceb389c81a..06466535f6 100644 --- a/rollout/trafficrouting/ambassador/ambassador.go +++ b/rollout/trafficrouting/ambassador/ambassador.go @@ -213,7 +213,7 @@ func (r *Reconciler) createCanaryMapping(ctx context.Context, if weight != 0 { msg := fmt.Sprintf("Ambassador mapping %q can not define weight", baseMappingName) r.sendWarningEvent(AmbassadorMappingConfigError, msg) - return fmt.Errorf(msg) + return errors.New(msg) } canarySvc := r.Rollout.Spec.Strategy.Canary.CanaryService diff --git a/utils/analysis/factory_test.go b/utils/analysis/factory_test.go index d6b7bab1d5..65aa629f15 100644 --- a/utils/analysis/factory_test.go +++ b/utils/analysis/factory_test.go @@ -478,7 +478,7 @@ func TestResolveMetricArgsWithQuotes(t *testing.T) { } newMetric, err := ResolveMetricArgs(metric, arguments) assert.NoError(t, err) - assert.Equal(t, fmt.Sprintf(arg), newMetric.SuccessCondition) + assert.Equal(t, arg, newMetric.SuccessCondition) } func Test_extractValueFromRollout(t *testing.T) { From 02e9dd62b406874125cd66360e84a8e1b93b988d Mon Sep 17 00:00:00 2001 From: William Van Hevelingen Date: Fri, 6 Dec 2024 08:07:58 -0800 Subject: [PATCH 198/219] chore(deps): update golang to 1.23 (#3987) Signed-off-by: william.vanhevelingen --- .github/workflows/docker-publish.yml | 4 ++-- .github/workflows/gh-pages.yaml | 2 +- .github/workflows/go.yml | 2 +- .github/workflows/release.yaml | 6 +++--- .github/workflows/testing.yaml | 4 ++-- Dockerfile | 4 ++-- go.mod | 4 +--- 7 files changed, 12 insertions(+), 14 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 6392395d2e..2ce05c728e 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -67,7 +67,7 @@ jobs: with: quay_image_name: ${{ needs.set-vars.outputs.controller-meta-tags }} # Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations) - go-version: '1.22' + go-version: '1.23' platforms: ${{ needs.set-vars.outputs.platforms }} push: ${{ github.event_name != 'pull_request' }} secrets: @@ -84,7 +84,7 @@ jobs: with: quay_image_name: ${{ needs.set-vars.outputs.plugin-meta-tags }} # Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations) - go-version: '1.22' + go-version: '1.23' platforms: ${{ needs.set-vars.outputs.platforms }} push: ${{ github.event_name != 'pull_request' }} target: kubectl-argo-rollouts diff --git a/.github/workflows/gh-pages.yaml b/.github/workflows/gh-pages.yaml index d2ef3a1c96..831a81a3d3 100644 --- a/.github/workflows/gh-pages.yaml +++ b/.github/workflows/gh-pages.yaml @@ -26,7 +26,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5.1.0 with: - go-version: '1.22' + go-version: '1.23' - name: build run: | pip install mkdocs mkdocs_material diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 4126b694c9..67b525a662 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -9,7 +9,7 @@ on: - 'master' env: # Golang version to use across CI steps - GOLANG_VERSION: '1.22' + GOLANG_VERSION: '1.23' concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index adb413e4b7..99b08b01fd 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -7,7 +7,7 @@ on: permissions: {} env: - GOLANG_VERSION: '1.22' # Note: go-version must also be set in job controller-image.with.go-version & plugin-image.with.go-version. + GOLANG_VERSION: '1.23' # Note: go-version must also be set in job controller-image.with.go-version & plugin-image.with.go-version. jobs: controller-image: @@ -19,7 +19,7 @@ jobs: with: quay_image_name: quay.io/argoproj/argo-rollouts:${{ github.ref_name }} # Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations) - go-version: '1.22' + go-version: '1.23' platforms: linux/amd64,linux/arm64 push: true secrets: @@ -35,7 +35,7 @@ jobs: with: quay_image_name: quay.io/argoproj/kubectl-argo-rollouts:${{ github.ref_name }} # Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations) - go-version: '1.22' + go-version: '1.23' platforms: linux/amd64,linux/arm64 push: true target: kubectl-argo-rollouts diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml index 82843579e8..c14230d9b3 100644 --- a/.github/workflows/testing.yaml +++ b/.github/workflows/testing.yaml @@ -17,7 +17,7 @@ on: default: false env: # Golang version to use across CI steps - GOLANG_VERSION: '1.22' + GOLANG_VERSION: '1.23' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -93,7 +93,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5.1.0 with: - go-version: '1.22' + go-version: '1.23' - uses: actions/checkout@v4 - name: Setup k3s env: diff --git a/Dockerfile b/Dockerfile index dfbf1160ad..ae5df9fa2e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ # Initial stage which pulls prepares build dependencies and CLI tooling we need for our final image # Also used as the image in CI jobs so needs all dependencies #################################################################################################### -FROM --platform=$BUILDPLATFORM golang:1.22 AS builder +FROM --platform=$BUILDPLATFORM golang:1.23 AS builder RUN apt-get update && apt-get install -y \ wget \ @@ -40,7 +40,7 @@ RUN NODE_ENV='production' yarn build #################################################################################################### # Rollout Controller Build stage which performs the actual build of argo-rollouts binaries #################################################################################################### -FROM --platform=$BUILDPLATFORM golang:1.22 AS argo-rollouts-build +FROM --platform=$BUILDPLATFORM golang:1.23 AS argo-rollouts-build WORKDIR /go/src/github.com/argoproj/argo-rollouts diff --git a/go.mod b/go.mod index 5ceff266fb..232a5cf712 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module github.com/argoproj/argo-rollouts -go 1.22 - -toolchain go1.22.2 +go 1.23 require ( github.com/antonmedv/expr v1.15.5 From db43539773b7b626ee044c41e605ac9756d9e2dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 10:08:16 -0600 Subject: [PATCH 199/219] chore(deps): bump codecov/codecov-action from 5.0.7 to 5.1.1 (#3986) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.0.7 to 5.1.1. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/015f24e6818733317a2da2edd6290ab26238649a...7f8b4b4bde536c465e797be725718b88c5d95e0e) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/testing.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml index c14230d9b3..4c34771f15 100644 --- a/.github/workflows/testing.yaml +++ b/.github/workflows/testing.yaml @@ -184,7 +184,7 @@ jobs: run: | go tool covdata textfmt -i=coverage-output-unit/,coverage-output-e2e/ -o full-coverage.out - name: Upload code coverage information to codecov.io - uses: codecov/codecov-action@015f24e6818733317a2da2edd6290ab26238649a # v5.0.7 + uses: codecov/codecov-action@7f8b4b4bde536c465e797be725718b88c5d95e0e # v5.1.1 with: file: full-coverage.out fail_ci_if_error: false From c3350034272c44f1b3d3d39f163e071c0c7763fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 10:08:34 -0600 Subject: [PATCH 200/219] chore(deps): bump github.com/stretchr/testify from 1.9.0 to 1.10.0 (#3985) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.9.0 to 1.10.0. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 232a5cf712..85b4d3c683 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( github.com/soheilhy/cmux v0.1.5 github.com/spaceapegames/go-wavefront v1.8.1 github.com/spf13/cobra v1.8.1 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/tj/assert v0.0.3 github.com/valyala/fasttemplate v1.2.2 golang.org/x/oauth2 v0.24.0 diff --git a/go.sum b/go.sum index 53ad037835..22eb479a32 100644 --- a/go.sum +++ b/go.sum @@ -684,8 +684,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk= github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk= github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= From b3356a2edabfeffd11d420df1dac6c5c745279ed Mon Sep 17 00:00:00 2001 From: Nicolas Lamirault Date: Fri, 6 Dec 2024 17:12:10 +0100 Subject: [PATCH 201/219] feat: New Prometheus metric: build_info (#3591) * new Prometheus metrics build_info Signed-off-by: Nicolas Lamirault * fix: gofmt Signed-off-by: Nicolas Lamirault --------- Signed-off-by: Nicolas Lamirault --- controller/metrics/metrics.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/controller/metrics/metrics.go b/controller/metrics/metrics.go index 9691b73a40..d06fbbfe37 100644 --- a/controller/metrics/metrics.go +++ b/controller/metrics/metrics.go @@ -2,6 +2,7 @@ package metrics import ( "net/http" + "runtime" "time" "github.com/argoproj/argo-rollouts/utils/defaults" @@ -16,6 +17,7 @@ import ( "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" rolloutlister "github.com/argoproj/argo-rollouts/pkg/client/listers/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/utils/log" + "github.com/argoproj/argo-rollouts/utils/version" ) type MetricsServer struct { @@ -39,6 +41,16 @@ const ( MetricsPath = "/metrics" ) +var ( + buildInfo = prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Name: "build_info", + Help: "A metric with a constant '1' value labeled by version from which Argo-Rollouts was built.", + }, + []string{"version", "goversion", "goarch", "commit"}, + ) +) + type ServerConfig struct { Addr string RolloutLister rolloutlister.RolloutLister @@ -74,6 +86,9 @@ func NewMetricsServer(cfg ServerConfig) *MetricsServer { reg.MustRegister(MetricNotificationFailedTotal) reg.MustRegister(MetricNotificationSend) reg.MustRegister(MetricVersionGauge) + reg.MustRegister(buildInfo) + + recordBuildInfo() mux.Handle(MetricsPath, promhttp.HandlerFor(prometheus.Gatherers{ // contains app controller specific metrics @@ -174,6 +189,12 @@ func (m *MetricsServer) Remove(namespace string, name string, kind string) { } +// recordBuildInfo publishes information about Argo-Rollouts version and runtime info through an info metric (gauge). +func recordBuildInfo() { + vers := version.GetVersion() + buildInfo.WithLabelValues(vers.Version, runtime.Version(), runtime.GOARCH, vers.GitCommit).Set(1) +} + func boolFloat64(b bool) float64 { if b { return 1 From a4d50d8e65d5fa33a6e7f33f43be9a3df83b06f7 Mon Sep 17 00:00:00 2001 From: "Pierre Baillet (Oct)" <88319985+pierrebailletsonos@users.noreply.github.com> Date: Fri, 6 Dec 2024 18:58:08 +0100 Subject: [PATCH 202/219] docs: fix broken links (#3962) Update notifications.md - Fix external reference urls. --- docs/features/notifications.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/features/notifications.md b/docs/features/notifications.md index 75c044d829..2fc4d33f1b 100644 --- a/docs/features/notifications.md +++ b/docs/features/notifications.md @@ -146,8 +146,8 @@ add blocks and attachments for Slack, subject for Email or URL path, and body fo In addition to custom notification template administrator and configure custom triggers. Custom trigger defines the condition when the notification should be sent. The definition includes name, condition and notification templates reference. The condition is a predicate expression that returns true if the notification should be sent. The trigger condition -evaluation is powered by [antonmedv/expr](https://github.com/antonmedv/expr). -The condition language syntax is described at [Language-Definition.md](https://github.com/antonmedv/expr/blob/master/docs/Language-Definition.md). +evaluation is powered by [expr-lang/expr](https://github.com/expr-lang/expr). +The condition language syntax is described at [Language-Definition.md](https://github.com/expr-lang/expr/blob/master/docs/language-definition.md). The trigger is configured in `argo-rollouts-notification-configmap` ConfigMap. For example the following trigger sends a notification when rollout pod spec uses `argoproj/rollouts-demo:purple` image: From 5a1fa164ef3ecf9a23d4be5716b7858f9adb2294 Mon Sep 17 00:00:00 2001 From: William Van Hevelingen Date: Sat, 7 Dec 2024 06:27:04 -0800 Subject: [PATCH 203/219] ci: add testing for k8s 1.30 and 1.31 (#3858) * ci: add testing for k8s 1.30 and 1.31 Signed-off-by: william.vanhevelingen * Update Kubernetes versions' latest flags in workflow --------- Signed-off-by: william.vanhevelingen Co-authored-by: Zach Aller --- .github/workflows/testing.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml index 4c34771f15..db09896ef8 100644 --- a/.github/workflows/testing.yaml +++ b/.github/workflows/testing.yaml @@ -79,13 +79,13 @@ jobs: fail-fast: false matrix: kubernetes: - - version: 1.26 + - version: '1.28' latest: false - - version: 1.27 + - version: '1.29' latest: false - - version: 1.28 + - version: '1.30' latest: false - - version: 1.29 + - version: '1.31' latest: true name: Run end-to-end tests runs-on: ubuntu-latest From 876bec30042c046cab18c4906f7452d7f91734a9 Mon Sep 17 00:00:00 2001 From: Youssef Rabie Date: Wed, 11 Dec 2024 22:07:37 +0200 Subject: [PATCH 204/219] docs(analysis): add docs for consecutiveSuccessLimit (#3996) Signed-off-by: Youssef Rabie --- docs/features/analysis.md | 61 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/docs/features/analysis.md b/docs/features/analysis.md index bc54c88c43..3afbb42b68 100644 --- a/docs/features/analysis.md +++ b/docs/features/analysis.md @@ -759,6 +759,67 @@ The entire analysis run is considered as Failed after three failed measurements. )) ``` +## ConsecutiveSuccessLimit and FailureLimit + +!!! important + `consecutiveSuccessLimit` available since v1.8 + +You can use either `failureLimit` to define a limit for the number of failures before the analysis is considered failed, `consecutiveSuccessLimit` to define the required consecutive number of successes for the analysis to succeed, or both together. One of them has to be applicable (i.e. not disabled, see below for more), otherwise a validation error is thrown. + +To disable: + + * `failureLimit`, set the field to `-1`. + * `consecutiveSuccessLimit`, set the field to `0` (the default value). + +The default value for both is `0`, the meaning of which differs for each one of them. A value of `0` for `failureLimit` means its logic _is_ applicable and no failures are tolerated. However, a value of `0` for `consecutiveSuccessLimit` means it's inapplicable or disabled. + +Let's go through each case and show what the behavior would look like. + +### Only FailureLimit applicable + +The behavior is shown above in the [Failure Conditions and Failure Limit](#failure-conditions-and-failure-limit) section. This is the default behavior if you set nothing of the two fields (with `failureLimit` having a default value of `0`, so no failures are tolerated). + + +### Only ConsecutiveSuccessLimit applicable + +To have this behavior, you need to have something like +```yaml +failureLimit: -1 +consecutiveSuccessLimit: 4 # Any value > 0 +``` + +This behavior is essentially waiting for a condition to hold, or an event to happen. That is, keep measuring a metric and keep failing until you measure `N` consecutive successful measurements, at which point the analysis concludes successfully. This can be useful as an event-driven way of promoting a rollout when used in an inline analysis. + + +### Both FailureLimit and ConsecutiveSuccessLimit applicable + +To have this behavior, you need to have something like +```yaml +failureLimit: 3 # Any value >= 0 +consecutiveSuccessLimit: 4 # Any value > 0 +``` + +The behavior is simply waiting to measure `N` consecutive successful measurements, _while_ being limited by the number of overall failures specified by `failureLimit`. Above, we need to have at most 3 failures before we get 4 consecutive successful measurements for the analysis to be considered successful. + + +In case of an analysis that has `count` specified (that is, runs for a specific amount of time) and that `count` is reached, the evaluation of success is as follows: + + * `failureLimit` is violated and `consecutiveSuccessLimit` is satisfied: Failure. + * `failureLimit` is violated and `consecutiveSuccessLimit` is not satisfied: Failure. + * `failureLimit` is not violated and `consecutiveSuccessLimit` is satisfied: Success. + * `failureLimit` is not violated and `consecutiveSuccessLimit` is not satisfied: Inconclusive State. + +As illustrated, `failureLimit` takes priority if violated. However, if neither is violated/satisfied, the analysis reaches an inconclusive state. + + +!!! note + When terminating analyses prematurely, they are always terminated successfully, unless it happens that `failureLimit` is enabled and violated, then they terminate in failure. `consecutiveSuccessLimit`, if enabled, doesn't affect the termination status. + + For more clarity, examples of analyses terminated "prematurely": + + * A background analysis with `count` not specified when terminated at the end of the rollout. + * Any analysis with `count` specified and not yet reached when the rollout is aborted. + ## Dry-Run Mode !!! important From 42215e6f664ede913acb3cb3b77ae375c6afc663 Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Thu, 16 Jan 2025 09:18:46 -0600 Subject: [PATCH 205/219] fix: remove ReplicaSet write-back (#4044) * fix: keep informer updated Signed-off-by: Zach Aller * fix: move inside if Signed-off-by: Zach Aller * fix: cleanup logic Signed-off-by: Zach Aller * fix: don't write back to informer at all Signed-off-by: Zach Aller * fix: fix tests Signed-off-by: Zach Aller * fix: remove informer add Signed-off-by: Zach Aller * fix: typo Signed-off-by: Zach Aller * fix: fix lint Signed-off-by: Zach Aller * fix: cleanup Signed-off-by: Zach Aller * fix: cleanup Signed-off-by: Zach Aller * fix: update comments Signed-off-by: Zach Aller --------- Signed-off-by: Zach Aller --- rollout/canary_test.go | 109 ----------------------------------- rollout/controller.go | 100 ++------------------------------ rollout/controller_test.go | 2 +- rollout/ephemeralmetadata.go | 2 +- rollout/replicaset.go | 8 --- rollout/service_test.go | 6 +- rollout/sync.go | 8 +-- 7 files changed, 14 insertions(+), 221 deletions(-) diff --git a/rollout/canary_test.go b/rollout/canary_test.go index ad3d9b4267..ddcfe1ec1e 100644 --- a/rollout/canary_test.go +++ b/rollout/canary_test.go @@ -3,16 +3,10 @@ package rollout import ( "encoding/json" "fmt" - "os" "strconv" "testing" "time" - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" - k8stesting "k8s.io/client-go/testing" - "github.com/stretchr/testify/assert" appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/api/apps/v1" @@ -2117,106 +2111,3 @@ func TestIsDynamicallyRollingBackToStable(t *testing.T) { }) } } - -func TestSyncRolloutWithConflictInScaleReplicaSet(t *testing.T) { - os.Setenv("ARGO_ROLLOUTS_LOG_RS_DIFF_CONFLICT", "true") - defer os.Unsetenv("ARGO_ROLLOUTS_LOG_RS_DIFF_CONFLICT") - - f := newFixture(t) - defer f.Close() - - steps := []v1alpha1.CanaryStep{ - { - SetWeight: int32Ptr(10), - }, { - Pause: &v1alpha1.RolloutPause{ - Duration: v1alpha1.DurationFromInt(10), - }, - }, - } - r1 := newCanaryRollout("foo", 10, nil, steps, int32Ptr(1), intstr.FromInt(1), intstr.FromInt(0)) - r1.Spec.Template.Labels["rollout.argoproj.io/foo"] = "bar" - - rs1 := newReplicaSetWithStatus(r1, 10, 10) - r1.Spec.Replicas = pointer.Int32(2) - f.kubeobjects = append(f.kubeobjects, rs1) - f.replicaSetLister = append(f.replicaSetLister, rs1) - - f.rolloutLister = append(f.rolloutLister, r1) - f.objects = append(f.objects, r1) - - f.expectPatchRolloutAction(r1) - f.expectUpdateReplicaSetAction(rs1) // attempt to scale replicaset but conflict - patchIndex := f.expectPatchReplicaSetAction(rs1) // instead of update patch replicaset - - key := fmt.Sprintf("%s/%s", r1.Namespace, r1.Name) - c, i, k8sI := f.newController(func() time.Duration { return 30 * time.Minute }) - - f.kubeclient.PrependReactor("update", "replicasets", func(action k8stesting.Action) (handled bool, ret runtime.Object, err error) { - return true, action.(k8stesting.UpdateAction).GetObject(), errors.NewConflict(schema.GroupResource{ - Group: "Apps", - Resource: "ReplicaSet", - }, action.(k8stesting.UpdateAction).GetObject().(*appsv1.ReplicaSet).Name, fmt.Errorf("test error")) - }) - - f.runController(key, true, false, c, i, k8sI) - - updatedRs := f.getPatchedReplicaSet(patchIndex) // minus one because update did not happen because conflict - assert.Equal(t, int32(2), *updatedRs.Spec.Replicas) -} - -func TestSyncRolloutWithConflictInSyncReplicaSetRevision(t *testing.T) { - os.Setenv("ARGO_ROLLOUTS_LOG_RS_DIFF_CONFLICT", "true") - defer os.Unsetenv("ARGO_ROLLOUTS_LOG_RS_DIFF_CONFLICT") - - f := newFixture(t) - defer f.Close() - - steps := []v1alpha1.CanaryStep{ - { - SetWeight: int32Ptr(10), - }, { - Pause: &v1alpha1.RolloutPause{ - Duration: v1alpha1.DurationFromInt(10), - }, - }, - } - r1 := newCanaryRollout("foo", 3, nil, steps, int32Ptr(1), intstr.FromInt(1), intstr.FromInt(0)) - r2 := bumpVersion(r1) - - rs1 := newReplicaSetWithStatus(r1, 3, 3) - rs2 := newReplicaSetWithStatus(r2, 3, 3) - rs2.Annotations["rollout.argoproj.io/revision"] = "1" - - f.kubeobjects = append(f.kubeobjects, rs1, rs2) - f.replicaSetLister = append(f.replicaSetLister, rs1, rs2) - - f.rolloutLister = append(f.rolloutLister, r2) - f.objects = append(f.objects, r2) - - key := fmt.Sprintf("%s/%s", r1.Namespace, r1.Name) - c, i, k8sI := f.newController(func() time.Duration { return 30 * time.Minute }) - - f.kubeclient.PrependReactor("update", "replicasets", func(action k8stesting.Action) (handled bool, ret runtime.Object, err error) { - return true, &appsv1.ReplicaSet{}, errors.NewConflict(schema.GroupResource{ - Group: "Apps", - Resource: "ReplicaSet", - }, action.(k8stesting.UpdateAction).GetObject().(*appsv1.ReplicaSet).Name, fmt.Errorf("test error")) - }) - - f.expectPatchRolloutAction(r2) - f.expectUpdateReplicaSetAction(rs1) // attempt to update replicaset revision but conflict - patchIndex1 := f.expectPatchReplicaSetAction(rs1) // instead of update patch replicaset - - f.expectUpdateReplicaSetAction(rs2) // attempt to scale replicaset but conflict - patchIndex2 := f.expectPatchReplicaSetAction(rs2) // instead of update patch replicaset - - f.runController(key, true, false, c, i, k8sI) - - updatedRs1 := f.getPatchedReplicaSet(patchIndex1) - assert.Equal(t, "2", updatedRs1.Annotations["rollout.argoproj.io/revision"]) - assert.Equal(t, int32(3), *updatedRs1.Spec.Replicas) - - updatedRs2 := f.getPatchedReplicaSet(patchIndex2) - assert.Equal(t, int32(0), *updatedRs2.Spec.Replicas) -} diff --git a/rollout/controller.go b/rollout/controller.go index 06dd8312bf..a6ad762702 100644 --- a/rollout/controller.go +++ b/rollout/controller.go @@ -4,16 +4,11 @@ import ( "context" "encoding/json" "fmt" - "os" "reflect" "strconv" - "strings" "sync" "time" - "github.com/argoproj/argo-rollouts/utils/annotations" - - "github.com/argoproj/argo-rollouts/utils/diff" "k8s.io/apimachinery/pkg/runtime/schema" "github.com/argoproj/argo-rollouts/pkg/apis/rollouts" @@ -21,13 +16,11 @@ import ( log "github.com/sirupsen/logrus" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/errors" k8serrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" - patchtypes "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/dynamic" @@ -560,10 +553,6 @@ func (c *Controller) newRolloutContext(rollout *v1alpha1.Rollout) (*rolloutConte roCtx.stableRS = replicasetutil.GetStableRS(roCtx.rollout, roCtx.newRS, roCtx.olderRSs) roCtx.otherRSs = replicasetutil.GetOtherRSs(roCtx.rollout, roCtx.newRS, roCtx.stableRS, rsList) roCtx.allRSs = append(rsList, roCtx.newRS) - err := roCtx.replicaSetInformer.GetIndexer().Add(roCtx.newRS) - if err != nil { - return nil, err - } } if rolloututil.IsFullyPromoted(rollout) && roCtx.pauseContext.IsAborted() { @@ -982,91 +971,14 @@ func remarshalRollout(r *v1alpha1.Rollout) *v1alpha1.Rollout { return &remarshalled } -// updateReplicaSetWithPatch updates the replicaset using Update and on failure falls back to a patch this function only exists to make sure we always can update -// replicasets and to not get into an conflict loop updating replicasets. We should really look into a complete refactor of how rollouts handles replicasets such -// that we do not keep a fully replicaset on the rollout context under newRS and instead switch to a patch only based approach. -func (c *rolloutContext) updateReplicaSetFallbackToPatch(ctx context.Context, rs *appsv1.ReplicaSet) (*appsv1.ReplicaSet, error) { +// updateReplicaSet updates the replicaset using kubeclient update. It returns the updated replicaset and copies the updated replicaset +// into the passed in pointer as well. +func (c *rolloutContext) updateReplicaSet(ctx context.Context, rs *appsv1.ReplicaSet) (*appsv1.ReplicaSet, error) { updatedRS, err := c.kubeclientset.AppsV1().ReplicaSets(rs.Namespace).Update(ctx, rs, metav1.UpdateOptions{}) if err != nil { - if errors.IsConflict(err) { - if os.Getenv("ARGO_ROLLOUTS_LOG_RS_DIFF_CONFLICT") == "true" { - rsGet, err := c.replicaSetLister.ReplicaSets(rs.Namespace).Get(rs.Name) - if err != nil { - return nil, fmt.Errorf("error getting replicaset in updateReplicaSetFallbackToPatch %s: %w", rs.Name, err) - } - rsGetJson, err := json.Marshal(rsGet) - if err != nil { - return nil, fmt.Errorf("error marshalling informer replicaset in updateReplicaSetFallbackToPatch %s: %w", rs.Name, err) - } - rsCopyJson, err := json.Marshal(rs) - if err != nil { - return nil, fmt.Errorf("error marshalling memory replicaset in updateReplicaSetFallbackToPatch %s: %w", rs.Name, err) - } - c.log.Infof("Informer RS: %s", rsGetJson) - c.log.Infof("Memory RS: %s", rsCopyJson) - } - - c.log.Infof("Conflict when updating replicaset %s, falling back to patch", rs.Name) - - patchRS := appsv1.ReplicaSet{} - patchRS.Spec.Replicas = rs.Spec.Replicas - patchRS.Spec.Template.Labels = rs.Spec.Template.Labels - patchRS.Spec.Template.Annotations = rs.Spec.Template.Annotations - - patchRS.Annotations = make(map[string]string) - patchRS.Labels = make(map[string]string) - patchRS.Spec.Selector = &metav1.LabelSelector{ - MatchLabels: make(map[string]string), - } - - if _, found := rs.Labels[v1alpha1.DefaultRolloutUniqueLabelKey]; found { - patchRS.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] = rs.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] - } - - if _, found := rs.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey]; found { - patchRS.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] = rs.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] - } - - if _, found := rs.Spec.Selector.MatchLabels[v1alpha1.DefaultRolloutUniqueLabelKey]; found { - patchRS.Spec.Selector.MatchLabels[v1alpha1.DefaultRolloutUniqueLabelKey] = rs.Spec.Selector.MatchLabels[v1alpha1.DefaultRolloutUniqueLabelKey] - } - - for key, value := range rs.Annotations { - if strings.HasPrefix(key, annotations.RolloutLabel) || - strings.HasPrefix(key, "argo-rollouts.argoproj.io") || - strings.HasPrefix(key, "experiment.argoproj.io") { - patchRS.Annotations[key] = value - } - } - for key, value := range rs.Labels { - if strings.HasPrefix(key, annotations.RolloutLabel) || - strings.HasPrefix(key, "argo-rollouts.argoproj.io") || - strings.HasPrefix(key, "experiment.argoproj.io") { - patchRS.Labels[key] = value - } - } - - patch, _, err := diff.CreateTwoWayMergePatch(appsv1.ReplicaSet{}, patchRS, appsv1.ReplicaSet{}) - if err != nil { - return nil, fmt.Errorf("error creating patch for conflict log in updateReplicaSetFallbackToPatch %s: %w", rs.Name, err) - } - - c.log.Infof("Patching replicaset with patch: %s", string(patch)) - updatedRS, err = c.kubeclientset.AppsV1().ReplicaSets(rs.Namespace).Patch(ctx, rs.Name, patchtypes.StrategicMergePatchType, patch, metav1.PatchOptions{}) - if err != nil { - return nil, fmt.Errorf("error patching replicaset in updateReplicaSetFallbackToPatch %s: %w", rs.Name, err) - } - - err = c.replicaSetInformer.GetIndexer().Update(updatedRS) - if err != nil { - return nil, fmt.Errorf("error updating replicaset informer in updateReplicaSetFallbackToPatch %s: %w", rs.Name, err) - } - - return updatedRS, err - } - } - if updatedRS != nil { - updatedRS.DeepCopyInto(rs) + return nil, fmt.Errorf("error updating replicaset in updateReplicaSet %s: %w", rs.Name, err) } + updatedRS.DeepCopyInto(rs) + return rs, err } diff --git a/rollout/controller_test.go b/rollout/controller_test.go index 2e848212fa..383a539bd0 100644 --- a/rollout/controller_test.go +++ b/rollout/controller_test.go @@ -960,7 +960,7 @@ func (f *fixture) getUpdatedReplicaSet(index int) *appsv1.ReplicaSet { return rs } -func (f *fixture) getPatchedReplicaSet(index int) *appsv1.ReplicaSet { +func (f *fixture) getPatchedReplicaSet(index int) *appsv1.ReplicaSet { //nolint action := filterInformerActions(f.kubeclient.Actions())[index] patchAction, ok := action.(core.PatchAction) if !ok { diff --git a/rollout/ephemeralmetadata.go b/rollout/ephemeralmetadata.go index 29328e1c5f..c3b9d27a6b 100644 --- a/rollout/ephemeralmetadata.go +++ b/rollout/ephemeralmetadata.go @@ -71,7 +71,7 @@ func (c *rolloutContext) syncEphemeralMetadata(ctx context.Context, rs *appsv1.R // First update replicasets, then pods owned by it. // So that any replicas created in the interim between the two steps are using the new updated version. // 1. Update ReplicaSet so that any new pods it creates will have the metadata - rs, err := c.updateReplicaSetFallbackToPatch(ctx, modifiedRS) + rs, err := c.updateReplicaSet(ctx, modifiedRS) if err != nil { c.log.Infof("failed to sync ephemeral metadata %v to ReplicaSet %s: %v", podMetadata, rs.Name, err) return fmt.Errorf("failed to sync ephemeral metadata: %w", err) diff --git a/rollout/replicaset.go b/rollout/replicaset.go index c16ce6f037..e374b98286 100644 --- a/rollout/replicaset.go +++ b/rollout/replicaset.go @@ -39,10 +39,6 @@ func (c *rolloutContext) removeScaleDownDelay(rs *appsv1.ReplicaSet) error { return fmt.Errorf("error removing scale-down-deadline annotation from RS '%s': %w", rs.Name, err) } c.log.Infof("Removed '%s' annotation from RS '%s'", v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey, rs.Name) - err = c.replicaSetInformer.GetIndexer().Update(rs) - if err != nil { - return fmt.Errorf("error updating replicaset informer in removeScaleDownDelay: %w", err) - } return err } @@ -68,10 +64,6 @@ func (c *rolloutContext) addScaleDownDelay(rs *appsv1.ReplicaSet, scaleDownDelay return fmt.Errorf("error adding scale-down-deadline annotation to RS '%s': %w", rs.Name, err) } c.log.Infof("Set '%s' annotation on '%s' to %s (%s)", v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey, rs.Name, deadline, scaleDownDelaySeconds) - err = c.replicaSetInformer.GetIndexer().Update(rs) - if err != nil { - return fmt.Errorf("error updating replicaset informer in addScaleDownDelay: %w", err) - } return err } diff --git a/rollout/service_test.go b/rollout/service_test.go index 21e7401653..f31cd1bf3a 100644 --- a/rollout/service_test.go +++ b/rollout/service_test.go @@ -100,10 +100,8 @@ func TestGetPreviewAndActiveServices(t *testing.T) { noActiveSvcRollout := rollout.DeepCopy() noActiveSvcRollout.Spec.Strategy.BlueGreen.ActiveService = "" roCtx, err := c.newRolloutContext(noActiveSvcRollout) - assert.NoError(t, err) - _, _, err = roCtx.getPreviewAndActiveServices() - assert.NotNil(t, err) - assert.EqualError(t, err, "service \"\" not found") + assert.Error(t, err) + assert.Nil(t, roCtx) }) } diff --git a/rollout/sync.go b/rollout/sync.go index c0d394a74b..3a70878d8f 100644 --- a/rollout/sync.go +++ b/rollout/sync.go @@ -82,7 +82,7 @@ func (c *rolloutContext) syncReplicaSetRevision() (*appsv1.ReplicaSet, error) { rsCopy.Spec.MinReadySeconds = c.rollout.Spec.MinReadySeconds rsCopy.Spec.Template.Spec.Affinity = replicasetutil.GenerateReplicaSetAffinity(*c.rollout) - rs, err := c.updateReplicaSetFallbackToPatch(ctx, rsCopy) + rs, err := c.updateReplicaSet(ctx, rsCopy) if err != nil { return nil, fmt.Errorf("failed to update replicaset revision on %s: %w", rsCopy.Name, err) } @@ -372,13 +372,13 @@ func (c *rolloutContext) scaleReplicaSet(rs *appsv1.ReplicaSet, newScale int32, *(rsCopy.Spec.Replicas) = newScale annotations.SetReplicasAnnotations(rsCopy, rolloutReplicas) if fullScaleDown && !c.shouldDelayScaleDownOnAbort() { - // This bypasses the normal call to removeScaleDownDelay and then depends on the removal via an update in updateReplicaSetFallbackToPatch + // This bypasses the normal call to removeScaleDownDelay and then depends on the removal via an update in updateReplicaSet delete(rsCopy.Annotations, v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey) } - rs, err = c.updateReplicaSetFallbackToPatch(ctx, rsCopy) + rs, err = c.updateReplicaSet(ctx, rsCopy) if err != nil { - return scaled, rs, fmt.Errorf("failed to updateReplicaSetFallbackToPatch in scaleReplicaSet: %w", err) + return scaled, rs, fmt.Errorf("failed to updateReplicaSet in scaleReplicaSet: %w", err) } if sizeNeedsUpdate { From fefd587026f07334634bc16e75f314058d399e29 Mon Sep 17 00:00:00 2001 From: Hellspam Date: Wed, 8 Jan 2025 20:15:11 +0200 Subject: [PATCH 206/219] fix(experiments): move recorder event to after experiment reconciliation, fixes #4021 (#4022) * fix: move recorder event to after experiment reconcilation, fixes #4021 Signed-off-by: Roy Arnon * Add Taboola to the user list --------- Signed-off-by: Roy Arnon Co-authored-by: Zach Aller --- USERS.md | 1 + experiments/controller.go | 17 ++++++++++++++++- experiments/experiment.go | 9 --------- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/USERS.md b/USERS.md index ed196d4234..0c7f356bfd 100644 --- a/USERS.md +++ b/USERS.md @@ -52,6 +52,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit 1. [Skillz](https://www.skillz.com) 1. [Spotify](https://www.spotify.com/) 1. [Synamedia](https://www.synamedia.com) +1. [Taboola](https://www.taboola.com) 1. [TBC Bank](https://tbcbank.ge/) 1. [Trustly](https://www.trustly.com/) 1. [Tuhu](https://www.tuhu.cn/) diff --git a/experiments/controller.go b/experiments/controller.go index 3aa1519e46..b3c0c56329 100644 --- a/experiments/controller.go +++ b/experiments/controller.go @@ -5,6 +5,8 @@ import ( "sync" "time" + corev1 "k8s.io/api/core/v1" + log "github.com/sirupsen/logrus" appsv1 "k8s.io/api/apps/v1" k8serrors "k8s.io/apimachinery/pkg/api/errors" @@ -318,6 +320,7 @@ func (ec *Controller) syncHandler(ctx context.Context, key string) error { } func (ec *Controller) persistExperimentStatus(orig *v1alpha1.Experiment, newStatus *v1alpha1.ExperimentStatus) error { + prevStatus := orig.Status ctx := context.TODO() logCtx := logutil.WithExperiment(orig) patch, modified, err := diff.CreateTwoWayMergePatch( @@ -336,15 +339,27 @@ func (ec *Controller) persistExperimentStatus(orig *v1alpha1.Experiment, newStat return nil } logCtx.Debugf("Experiment Patch: %s", patch) - _, err = ec.argoProjClientset.ArgoprojV1alpha1().Experiments(orig.Namespace).Patch(ctx, orig.Name, patchtypes.MergePatchType, patch, metav1.PatchOptions{}) + patched, err := ec.argoProjClientset.ArgoprojV1alpha1().Experiments(orig.Namespace).Patch(ctx, orig.Name, patchtypes.MergePatchType, patch, metav1.PatchOptions{}) if err != nil { logCtx.Warningf("Error updating experiment: %v", err) return err } logCtx.Info("Patch status successfully") + ec.recordEvent(patched, prevStatus, newStatus) return nil } +func (ec *Controller) recordEvent(ex *v1alpha1.Experiment, prevStatus v1alpha1.ExperimentStatus, newStatus *v1alpha1.ExperimentStatus) { + if prevStatus.Phase != newStatus.Phase { + eventType := corev1.EventTypeNormal + switch newStatus.Phase { + case v1alpha1.AnalysisPhaseError, v1alpha1.AnalysisPhaseFailed, v1alpha1.AnalysisPhaseInconclusive: + eventType = corev1.EventTypeWarning + } + ec.recorder.Eventf(ex, record.EventOptions{EventType: eventType, EventReason: "Experiment" + string(newStatus.Phase)}, "Experiment transitioned from %s -> %s", prevStatus.Phase, newStatus.Phase) + } +} + // enqueueIfCompleted conditionally enqueues the AnalysisRun's Experiment if the run is complete func (ec *Controller) enqueueIfCompleted(obj any) { run := unstructuredutil.ObjectToAnalysisRun(obj) diff --git a/experiments/experiment.go b/experiments/experiment.go index 1b40464015..b27ed5326a 100644 --- a/experiments/experiment.go +++ b/experiments/experiment.go @@ -523,7 +523,6 @@ func (ec *experimentContext) ResolveAnalysisRunArgs(args []v1alpha1.Argument) ([ } func (ec *experimentContext) calculateStatus() *v1alpha1.ExperimentStatus { - prevStatus := ec.newStatus.DeepCopy() switch ec.newStatus.Phase { case "": ec.newStatus.Phase = v1alpha1.AnalysisPhasePending @@ -568,14 +567,6 @@ func (ec *experimentContext) calculateStatus() *v1alpha1.ExperimentStatus { } } ec.newStatus = calculateExperimentConditions(ec.ex, *ec.newStatus) - if prevStatus.Phase != ec.newStatus.Phase { - eventType := corev1.EventTypeNormal - switch ec.newStatus.Phase { - case v1alpha1.AnalysisPhaseError, v1alpha1.AnalysisPhaseFailed, v1alpha1.AnalysisPhaseInconclusive: - eventType = corev1.EventTypeWarning - } - ec.recorder.Eventf(ec.ex, record.EventOptions{EventType: eventType, EventReason: "Experiment" + string(ec.newStatus.Phase)}, "Experiment transitioned from %s -> %s", prevStatus.Phase, ec.newStatus.Phase) - } return ec.newStatus } From e8b557f98f8e6cf926eb4018bdb3fd57a7cb3142 Mon Sep 17 00:00:00 2001 From: Derek Brown <6845676+DerekTBrown@users.noreply.github.com> Date: Fri, 10 Jan 2025 14:42:00 -0800 Subject: [PATCH 207/219] fix(controller): Fixed broken pprof links #4037 (#4038) Signed-off-by: Derek Brown <6845676+DerekTBrown@users.noreply.github.com> --- USERS.md | 1 + controller/profiling.go | 17 +++++++---------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/USERS.md b/USERS.md index 0c7f356bfd..211b65ab32 100644 --- a/USERS.md +++ b/USERS.md @@ -42,6 +42,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit 1. [PagerDuty](https://www.pagerduty.com/) 1. [PayPal](https://www.paypal.com/) 1. [PayPay](https://paypay.ne.jp/) +1. [Plaid](https://plaid.com/) 1. [Priceline](https://priceline.com) 1. [Productboard](https://www.productboard.com) 1. [Quipper](https://www.quipper.com/) diff --git a/controller/profiling.go b/controller/profiling.go index 03920906ac..cf5af5e60f 100644 --- a/controller/profiling.go +++ b/controller/profiling.go @@ -1,24 +1,21 @@ package controller import ( - "fmt" "net/http" "net/http/pprof" ) -const ( - ProfilingPath = "/debug/pprof" -) - // NewPProfServer returns a new pprof server to gather runtime profiling data func NewPProfServer() *http.ServeMux { mux := http.NewServeMux() - mux.HandleFunc(ProfilingPath, pprof.Index) - mux.HandleFunc(fmt.Sprintf("%s/cmdline", ProfilingPath), pprof.Cmdline) - mux.HandleFunc(fmt.Sprintf("%s/profile", ProfilingPath), pprof.Profile) - mux.HandleFunc(fmt.Sprintf("%s/symbol", ProfilingPath), pprof.Symbol) - mux.HandleFunc(fmt.Sprintf("%s/trace", ProfilingPath), pprof.Trace) + // TODO: Remove enumerating all pprof endpoints if/when a more ergonomic + // attachment solution is introduced. See: https://github.com/golang/go/issues/71213. + mux.HandleFunc("/debug/pprof/", pprof.Index) + mux.HandleFunc("/debug/pprof/cmdline/", pprof.Cmdline) + mux.HandleFunc("/debug/pprof/profile/", pprof.Profile) + mux.HandleFunc("/debug/pprof/symbol/", pprof.Symbol) + mux.HandleFunc("/debug/pprof/trace/", pprof.Trace) return mux } From 9c5d75d84a998bc0515caa64085bf8c23f2a41b7 Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Tue, 17 Dec 2024 10:03:01 -0600 Subject: [PATCH 208/219] fix: don't over reconcile on error (#4005) * fix: don't over reconcile on error Signed-off-by: Zach Aller * fix: don't send rollout context on field error Signed-off-by: Zach Aller * fix: cleanup comments Signed-off-by: Zach Aller * fix: cleanup comments Signed-off-by: Zach Aller * fix typo Signed-off-by: Zach Aller --------- Signed-off-by: Zach Aller --- rollout/controller.go | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/rollout/controller.go b/rollout/controller.go index a6ad762702..7e94d7f789 100644 --- a/rollout/controller.go +++ b/rollout/controller.go @@ -406,14 +406,30 @@ func (c *Controller) syncHandler(ctx context.Context, key string) error { }() resolveErr := c.refResolver.Resolve(r) + // We could maybe lose setting the error condition from the below if resolveErr != nil {}, and just log the error to clean up the logic roCtx, err := c.newRolloutContext(r) + if roCtx == nil { + logCtx.Error("newRolloutContext returned nil") + return err + } if err != nil { + if _, ok := err.(*field.Error); ok { + // We want to frequently requeue rollouts with InvalidSpec errors, because the error + // condition might be timing related (e.g. the Rollout was applied before the Service). + c.enqueueRolloutAfter(roCtx.rollout, 20*time.Second) + return nil // do not requeue from error because we already re-queued above + } logCtx.Errorf("newRolloutContext err %v", err) return err } + // We should probably delete this if block and just log the error to clean up the logic, a bigger change would be to add a new + // field to the status maybe (reconcileErrMsg) and store the errors there from the processNextWorkItem function in controller/controller.go if resolveErr != nil { - roCtx.createInvalidRolloutCondition(resolveErr, r) - return resolveErr + err := roCtx.createInvalidRolloutCondition(resolveErr, r) + if err != nil { + return fmt.Errorf("failed to create invalid rollout condition during resolving the rollout: %w", err) + } + return fmt.Errorf("failed to resolve rollout: %w", resolveErr) } // In order to work with HPA, the rollout.Spec.Replica field cannot be nil. As a result, the controller will update @@ -532,9 +548,6 @@ func (c *Controller) newRolloutContext(rollout *v1alpha1.Rollout) (*rolloutConte err = roCtx.getRolloutValidationErrors() if err != nil { if vErr, ok := err.(*field.Error); ok { - // We want to frequently requeue rollouts with InvalidSpec errors, because the error - // condition might be timing related (e.g. the Rollout was applied before the Service). - c.enqueueRolloutAfter(roCtx.rollout, 20*time.Second) err := roCtx.createInvalidRolloutCondition(vErr, roCtx.rollout) if err != nil { return nil, err From 8a4a81afd44f224a4f4921a27d6c40268fdf34cb Mon Sep 17 00:00:00 2001 From: Rizwana Naaz Date: Fri, 13 Dec 2024 06:03:41 +0530 Subject: [PATCH 209/219] fix: Upgrade go-retryablehttp to v0.7.7 (#3743) Upgrade go-retryablehttp to v0.7.7 Signed-off-by: Rizwana777 --- go.mod | 8 ++++---- go.sum | 25 +++++++++++++------------ 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/go.mod b/go.mod index 85b4d3c683..bc3db1a35e 100644 --- a/go.mod +++ b/go.mod @@ -105,7 +105,7 @@ require ( github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect - github.com/fatih/color v1.7.0 // indirect + github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect @@ -135,8 +135,8 @@ require ( github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-hclog v0.14.1 // indirect - github.com/hashicorp/go-retryablehttp v0.7.1 // indirect + github.com/hashicorp/go-hclog v1.6.3 // indirect + github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/huandu/xstrings v1.3.3 // indirect github.com/imdario/mergo v0.3.16 // indirect @@ -150,7 +150,7 @@ require ( github.com/lunixbochs/vtclean v1.0.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect diff --git a/go.sum b/go.sum index 22eb479a32..c4df8353ed 100644 --- a/go.sum +++ b/go.sum @@ -215,8 +215,10 @@ github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSY github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= -github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= @@ -408,17 +410,15 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFb github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.14.1 h1:nQcJDQwIAGnmoUWp8ubocEX40cCml/17YkF6csQLReU= -github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog= github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q= github.com/hashicorp/go-retryablehttp v0.5.1/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ= -github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= +github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -505,17 +505,17 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.10/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw= @@ -914,7 +914,6 @@ golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -948,8 +947,10 @@ golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From 06f2d66bce63f2fdb1850e0084405de1e8931ff0 Mon Sep 17 00:00:00 2001 From: Jordan Rodgers Date: Mon, 3 Feb 2025 18:18:56 -0800 Subject: [PATCH 210/219] fix: check ephemeral metadata is set before delete (#4089) * fix: check ephemeral metadata is set before delete Signed-off-by: Jordan Rodgers * add test case Signed-off-by: Jordan Rodgers * address test comments Signed-off-by: Jordan Rodgers --------- Signed-off-by: Jordan Rodgers --- utils/replicaset/canary.go | 20 ++++++++++++++------ utils/replicaset/canary_test.go | 19 +++++++++++-------- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/utils/replicaset/canary.go b/utils/replicaset/canary.go index f8fd8fe869..49c5ed4582 100644 --- a/utils/replicaset/canary.go +++ b/utils/replicaset/canary.go @@ -640,18 +640,26 @@ func SyncEphemeralPodMetadata(metadata *metav1.ObjectMeta, existingPodMetadata, if existingPodMetadata != nil { for k := range existingPodMetadata.Annotations { if desiredPodMetadata == nil || !isMetadataStillDesired(k, desiredPodMetadata.Annotations) { - if metadata.Annotations != nil { - delete(metadata.Annotations, k) - modified = true + if metadata.Annotations == nil { + continue } + if _, ok := metadata.Annotations[k]; !ok { + continue + } + delete(metadata.Annotations, k) + modified = true } } for k := range existingPodMetadata.Labels { if desiredPodMetadata == nil || !isMetadataStillDesired(k, desiredPodMetadata.Labels) { - if metadata.Labels != nil { - delete(metadata.Labels, k) - modified = true + if metadata.Labels == nil { + continue } + if _, ok := metadata.Labels[k]; !ok { + continue + } + delete(metadata.Labels, k) + modified = true } } } diff --git a/utils/replicaset/canary_test.go b/utils/replicaset/canary_test.go index dbe4ce5a03..a0d5900a4f 100755 --- a/utils/replicaset/canary_test.go +++ b/utils/replicaset/canary_test.go @@ -1339,14 +1339,19 @@ func TestSyncEphemeralPodMetadata(t *testing.T) { "ddd": "444", }, } - { - // verify modified is false if there are no changes + t.Run("verify modified is false if there are no changes", func(t *testing.T) { newMetadata, modified := SyncEphemeralPodMetadata(&meta, &existing, &existing) assert.False(t, modified) assert.Equal(t, meta, *newMetadata) - } - { - // verify we don't touch metadata that we did not inject ourselves + }) + t.Run("verify modified is false if there are no actual deletions", func(t *testing.T) { + existingWithExtraLabel := existing.DeepCopy() + existingWithExtraLabel.Labels["foo"] = "bar" + newMetadata, modified := SyncEphemeralPodMetadata(&meta, existingWithExtraLabel, &existing) + assert.False(t, modified) + assert.Equal(t, meta, *newMetadata) + }) + t.Run("verify we don't touch metadata that we did not inject ourselves", func(t *testing.T) { desired := v1alpha1.PodTemplateMetadata{ Labels: map[string]string{ "aaa": "222", @@ -1356,7 +1361,6 @@ func TestSyncEphemeralPodMetadata(t *testing.T) { }, } newMetadata, modified := SyncEphemeralPodMetadata(&meta, &existing, &desired) - assert.True(t, modified) expected := metav1.ObjectMeta{ Labels: map[string]string{ "aaa": "222", @@ -1369,8 +1373,7 @@ func TestSyncEphemeralPodMetadata(t *testing.T) { } assert.True(t, modified) assert.Equal(t, expected, *newMetadata) - } - + }) } func TestGetReplicasForScaleDown(t *testing.T) { From 71a01005f5916c00539d3fa5dddd0c1c50e2d112 Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Thu, 6 Feb 2025 16:15:47 -0600 Subject: [PATCH 211/219] fix: redo PR 3639 (#4114) Signed-off-by: Zach Aller --- pkg/kubectl-argo-rollouts/info/pod_info.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/kubectl-argo-rollouts/info/pod_info.go b/pkg/kubectl-argo-rollouts/info/pod_info.go index e53f350848..463657d70d 100644 --- a/pkg/kubectl-argo-rollouts/info/pod_info.go +++ b/pkg/kubectl-argo-rollouts/info/pod_info.go @@ -53,6 +53,12 @@ func newPodInfo(pod *corev1.Pod) rollout.PodInfo { }, } restarts := 0 + rs := make(map[string]bool, len(pod.Spec.InitContainers)) + for _, c := range pod.Spec.InitContainers { + p := c.RestartPolicy + rs[c.Name] = p != nil && *p == corev1.ContainerRestartPolicyAlways + } + totalContainers := len(pod.Spec.Containers) readyContainers := 0 @@ -69,7 +75,7 @@ func newPodInfo(pod *corev1.Pod) rollout.PodInfo { continue case container.State.Terminated != nil: // initialization is failed - if len(container.State.Terminated.Reason) == 0 { + if container.State.Terminated.Reason == "" { if container.State.Terminated.Signal != 0 { reason = fmt.Sprintf("Init:Signal:%d", container.State.Terminated.Signal) } else { @@ -79,6 +85,10 @@ func newPodInfo(pod *corev1.Pod) rollout.PodInfo { reason = "Init:" + container.State.Terminated.Reason } initializing = true + case rs[container.Name] && container.Started != nil && *container.Started: + if container.Ready { + continue + } case container.State.Waiting != nil && len(container.State.Waiting.Reason) > 0 && container.State.Waiting.Reason != "PodInitializing": reason = "Init:" + container.State.Waiting.Reason initializing = true From f740d798bf90d3a355bafec2796ea7d6f25f9573 Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Tue, 11 Feb 2025 21:44:28 -0600 Subject: [PATCH 212/219] fix: nil pointer on logging (#4127) Signed-off-by: Zach Aller --- rollout/ephemeralmetadata.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rollout/ephemeralmetadata.go b/rollout/ephemeralmetadata.go index c3b9d27a6b..49bacb345a 100644 --- a/rollout/ephemeralmetadata.go +++ b/rollout/ephemeralmetadata.go @@ -73,7 +73,7 @@ func (c *rolloutContext) syncEphemeralMetadata(ctx context.Context, rs *appsv1.R // 1. Update ReplicaSet so that any new pods it creates will have the metadata rs, err := c.updateReplicaSet(ctx, modifiedRS) if err != nil { - c.log.Infof("failed to sync ephemeral metadata %v to ReplicaSet %s: %v", podMetadata, rs.Name, err) + c.log.Infof("failed to sync ephemeral metadata %v to ReplicaSet %s: %v", podMetadata, originalRSCopy.Name, err) return fmt.Errorf("failed to sync ephemeral metadata: %w", err) } c.log.Infof("synced ephemeral metadata %v to ReplicaSet %s", podMetadata, rs.Name) From abeaca1cdbfeb5e6fee0a6eb3bbb5e11ab883dc1 Mon Sep 17 00:00:00 2001 From: Takayuki Takagi Date: Fri, 21 Feb 2025 23:23:55 +0900 Subject: [PATCH 213/219] fix(metricprovider): not require address in kubernetes secret for Datadog. Fixes #4103 (#4145) fix(metricprovider): not require address in kubernetes secret for Datadog Signed-off-by: Takayuki Takagi --- metricproviders/datadog/datadog.go | 2 +- metricproviders/datadog/datadog_test.go | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/metricproviders/datadog/datadog.go b/metricproviders/datadog/datadog.go index 021731dd62..65b96e10d9 100644 --- a/metricproviders/datadog/datadog.go +++ b/metricproviders/datadog/datadog.go @@ -451,7 +451,7 @@ func findCredentials(logCtx log.Entry, kubeclientset kubernetes.Interface, names } for _, finder := range finders { address, apiKey, appKey := finder.FindCredentials(logCtx) - if address != "" && apiKey != "" && appKey != "" { + if apiKey != "" && appKey != "" { return address, apiKey, appKey, nil } } diff --git a/metricproviders/datadog/datadog_test.go b/metricproviders/datadog/datadog_test.go index 4d82a24f8d..a7fc73b9ac 100644 --- a/metricproviders/datadog/datadog_test.go +++ b/metricproviders/datadog/datadog_test.go @@ -187,16 +187,23 @@ func TestValidateIncomingProps(t *testing.T) { func TestFindCredentials(t *testing.T) { testCases := []struct { - name string - secret *corev1.Secret - expectsError bool - metric v1alpha1.Metric + name string + secret *corev1.Secret + expectsError bool + expectsEmptyAddress bool + metric v1alpha1.Metric }{ { name: "when secretRef is set and secret found, should success", secret: NewSecretBuilderDefaultData().Build(), metric: newMetric("datadog", true), }, + { + name: "when secretRef without address is set and secret found, should success", + secret: NewSecretBuilder().WithData("api-key", []byte("apiKey")).WithData("app-key", []byte("appKey")).Build(), + metric: newMetric("datadog", true), + expectsEmptyAddress: true, + }, { name: "when secretRef is set but secret not found, should fail", secret: NewSecretBuilder().Build(), @@ -222,7 +229,11 @@ func TestFindCredentials(t *testing.T) { address, apiKey, appKey, err := findCredentials(logCtx, fakeClient, "namespace", testCase.metric) assert.Equal(t, err != nil, testCase.expectsError) if !testCase.expectsError { - assert.Equal(t, string(testCase.secret.Data["address"]), address) + if testCase.expectsEmptyAddress { + assert.Empty(t, address) + } else { + assert.Equal(t, string(testCase.secret.Data["address"]), address) + } assert.Equal(t, string(testCase.secret.Data["api-key"]), apiKey) assert.Equal(t, string(testCase.secret.Data["app-key"]), appKey) } From 04c62f61ec6c7dfda1bae1f361a2b28e4c9fc9bb Mon Sep 17 00:00:00 2001 From: Zach Aller Date: Fri, 21 Feb 2025 13:16:41 -0600 Subject: [PATCH 214/219] fix: loop when paused and completed (#4134) * fix: loop when paused and completed Signed-off-by: Zach Aller * fix: loop when paused and completed Signed-off-by: Zach Aller * fix: loop when paused and completed Signed-off-by: Zach Aller * cleanup Signed-off-by: Zach Aller * add e2e tests Signed-off-by: Zach Aller * fix: loop when paused and completed Signed-off-by: Zach Aller * fix: loop when paused and completed Signed-off-by: Zach Aller * fix: loop when paused and completed Signed-off-by: Zach Aller * cleanup Signed-off-by: Zach Aller * add e2e tests Signed-off-by: Zach Aller * add comments Signed-off-by: Zach Aller * use function for completed Signed-off-by: Zach Aller * remove un-used variable Signed-off-by: Zach Aller --------- Signed-off-by: Zach Aller --- rollout/sync.go | 4 +-- test/e2e/canary_test.go | 58 +++++++++++++++++++++++++++++-- test/fixtures/when.go | 39 +++++++++++++++++++++ utils/conditions/conditions.go | 2 +- utils/conditions/rollouts_test.go | 4 +-- 5 files changed, 100 insertions(+), 7 deletions(-) diff --git a/rollout/sync.go b/rollout/sync.go index 3a70878d8f..f4c6ca9715 100644 --- a/rollout/sync.go +++ b/rollout/sync.go @@ -492,7 +492,7 @@ func (c *rolloutContext) checkPausedConditions() error { var updatedConditions []*v1alpha1.RolloutCondition - if (isPaused != progCondPaused) && !abortCondExists { + if (isPaused != progCondPaused) && !abortCondExists && !conditions.RolloutCompleted(&c.rollout.Status) { if isPaused { updatedConditions = append(updatedConditions, conditions.NewRolloutCondition(v1alpha1.RolloutProgressing, corev1.ConditionUnknown, conditions.RolloutPausedReason, conditions.RolloutPausedMessage)) } else { @@ -719,7 +719,7 @@ func (c *rolloutContext) calculateRolloutConditions(newStatus v1alpha1.RolloutSt conditions.RemoveRolloutCondition(&newStatus, v1alpha1.RolloutReplicaFailure) } - if conditions.RolloutCompleted(c.rollout, &newStatus) { + if conditions.RolloutCompleted(&newStatus) { // The event gets triggered in function promoteStable updateCompletedCond := conditions.NewRolloutCondition(v1alpha1.RolloutCompleted, corev1.ConditionTrue, conditions.RolloutCompletedReason, conditions.RolloutCompletedReason) diff --git a/test/e2e/canary_test.go b/test/e2e/canary_test.go index 7c39f6e3bd..195e08f9db 100644 --- a/test/e2e/canary_test.go +++ b/test/e2e/canary_test.go @@ -4,6 +4,7 @@ package e2e import ( + "github.com/argoproj/argo-rollouts/utils/conditions" "log" "testing" "time" @@ -632,7 +633,7 @@ func (s *CanarySuite) TestCanaryDynamicStableScale() { ApplyManifests(). MarkPodsReady("1", 4). // mark all 4 pods ready WaitForRolloutStatus("Healthy"). - UpdateSpec(). // update to revision 2 + UpdateSpec(). // update to revision 2 MarkPodsReady("2", 1). // mark 1 of 1 canary pods ready WaitForRolloutStatus("Paused"). Sleep(2*time.Second). @@ -708,7 +709,7 @@ func (s *CanarySuite) TestCanaryDynamicStableScaleRollbackToStable() { assert.Equal(s.T(), int32(75), ro.Status.Canary.Weights.Stable.Weight) }). When(). - MarkPodsReady("3", 1). // marks the 4th pod of stableRS/newRS (revision 3) ready + MarkPodsReady("3", 1). // marks the 4th pod of stableRS/newRS (revision 3) ready WaitForRevisionPodCount("2", 0). // make sure we scale down the previous desired (revision 2) Then(). Assert(func(t *fixtures.Then) { @@ -727,3 +728,56 @@ func (s *CanarySuite) TestCanaryDynamicStableScaleRollbackToStable() { }) } + +// TestCanaryWithSpecPause This tests that we do not go into a update loop where we flap back updating condition patches. +func (s *CanarySuite) TestCanaryWithSpecPause() { + s.Given(). + RolloutObjects(` +apiVersion: argoproj.io/v1alpha1 +kind: Rollout +metadata: + name: rollout-canary-with-pause +spec: + replicas: 3 + revisionHistoryLimit: 2 + progressDeadlineSeconds: 5 + selector: + matchLabels: + app: rollout-canary-with-pause + template: + metadata: + labels: + app: rollout-canary-with-pause + spec: + containers: + - name: rollouts-demo + image: nginx:1.19-alpine + ports: + - containerPort: 80 + readinessProbe: + initialDelaySeconds: 10 + httpGet: + path: / + port: 80 + periodSeconds: 30 + strategy: + canary: + steps: + - setWeight: 20 +`). + When(). + ApplyManifests(). + WaitForRolloutStatus("Degraded"). + WaitForRolloutStatus("Healthy"). + WaitForRolloutReplicas(3). + UpdateSpec(`{"spec":{"paused": true}}`). + WaitForRolloutConditionToNotExist(func(ro *v1alpha1.Rollout) bool { + for _, c := range ro.Status.Conditions { + if c.Type == v1alpha1.RolloutProgressing && c.Reason == conditions.RolloutPausedReason && c.Status == corev1.ConditionUnknown { + return true + } + } + return false + }, "ProgressingPausedUnknown", 5*time.Second). + WaitForRolloutStatus("Paused") +} diff --git a/test/fixtures/when.go b/test/fixtures/when.go index a5806befb9..4f8159e5d1 100644 --- a/test/fixtures/when.go +++ b/test/fixtures/when.go @@ -469,6 +469,45 @@ func (w *When) WaitForRolloutCondition(test func(ro *rov1.Rollout) bool, conditi } } +// WaitForRolloutConditionToNotExist this function will check for the condition to exist for the given duration, if it is found +// the test fails. +func (w *When) WaitForRolloutConditionToNotExist(test func(ro *rov1.Rollout) bool, condition string, timeout time.Duration) *When { + start := time.Now() + w.log.Infof("Waiting for condition to not exist: %s", condition) + rolloutIf := w.dynamicClient.Resource(rov1.RolloutGVR).Namespace(w.namespace) + ro, err := rolloutIf.Get(w.Context, w.rollout.GetName(), metav1.GetOptions{}) + w.CheckError(err) + retryWatcher, err := watchutil.NewRetryWatcher(ro.GetResourceVersion(), &cache.ListWatch{ + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + opts := metav1.ListOptions{FieldSelector: fields.ParseSelectorOrDie(fmt.Sprintf("metadata.name=%s", w.rollout.GetName())).String()} + return w.rolloutClient.ArgoprojV1alpha1().Rollouts(w.namespace).Watch(w.Context, opts) + }, + }) + w.CheckError(err) + defer retryWatcher.Stop() + timeoutCh := make(chan bool, 1) + go func() { + time.Sleep(timeout) + timeoutCh <- true + }() + for { + select { + case event := <-retryWatcher.ResultChan(): + ro, ok := event.Object.(*rov1.Rollout) + if ok { + if test(ro) { + //w.PrintRollout(ro) + w.log.Infof("Condition '%s' met after %v", condition, time.Since(start).Truncate(time.Second)) + w.t.Fatal("not ok") + } + } + case <-timeoutCh: + w.t.Logf("Condition %s not found after %v", condition, timeout) + return w + } + } +} + func (w *When) DeleteRollout() *When { w.log.Info("Deleting") err := w.rolloutClient.ArgoprojV1alpha1().Rollouts(w.namespace).Delete(w.Context, w.rollout.GetName(), metav1.DeleteOptions{}) diff --git a/utils/conditions/conditions.go b/utils/conditions/conditions.go index 738f2120ab..57d8c0f02f 100644 --- a/utils/conditions/conditions.go +++ b/utils/conditions/conditions.go @@ -313,7 +313,7 @@ func RolloutHealthy(rollout *v1alpha1.Rollout, newStatus *v1alpha1.RolloutStatus } // RolloutCompleted considers a rollout to be complete once StableRS == CurrentPodHash -func RolloutCompleted(rollout *v1alpha1.Rollout, newStatus *v1alpha1.RolloutStatus) bool { +func RolloutCompleted(newStatus *v1alpha1.RolloutStatus) bool { return newStatus.StableRS != "" && newStatus.StableRS == newStatus.CurrentPodHash } diff --git a/utils/conditions/rollouts_test.go b/utils/conditions/rollouts_test.go index 289437d758..af6a69d40c 100644 --- a/utils/conditions/rollouts_test.go +++ b/utils/conditions/rollouts_test.go @@ -499,10 +499,10 @@ func TestRolloutComplete(t *testing.T) { return r } r := rollout(5, 5, 5, 5) - assert.Equal(t, true, RolloutCompleted(r, &r.Status)) + assert.Equal(t, true, RolloutCompleted(&r.Status)) r.Status.StableRS = "not-current-pod-hash" - assert.Equal(t, false, RolloutCompleted(r, &r.Status)) + assert.Equal(t, false, RolloutCompleted(&r.Status)) } func TestRolloutTimedOut(t *testing.T) { From 7bb9c0be52e447d8134d68f82c57885e131aef62 Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Wed, 18 Dec 2024 18:13:14 +0200 Subject: [PATCH 215/219] docs: new syntax for docs conf (#4012) Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --- .readthedocs.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 7b5d5d427f..aa5927f907 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,6 +1,7 @@ version: 2 formats: all mkdocs: + configuration: mkdocs.yml fail_on_warning: false python: install: From 399b64726080855f65e88b7b4e9c88b3470bb93d Mon Sep 17 00:00:00 2001 From: Ville Vesilehto Date: Mon, 3 Feb 2025 18:16:38 +0200 Subject: [PATCH 216/219] fix: correct typo in linter settings key name (#4094) The linter settings key was incorrectly named "linter-settings" instead of "linters-settings", preventing proper parsing of goimports configuration. This fixes the local-prefixes setting for import organization. All affected files have been automatically reformatted to comply with the now-active goimports rules for import ordering and grouping. Signed-off-by: Ville Vesilehto --- .golangci.yml | 2 +- analysis/controller.go | 5 +++-- cmd/kubectl-argo-rollouts/main.go | 3 ++- cmd/rollouts-controller/main.go | 5 +++-- controller/controller.go | 3 ++- controller/metrics/experiment_test.go | 3 ++- controller/metrics/metrics_test.go | 3 ++- controller/metrics/prommetrics.go | 3 ++- controller/metrics/rollout_test.go | 5 +++-- experiments/service.go | 5 +++-- ingress/ingress_test.go | 3 ++- metricproviders/datadog/datadogV1_test.go | 3 ++- metricproviders/datadog/datadogV2_test.go | 3 ++- metricproviders/datadog/datadog_test.go | 3 ++- metricproviders/graphite/api_test.go | 3 ++- metricproviders/influxdb/influxdb.go | 5 +++-- metricproviders/influxdb/influxdb_test.go | 3 ++- metricproviders/metricproviders.go | 5 +++-- metricproviders/newrelic/mock_test.go | 3 ++- metricproviders/plugin/client/client.go | 3 ++- metricproviders/plugin/rpc/rpc.go | 3 ++- metricproviders/plugin/rpc/rpc_test.go | 3 ++- .../plugin/rpc/rpc_test_implementation.go | 3 ++- .../prometheus/headers_round_tripper_test.go | 3 ++- metricproviders/prometheus/prometheus_test.go | 3 ++- metricproviders/wavefront/wavefront_test.go | 3 ++- metricproviders/webmetric/webmetric_test.go | 3 ++- pkg/kubectl-argo-rollouts/cmd/cmd.go | 3 ++- .../cmd/completion/completion.go | 3 ++- .../cmd/completion/completion_test.go | 3 ++- pkg/kubectl-argo-rollouts/cmd/create/create_test.go | 3 ++- .../cmd/dashboard/dashboard.go | 3 ++- pkg/kubectl-argo-rollouts/cmd/lint/lint.go | 11 ++++++----- pkg/kubectl-argo-rollouts/cmd/lint/lint_test.go | 3 ++- pkg/kubectl-argo-rollouts/cmd/status/status.go | 3 ++- pkg/kubectl-argo-rollouts/cmd/status/status_test.go | 3 ++- pkg/kubectl-argo-rollouts/cmd/undo/undo.go | 9 +++++---- pkg/kubectl-argo-rollouts/cmd/undo/undo_test.go | 3 ++- pkg/kubectl-argo-rollouts/info/pod_info.go | 3 ++- .../viewcontroller/viewcontroller_test.go | 5 +++-- rollout/context.go | 5 +++-- rollout/controller.go | 3 ++- rollout/scale_utils_test.go | 9 +++++---- rollout/service.go | 11 ++++++----- rollout/stepplugin.go | 3 ++- rollout/stepplugin_test.go | 9 +++++---- rollout/steps/plugin/client/client.go | 3 ++- rollout/steps/plugin/plugin.go | 3 ++- rollout/steps/plugin/plugin_test.go | 7 ++++--- rollout/steps/plugin/resolver.go | 5 +++-- rollout/steps/plugin/rpc/rpc.go | 3 ++- rollout/steps/plugin/rpc/rpc_test.go | 3 ++- rollout/trafficrouting/alb/alb.go | 3 ++- rollout/trafficrouting/apisix/apisix.go | 5 +++-- rollout/trafficrouting/apisix/apisix_test.go | 5 +++-- rollout/trafficrouting/apisix/mocks/apisix.go | 3 ++- rollout/trafficrouting/appmesh/resource_client.go | 3 ++- rollout/trafficrouting/istio/istio.go | 3 ++- rollout/trafficrouting/istio/istio_types.go | 3 ++- rollout/trafficrouting/plugin/client/client.go | 3 ++- rollout/trafficrouting/plugin/plugin.go | 3 ++- rollout/trafficrouting/plugin/rpc/rpc.go | 3 ++- rollout/trafficrouting/plugin/rpc/rpc_test.go | 3 ++- rollout/trafficrouting/service_helper_test.go | 3 ++- rollout/trafficrouting/traefik/mocks/traefik.go | 3 ++- rollout/trafficrouting/traefik/traefik_test.go | 5 +++-- service/service_test.go | 3 ++- .../metrics-plugin-sample/internal/plugin/plugin.go | 9 +++++---- test/cmd/metrics-plugin-sample/main.go | 5 +++-- test/cmd/step-plugin-e2e/internal/plugin/plugin.go | 5 +++-- test/cmd/step-plugin-e2e/main.go | 5 +++-- .../step-plugin-sample/internal/plugin/plugin.go | 5 +++-- .../internal/plugin/plugin_test.go | 5 +++-- test/cmd/step-plugin-sample/main.go | 5 +++-- test/cmd/step-plugin-sample/main_test.go | 8 +++++--- .../internal/plugin/plugin.go | 11 ++++++----- test/cmd/trafficrouter-plugin-sample/main.go | 5 +++-- test/fixtures/common.go | 3 ++- test/fixtures/then.go | 3 ++- utils/analysis/factory_test.go | 5 +++-- utils/analysis/helpers.go | 3 ++- utils/apisix/apisix.go | 3 ++- utils/appmesh/appmesh.go | 3 ++- utils/aws/aws.go | 3 ++- utils/config/config.go | 5 +++-- utils/controller/controller_test.go | 3 ++- utils/istio/istio_test.go | 5 +++-- utils/plugin/downloader.go | 3 ++- utils/plugin/downloader_test.go | 3 ++- utils/plugin/plugin_test.go | 3 ++- utils/record/record.go | 5 +++-- utils/record/record_test.go | 13 +++++++------ utils/rollout/rolloututil_test.go | 5 +++-- utils/template/template_test.go | 3 ++- 94 files changed, 245 insertions(+), 151 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index af89264b4a..4bd278eb08 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -6,7 +6,7 @@ issues: - pkg/client exclude-files: - ".*\\.pb\\.go" -linter-settings: +linters-settings: goimports: local-prefixes: github.com/argoproj/argo-rollouts linters: diff --git a/analysis/controller.go b/analysis/controller.go index 5972c9d936..804ca7bd34 100644 --- a/analysis/controller.go +++ b/analysis/controller.go @@ -5,12 +5,13 @@ import ( "sync" "time" - "github.com/argoproj/argo-rollouts/metric" - jobProvider "github.com/argoproj/argo-rollouts/metricproviders/job" "github.com/aws/smithy-go/ptr" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" + "github.com/argoproj/argo-rollouts/metric" + jobProvider "github.com/argoproj/argo-rollouts/metricproviders/job" + unstructuredutil "github.com/argoproj/argo-rollouts/utils/unstructured" log "github.com/sirupsen/logrus" diff --git a/cmd/kubectl-argo-rollouts/main.go b/cmd/kubectl-argo-rollouts/main.go index b7d9a02d0a..f81b506ead 100644 --- a/cmd/kubectl-argo-rollouts/main.go +++ b/cmd/kubectl-argo-rollouts/main.go @@ -3,7 +3,6 @@ package main import ( "os" - logutil "github.com/argoproj/argo-rollouts/utils/log" log "github.com/sirupsen/logrus" "k8s.io/cli-runtime/pkg/genericclioptions" _ "k8s.io/client-go/plugin/pkg/client/auth/azure" @@ -11,6 +10,8 @@ import ( _ "k8s.io/client-go/plugin/pkg/client/auth/oidc" "k8s.io/klog/v2" + logutil "github.com/argoproj/argo-rollouts/utils/log" + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/cmd" "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" ) diff --git a/cmd/rollouts-controller/main.go b/cmd/rollouts-controller/main.go index 89e611ab95..370ce55aa9 100644 --- a/cmd/rollouts-controller/main.go +++ b/cmd/rollouts-controller/main.go @@ -7,8 +7,6 @@ import ( "strings" "time" - "github.com/argoproj/argo-rollouts/metricproviders" - "github.com/argoproj/argo-rollouts/utils/record" "github.com/argoproj/pkg/kubeclientmetrics" smiclientset "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/split/clientset/versioned" log "github.com/sirupsen/logrus" @@ -24,6 +22,9 @@ import ( _ "k8s.io/client-go/plugin/pkg/client/auth/oidc" "k8s.io/client-go/tools/clientcmd" + "github.com/argoproj/argo-rollouts/metricproviders" + "github.com/argoproj/argo-rollouts/utils/record" + "github.com/argoproj/argo-rollouts/controller" "github.com/argoproj/argo-rollouts/controller/metrics" jobprovider "github.com/argoproj/argo-rollouts/metricproviders/job" diff --git a/controller/controller.go b/controller/controller.go index 0e7a0a8cae..5d7105c281 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -13,9 +13,10 @@ import ( istioutil "github.com/argoproj/argo-rollouts/utils/istio" - rolloutsConfig "github.com/argoproj/argo-rollouts/utils/config" goPlugin "github.com/hashicorp/go-plugin" + rolloutsConfig "github.com/argoproj/argo-rollouts/utils/config" + "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/dynamic/dynamicinformer" diff --git a/controller/metrics/experiment_test.go b/controller/metrics/experiment_test.go index 5694fc9830..9362dab4f7 100644 --- a/controller/metrics/experiment_test.go +++ b/controller/metrics/experiment_test.go @@ -10,9 +10,10 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/yaml" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) const ( diff --git a/controller/metrics/metrics_test.go b/controller/metrics/metrics_test.go index ced10b2442..43a52230f9 100644 --- a/controller/metrics/metrics_test.go +++ b/controller/metrics/metrics_test.go @@ -9,11 +9,12 @@ import ( "testing" "time" - "github.com/argoproj/argo-rollouts/utils/defaults" "github.com/stretchr/testify/assert" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/tools/cache" + "github.com/argoproj/argo-rollouts/utils/defaults" + "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" informerfactory "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions" logutil "github.com/argoproj/argo-rollouts/utils/log" diff --git a/controller/metrics/prommetrics.go b/controller/metrics/prommetrics.go index c0d3b89f62..e2e5aaaac3 100644 --- a/controller/metrics/prommetrics.go +++ b/controller/metrics/prommetrics.go @@ -1,8 +1,9 @@ package metrics import ( - "github.com/argoproj/argo-rollouts/utils/version" "github.com/prometheus/client_golang/prometheus" + + "github.com/argoproj/argo-rollouts/utils/version" ) // Follow Prometheus naming practices diff --git a/controller/metrics/rollout_test.go b/controller/metrics/rollout_test.go index 17f86b011f..9cb0013822 100644 --- a/controller/metrics/rollout_test.go +++ b/controller/metrics/rollout_test.go @@ -10,10 +10,11 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/yaml" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/utils/conditions" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/utils/conditions" ) const ( diff --git a/experiments/service.go b/experiments/service.go index afab417679..aaac3d3fee 100644 --- a/experiments/service.go +++ b/experiments/service.go @@ -6,12 +6,13 @@ import ( "k8s.io/apimachinery/pkg/api/errors" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - logutil "github.com/argoproj/argo-rollouts/utils/log" log "github.com/sirupsen/logrus" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + logutil "github.com/argoproj/argo-rollouts/utils/log" ) var experimentKind = v1alpha1.SchemeGroupVersion.WithKind("Experiment") diff --git a/ingress/ingress_test.go b/ingress/ingress_test.go index be588dd51a..0336c0e3f3 100644 --- a/ingress/ingress_test.go +++ b/ingress/ingress_test.go @@ -18,12 +18,13 @@ import ( k8sfake "k8s.io/client-go/kubernetes/fake" "k8s.io/client-go/util/workqueue" + "k8s.io/client-go/tools/cache" + "github.com/argoproj/argo-rollouts/controller/metrics" "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" informers "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions" ingressutil "github.com/argoproj/argo-rollouts/utils/ingress" - "k8s.io/client-go/tools/cache" ) const stableService string = "test-stable-service" diff --git a/metricproviders/datadog/datadogV1_test.go b/metricproviders/datadog/datadogV1_test.go index 1e10d02137..06d261faf7 100644 --- a/metricproviders/datadog/datadogV1_test.go +++ b/metricproviders/datadog/datadogV1_test.go @@ -8,7 +8,6 @@ import ( "strconv" "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" corev1 "k8s.io/api/core/v1" @@ -16,6 +15,8 @@ import ( "k8s.io/apimachinery/pkg/runtime" k8sfake "k8s.io/client-go/kubernetes/fake" kubetesting "k8s.io/client-go/testing" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) func TestRunSuite(t *testing.T) { diff --git a/metricproviders/datadog/datadogV2_test.go b/metricproviders/datadog/datadogV2_test.go index b370e5c371..6b752bd1bb 100644 --- a/metricproviders/datadog/datadogV2_test.go +++ b/metricproviders/datadog/datadogV2_test.go @@ -8,7 +8,6 @@ import ( "os" "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" corev1 "k8s.io/api/core/v1" @@ -16,6 +15,8 @@ import ( "k8s.io/apimachinery/pkg/runtime" k8sfake "k8s.io/client-go/kubernetes/fake" kubetesting "k8s.io/client-go/testing" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) func newQueryDefaultProvider() v1alpha1.MetricProvider { diff --git a/metricproviders/datadog/datadog_test.go b/metricproviders/datadog/datadog_test.go index a7fc73b9ac..ea995f4804 100644 --- a/metricproviders/datadog/datadog_test.go +++ b/metricproviders/datadog/datadog_test.go @@ -6,7 +6,6 @@ import ( "os" "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" corev1 "k8s.io/api/core/v1" @@ -15,6 +14,8 @@ import ( k8sfake "k8s.io/client-go/kubernetes/fake" "k8s.io/client-go/kubernetes/scheme" kubetesting "k8s.io/client-go/testing" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) func TestDatadogSpecDefaults(t *testing.T) { diff --git a/metricproviders/graphite/api_test.go b/metricproviders/graphite/api_test.go index 74f0ef1176..8fba5c4374 100644 --- a/metricproviders/graphite/api_test.go +++ b/metricproviders/graphite/api_test.go @@ -8,9 +8,10 @@ import ( "testing" "time" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) func testGraphiteMetric(addr string) v1alpha1.Metric { diff --git a/metricproviders/influxdb/influxdb.go b/metricproviders/influxdb/influxdb.go index 4266d2e2f6..9bd38598b5 100644 --- a/metricproviders/influxdb/influxdb.go +++ b/metricproviders/influxdb/influxdb.go @@ -6,14 +6,15 @@ import ( "fmt" "time" - "github.com/argoproj/argo-rollouts/utils/defaults" - "github.com/argoproj/argo-rollouts/utils/evaluate" influxdb2 "github.com/influxdata/influxdb-client-go/v2" influxapi "github.com/influxdata/influxdb-client-go/v2/api" log "github.com/sirupsen/logrus" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" + "github.com/argoproj/argo-rollouts/utils/defaults" + "github.com/argoproj/argo-rollouts/utils/evaluate" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" metricutil "github.com/argoproj/argo-rollouts/utils/metric" ) diff --git a/metricproviders/influxdb/influxdb_test.go b/metricproviders/influxdb/influxdb_test.go index 028d66aed4..0ba80f4be8 100644 --- a/metricproviders/influxdb/influxdb_test.go +++ b/metricproviders/influxdb/influxdb_test.go @@ -7,7 +7,6 @@ import ( "strings" "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" influxdb2 "github.com/influxdata/influxdb-client-go/v2/api" log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" @@ -16,6 +15,8 @@ import ( "k8s.io/apimachinery/pkg/runtime" k8sfake "k8s.io/client-go/kubernetes/fake" kubetesting "k8s.io/client-go/testing" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) func newAnalysisRun() *v1alpha1.AnalysisRun { diff --git a/metricproviders/metricproviders.go b/metricproviders/metricproviders.go index 565935e00b..ef1381d668 100644 --- a/metricproviders/metricproviders.go +++ b/metricproviders/metricproviders.go @@ -4,11 +4,12 @@ import ( "fmt" "os" + "k8s.io/client-go/rest" + "k8s.io/client-go/tools/clientcmd" + "github.com/argoproj/argo-rollouts/metric" "github.com/argoproj/argo-rollouts/metricproviders/influxdb" "github.com/argoproj/argo-rollouts/metricproviders/skywalking" - "k8s.io/client-go/rest" - "k8s.io/client-go/tools/clientcmd" "github.com/argoproj/argo-rollouts/metricproviders/cloudwatch" "github.com/argoproj/argo-rollouts/metricproviders/datadog" diff --git a/metricproviders/newrelic/mock_test.go b/metricproviders/newrelic/mock_test.go index e9d0b2f3ee..0aad3208fc 100644 --- a/metricproviders/newrelic/mock_test.go +++ b/metricproviders/newrelic/mock_test.go @@ -3,8 +3,9 @@ package newrelic import ( "reflect" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/newrelic/newrelic-client-go/v2/pkg/nrdb" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) type mockAPI struct { diff --git a/metricproviders/plugin/client/client.go b/metricproviders/plugin/client/client.go index d37e949d8e..b661073e1e 100644 --- a/metricproviders/plugin/client/client.go +++ b/metricproviders/plugin/client/client.go @@ -5,11 +5,12 @@ import ( "os/exec" "sync" + goPlugin "github.com/hashicorp/go-plugin" + "github.com/argoproj/argo-rollouts/metricproviders/plugin/rpc" "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/utils/plugin" "github.com/argoproj/argo-rollouts/utils/plugin/types" - goPlugin "github.com/hashicorp/go-plugin" ) type metricPlugin struct { diff --git a/metricproviders/plugin/rpc/rpc.go b/metricproviders/plugin/rpc/rpc.go index a709693976..d4331c7096 100644 --- a/metricproviders/plugin/rpc/rpc.go +++ b/metricproviders/plugin/rpc/rpc.go @@ -7,9 +7,10 @@ import ( "github.com/argoproj/argo-rollouts/utils/plugin/types" + "github.com/hashicorp/go-plugin" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" metricutil "github.com/argoproj/argo-rollouts/utils/metric" - "github.com/hashicorp/go-plugin" ) type RunArgs struct { diff --git a/metricproviders/plugin/rpc/rpc_test.go b/metricproviders/plugin/rpc/rpc_test.go index ad351149c3..fbcb6b37c1 100644 --- a/metricproviders/plugin/rpc/rpc_test.go +++ b/metricproviders/plugin/rpc/rpc_test.go @@ -7,9 +7,10 @@ import ( "github.com/argoproj/argo-rollouts/utils/plugin/types" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" goPlugin "github.com/hashicorp/go-plugin" "github.com/tj/assert" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) var testHandshake = goPlugin.HandshakeConfig{ diff --git a/metricproviders/plugin/rpc/rpc_test_implementation.go b/metricproviders/plugin/rpc/rpc_test_implementation.go index 2dd18d6434..5ff6380f28 100644 --- a/metricproviders/plugin/rpc/rpc_test_implementation.go +++ b/metricproviders/plugin/rpc/rpc_test_implementation.go @@ -6,10 +6,11 @@ import ( "github.com/argoproj/argo-rollouts/utils/plugin/types" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" metricutil "github.com/argoproj/argo-rollouts/utils/metric" timeutil "github.com/argoproj/argo-rollouts/utils/time" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) type testRpcPlugin struct{} diff --git a/metricproviders/prometheus/headers_round_tripper_test.go b/metricproviders/prometheus/headers_round_tripper_test.go index a9983747a1..1725e050da 100644 --- a/metricproviders/prometheus/headers_round_tripper_test.go +++ b/metricproviders/prometheus/headers_round_tripper_test.go @@ -8,9 +8,10 @@ import ( "net/url" "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/prometheus/client_golang/api" "github.com/stretchr/testify/assert" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) type testHttpHeaderRoundTripper struct { diff --git a/metricproviders/prometheus/prometheus_test.go b/metricproviders/prometheus/prometheus_test.go index c889f2c4cc..519de88759 100644 --- a/metricproviders/prometheus/prometheus_test.go +++ b/metricproviders/prometheus/prometheus_test.go @@ -10,12 +10,13 @@ import ( "testing" "time" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" v1 "github.com/prometheus/client_golang/api/prometheus/v1" "github.com/prometheus/common/model" log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) const ( diff --git a/metricproviders/wavefront/wavefront_test.go b/metricproviders/wavefront/wavefront_test.go index af8bd53e7f..49f86448e2 100644 --- a/metricproviders/wavefront/wavefront_test.go +++ b/metricproviders/wavefront/wavefront_test.go @@ -4,7 +4,6 @@ import ( "fmt" "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" log "github.com/sirupsen/logrus" wavefrontapi "github.com/spaceapegames/go-wavefront" "github.com/stretchr/testify/assert" @@ -13,6 +12,8 @@ import ( "k8s.io/apimachinery/pkg/runtime" k8sfake "k8s.io/client-go/kubernetes/fake" kubetesting "k8s.io/client-go/testing" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) func newAnalysisRun() *v1alpha1.AnalysisRun { diff --git a/metricproviders/webmetric/webmetric_test.go b/metricproviders/webmetric/webmetric_test.go index 1f8556a0eb..69e867d6fc 100644 --- a/metricproviders/webmetric/webmetric_test.go +++ b/metricproviders/webmetric/webmetric_test.go @@ -10,9 +10,10 @@ import ( "strings" "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) const ( diff --git a/pkg/kubectl-argo-rollouts/cmd/cmd.go b/pkg/kubectl-argo-rollouts/cmd/cmd.go index 372f8c434d..24610550cd 100644 --- a/pkg/kubectl-argo-rollouts/cmd/cmd.go +++ b/pkg/kubectl-argo-rollouts/cmd/cmd.go @@ -1,6 +1,8 @@ package cmd import ( + notificationcmd "github.com/argoproj/notifications-engine/pkg/cmd" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/cmd/abort" "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/cmd/completion" @@ -20,7 +22,6 @@ import ( "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/cmd/version" "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" "github.com/argoproj/argo-rollouts/utils/record" - notificationcmd "github.com/argoproj/notifications-engine/pkg/cmd" "github.com/spf13/cobra" ) diff --git a/pkg/kubectl-argo-rollouts/cmd/completion/completion.go b/pkg/kubectl-argo-rollouts/cmd/completion/completion.go index bc045f07b8..4f51ee45fe 100644 --- a/pkg/kubectl-argo-rollouts/cmd/completion/completion.go +++ b/pkg/kubectl-argo-rollouts/cmd/completion/completion.go @@ -1,8 +1,9 @@ package completion import ( - "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" "github.com/spf13/cobra" + + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" ) func NewCmdCompletion(o *options.ArgoRolloutsOptions) *cobra.Command { diff --git a/pkg/kubectl-argo-rollouts/cmd/completion/completion_test.go b/pkg/kubectl-argo-rollouts/cmd/completion/completion_test.go index 64bd376c40..7e62fd603d 100644 --- a/pkg/kubectl-argo-rollouts/cmd/completion/completion_test.go +++ b/pkg/kubectl-argo-rollouts/cmd/completion/completion_test.go @@ -4,8 +4,9 @@ import ( "bytes" "testing" - options "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options/fake" "github.com/tj/assert" + + options "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options/fake" ) func TestShellNotFound(t *testing.T) { diff --git a/pkg/kubectl-argo-rollouts/cmd/create/create_test.go b/pkg/kubectl-argo-rollouts/cmd/create/create_test.go index b4cf5bb16e..e920067a30 100644 --- a/pkg/kubectl-argo-rollouts/cmd/create/create_test.go +++ b/pkg/kubectl-argo-rollouts/cmd/create/create_test.go @@ -11,9 +11,10 @@ import ( "k8s.io/apimachinery/pkg/runtime" core "k8s.io/client-go/testing" + dynamicfake "k8s.io/client-go/dynamic/fake" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" options "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options/fake" - dynamicfake "k8s.io/client-go/dynamic/fake" ) func TestCreateRollout(t *testing.T) { diff --git a/pkg/kubectl-argo-rollouts/cmd/dashboard/dashboard.go b/pkg/kubectl-argo-rollouts/cmd/dashboard/dashboard.go index 468d0437c6..f431a479ba 100644 --- a/pkg/kubectl-argo-rollouts/cmd/dashboard/dashboard.go +++ b/pkg/kubectl-argo-rollouts/cmd/dashboard/dashboard.go @@ -3,9 +3,10 @@ package dashboard import ( "context" + "github.com/spf13/cobra" + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" "github.com/argoproj/argo-rollouts/server" - "github.com/spf13/cobra" ) var ( diff --git a/pkg/kubectl-argo-rollouts/cmd/lint/lint.go b/pkg/kubectl-argo-rollouts/cmd/lint/lint.go index 4d8a268994..8043dd848e 100644 --- a/pkg/kubectl-argo-rollouts/cmd/lint/lint.go +++ b/pkg/kubectl-argo-rollouts/cmd/lint/lint.go @@ -6,11 +6,6 @@ import ( "io" "os" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/validation" - "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" - ingressutil "github.com/argoproj/argo-rollouts/utils/ingress" "github.com/spf13/cobra" goyaml "gopkg.in/yaml.v2" v1 "k8s.io/api/core/v1" @@ -19,6 +14,12 @@ import ( "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/util/validation/field" "sigs.k8s.io/yaml" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/validation" + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" + ingressutil "github.com/argoproj/argo-rollouts/utils/ingress" ) type LintOptions struct { diff --git a/pkg/kubectl-argo-rollouts/cmd/lint/lint_test.go b/pkg/kubectl-argo-rollouts/cmd/lint/lint_test.go index 6f6d86a610..d5f532d6de 100644 --- a/pkg/kubectl-argo-rollouts/cmd/lint/lint_test.go +++ b/pkg/kubectl-argo-rollouts/cmd/lint/lint_test.go @@ -4,8 +4,9 @@ import ( "bytes" "testing" - options "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options/fake" "github.com/stretchr/testify/assert" + + options "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options/fake" ) func TestLintValidRollout(t *testing.T) { diff --git a/pkg/kubectl-argo-rollouts/cmd/status/status.go b/pkg/kubectl-argo-rollouts/cmd/status/status.go index 33d6652900..4d5841394c 100644 --- a/pkg/kubectl-argo-rollouts/cmd/status/status.go +++ b/pkg/kubectl-argo-rollouts/cmd/status/status.go @@ -5,12 +5,13 @@ import ( "fmt" "time" + "github.com/spf13/cobra" + "github.com/argoproj/argo-rollouts/pkg/apiclient/rollout" "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/cmd/signals" "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" completionutil "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/util/completion" "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/viewcontroller" - "github.com/spf13/cobra" ) const ( diff --git a/pkg/kubectl-argo-rollouts/cmd/status/status_test.go b/pkg/kubectl-argo-rollouts/cmd/status/status_test.go index ddbee9b24e..20e4b91078 100644 --- a/pkg/kubectl-argo-rollouts/cmd/status/status_test.go +++ b/pkg/kubectl-argo-rollouts/cmd/status/status_test.go @@ -4,9 +4,10 @@ import ( "bytes" "testing" + "github.com/stretchr/testify/assert" + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/info/testdata" options "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options/fake" - "github.com/stretchr/testify/assert" ) const noWatch = "--watch=false" diff --git a/pkg/kubectl-argo-rollouts/cmd/undo/undo.go b/pkg/kubectl-argo-rollouts/cmd/undo/undo.go index 1f3fb186b1..4c74235edd 100644 --- a/pkg/kubectl-argo-rollouts/cmd/undo/undo.go +++ b/pkg/kubectl-argo-rollouts/cmd/undo/undo.go @@ -15,14 +15,15 @@ import ( "k8s.io/client-go/dynamic" "k8s.io/client-go/kubernetes" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" - completionutil "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/util/completion" - routils "github.com/argoproj/argo-rollouts/utils/unstructured" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" apiequality "k8s.io/apimachinery/pkg/api/equality" appsclient "k8s.io/client-go/kubernetes/typed/apps/v1" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" + completionutil "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/util/completion" + routils "github.com/argoproj/argo-rollouts/utils/unstructured" ) const ( diff --git a/pkg/kubectl-argo-rollouts/cmd/undo/undo_test.go b/pkg/kubectl-argo-rollouts/cmd/undo/undo_test.go index da9099d5de..1eeff66014 100644 --- a/pkg/kubectl-argo-rollouts/cmd/undo/undo_test.go +++ b/pkg/kubectl-argo-rollouts/cmd/undo/undo_test.go @@ -7,7 +7,6 @@ import ( "fmt" "testing" - "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/info/testdata" "github.com/stretchr/testify/assert" v1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -16,6 +15,8 @@ import ( dynamicfake "k8s.io/client-go/dynamic/fake" kubetesting "k8s.io/client-go/testing" + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/info/testdata" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" options "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options/fake" ) diff --git a/pkg/kubectl-argo-rollouts/info/pod_info.go b/pkg/kubectl-argo-rollouts/info/pod_info.go index 463657d70d..88ce420de0 100644 --- a/pkg/kubectl-argo-rollouts/info/pod_info.go +++ b/pkg/kubectl-argo-rollouts/info/pod_info.go @@ -5,11 +5,12 @@ import ( "sort" "strings" - "github.com/argoproj/argo-rollouts/pkg/apiclient/rollout" corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" k8snode "k8s.io/kubernetes/pkg/util/node" + + "github.com/argoproj/argo-rollouts/pkg/apiclient/rollout" ) func addPodInfos(rsInfos []*rollout.ReplicaSetInfo, allPods []*corev1.Pod) []*rollout.ReplicaSetInfo { diff --git a/pkg/kubectl-argo-rollouts/viewcontroller/viewcontroller_test.go b/pkg/kubectl-argo-rollouts/viewcontroller/viewcontroller_test.go index 7e1dd9c30e..21976b5581 100644 --- a/pkg/kubectl-argo-rollouts/viewcontroller/viewcontroller_test.go +++ b/pkg/kubectl-argo-rollouts/viewcontroller/viewcontroller_test.go @@ -6,13 +6,14 @@ import ( "testing" "time" - "github.com/argoproj/argo-rollouts/pkg/apiclient/rollout" - rolloutsfake "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" "github.com/stretchr/testify/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" k8sfake "k8s.io/client-go/kubernetes/fake" + "github.com/argoproj/argo-rollouts/pkg/apiclient/rollout" + rolloutsfake "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" + v1alpha1 "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) diff --git a/rollout/context.go b/rollout/context.go index 75949da4e3..25f5f99fcc 100644 --- a/rollout/context.go +++ b/rollout/context.go @@ -1,10 +1,11 @@ package rollout import ( - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - analysisutil "github.com/argoproj/argo-rollouts/utils/analysis" log "github.com/sirupsen/logrus" appsv1 "k8s.io/api/apps/v1" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + analysisutil "github.com/argoproj/argo-rollouts/utils/analysis" ) type rolloutContext struct { diff --git a/rollout/controller.go b/rollout/controller.go index 7e94d7f789..6b85f43acb 100644 --- a/rollout/controller.go +++ b/rollout/controller.go @@ -11,7 +11,6 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts" smiclientset "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/split/clientset/versioned" log "github.com/sirupsen/logrus" appsv1 "k8s.io/api/apps/v1" @@ -35,6 +34,8 @@ import ( "k8s.io/kubernetes/pkg/controller" "k8s.io/utils/pointer" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts" + "github.com/argoproj/argo-rollouts/controller/metrics" register "github.com/argoproj/argo-rollouts/pkg/apis/rollouts" "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" diff --git a/rollout/scale_utils_test.go b/rollout/scale_utils_test.go index 0127cfab69..6749761821 100644 --- a/rollout/scale_utils_test.go +++ b/rollout/scale_utils_test.go @@ -5,16 +5,17 @@ import ( "fmt" "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" - logutil "github.com/argoproj/argo-rollouts/utils/log" - "github.com/argoproj/argo-rollouts/utils/record" "github.com/stretchr/testify/assert" appsv1 "k8s.io/api/apps/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" k8sfake "k8s.io/client-go/kubernetes/fake" k8stesting "k8s.io/client-go/testing" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" + logutil "github.com/argoproj/argo-rollouts/utils/log" + "github.com/argoproj/argo-rollouts/utils/record" ) type DeploymentActions interface { diff --git a/rollout/service.go b/rollout/service.go index 0ed9ffbb4b..91bbd39566 100644 --- a/rollout/service.go +++ b/rollout/service.go @@ -4,6 +4,12 @@ import ( "context" "fmt" + appsv1 "k8s.io/api/apps/v1" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + patchtypes "k8s.io/apimachinery/pkg/types" + "k8s.io/utils/pointer" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/rollout/trafficrouting" "github.com/argoproj/argo-rollouts/utils/annotations" @@ -15,11 +21,6 @@ import ( replicasetutil "github.com/argoproj/argo-rollouts/utils/replicaset" rolloututils "github.com/argoproj/argo-rollouts/utils/rollout" serviceutil "github.com/argoproj/argo-rollouts/utils/service" - appsv1 "k8s.io/api/apps/v1" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - patchtypes "k8s.io/apimachinery/pkg/types" - "k8s.io/utils/pointer" ) const ( diff --git a/rollout/stepplugin.go b/rollout/stepplugin.go index eb777f6c70..ef4e1da17a 100644 --- a/rollout/stepplugin.go +++ b/rollout/stepplugin.go @@ -4,13 +4,14 @@ import ( "fmt" "time" + log "github.com/sirupsen/logrus" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/rollout/steps/plugin" "github.com/argoproj/argo-rollouts/utils/conditions" "github.com/argoproj/argo-rollouts/utils/record" replicasetutil "github.com/argoproj/argo-rollouts/utils/replicaset" rolloututil "github.com/argoproj/argo-rollouts/utils/rollout" - log "github.com/sirupsen/logrus" ) var ( diff --git a/rollout/stepplugin_test.go b/rollout/stepplugin_test.go index b3959b05e1..da59296c5a 100644 --- a/rollout/stepplugin_test.go +++ b/rollout/stepplugin_test.go @@ -6,16 +6,17 @@ import ( "testing" "time" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/rollout/steps/plugin/mocks" - logutil "github.com/argoproj/argo-rollouts/utils/log" - "github.com/argoproj/argo-rollouts/utils/record" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/utils/ptr" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/steps/plugin/mocks" + logutil "github.com/argoproj/argo-rollouts/utils/log" + "github.com/argoproj/argo-rollouts/utils/record" ) func newStepPluginRollout() *v1alpha1.Rollout { diff --git a/rollout/steps/plugin/client/client.go b/rollout/steps/plugin/client/client.go index 584f9bbd19..51de61d227 100644 --- a/rollout/steps/plugin/client/client.go +++ b/rollout/steps/plugin/client/client.go @@ -5,10 +5,11 @@ import ( "os/exec" "sync" + goPlugin "github.com/hashicorp/go-plugin" + "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" "github.com/argoproj/argo-rollouts/utils/plugin" "github.com/argoproj/argo-rollouts/utils/plugin/types" - goPlugin "github.com/hashicorp/go-plugin" ) type stepPlugin struct { diff --git a/rollout/steps/plugin/plugin.go b/rollout/steps/plugin/plugin.go index dd9ebe04ad..083d398318 100644 --- a/rollout/steps/plugin/plugin.go +++ b/rollout/steps/plugin/plugin.go @@ -5,11 +5,12 @@ import ( "fmt" "time" + log "github.com/sirupsen/logrus" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" "github.com/argoproj/argo-rollouts/utils/plugin/types" metatime "github.com/argoproj/argo-rollouts/utils/time" - log "github.com/sirupsen/logrus" ) type stepPlugin struct { diff --git a/rollout/steps/plugin/plugin_test.go b/rollout/steps/plugin/plugin_test.go index dc041fa015..68ca508882 100644 --- a/rollout/steps/plugin/plugin_test.go +++ b/rollout/steps/plugin/plugin_test.go @@ -7,13 +7,14 @@ import ( log "github.com/sirupsen/logrus" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc/mocks" - "github.com/argoproj/argo-rollouts/utils/plugin/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc/mocks" + "github.com/argoproj/argo-rollouts/utils/plugin/types" ) func Test_stepPlugin_Run(t *testing.T) { diff --git a/rollout/steps/plugin/resolver.go b/rollout/steps/plugin/resolver.go index f2233526ec..8a1393ab57 100644 --- a/rollout/steps/plugin/resolver.go +++ b/rollout/steps/plugin/resolver.go @@ -3,12 +3,13 @@ package plugin import ( "fmt" + "github.com/sirupsen/logrus" + log "github.com/sirupsen/logrus" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/rollout/steps/plugin/client" "github.com/argoproj/argo-rollouts/utils/config" "github.com/argoproj/argo-rollouts/utils/plugin/types" - "github.com/sirupsen/logrus" - log "github.com/sirupsen/logrus" ) type resolver struct { diff --git a/rollout/steps/plugin/rpc/rpc.go b/rollout/steps/plugin/rpc/rpc.go index f460361f39..86483b7f64 100644 --- a/rollout/steps/plugin/rpc/rpc.go +++ b/rollout/steps/plugin/rpc/rpc.go @@ -7,8 +7,9 @@ import ( "github.com/argoproj/argo-rollouts/utils/plugin/types" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/hashicorp/go-plugin" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) type RunArgs struct { diff --git a/rollout/steps/plugin/rpc/rpc_test.go b/rollout/steps/plugin/rpc/rpc_test.go index b5bac5e3f6..211aefd04d 100644 --- a/rollout/steps/plugin/rpc/rpc_test.go +++ b/rollout/steps/plugin/rpc/rpc_test.go @@ -7,9 +7,10 @@ import ( "github.com/argoproj/argo-rollouts/utils/plugin/types" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" goPlugin "github.com/hashicorp/go-plugin" "github.com/tj/assert" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) var testHandshake = goPlugin.HandshakeConfig{ diff --git a/rollout/trafficrouting/alb/alb.go b/rollout/trafficrouting/alb/alb.go index 5bda94d712..f06c7ea452 100644 --- a/rollout/trafficrouting/alb/alb.go +++ b/rollout/trafficrouting/alb/alb.go @@ -15,6 +15,8 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/utils/pointer" + elbv2types "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2/types" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/rollout/trafficrouting" "github.com/argoproj/argo-rollouts/utils/aws" @@ -24,7 +26,6 @@ import ( jsonutil "github.com/argoproj/argo-rollouts/utils/json" logutil "github.com/argoproj/argo-rollouts/utils/log" "github.com/argoproj/argo-rollouts/utils/record" - elbv2types "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2/types" ) const ( diff --git a/rollout/trafficrouting/apisix/apisix.go b/rollout/trafficrouting/apisix/apisix.go index 6269cc698e..fe121140b8 100644 --- a/rollout/trafficrouting/apisix/apisix.go +++ b/rollout/trafficrouting/apisix/apisix.go @@ -5,13 +5,14 @@ import ( "fmt" "time" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/utils/record" "github.com/pkg/errors" corev1 "k8s.io/api/core/v1" k8serrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/utils/record" ) var controllerKind = v1alpha1.SchemeGroupVersion.WithKind("Rollout") diff --git a/rollout/trafficrouting/apisix/apisix_test.go b/rollout/trafficrouting/apisix/apisix_test.go index 3749e64d6d..0abde5e9db 100644 --- a/rollout/trafficrouting/apisix/apisix_test.go +++ b/rollout/trafficrouting/apisix/apisix_test.go @@ -5,12 +5,13 @@ import ( "fmt" "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/rollout/trafficrouting/apisix/mocks" "github.com/stretchr/testify/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/serializer/yaml" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/trafficrouting/apisix/mocks" ) const SetHeaderRouteName = "set-header" diff --git a/rollout/trafficrouting/apisix/mocks/apisix.go b/rollout/trafficrouting/apisix/mocks/apisix.go index 2bba83c499..6c7a69e104 100644 --- a/rollout/trafficrouting/apisix/mocks/apisix.go +++ b/rollout/trafficrouting/apisix/mocks/apisix.go @@ -7,7 +7,6 @@ import ( k8serrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/runtime" - argoRecord "github.com/argoproj/argo-rollouts/utils/record" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" @@ -15,6 +14,8 @@ import ( "k8s.io/apimachinery/pkg/watch" "k8s.io/client-go/dynamic" "k8s.io/client-go/tools/record" + + argoRecord "github.com/argoproj/argo-rollouts/utils/record" ) type FakeDynamicClient struct { diff --git a/rollout/trafficrouting/appmesh/resource_client.go b/rollout/trafficrouting/appmesh/resource_client.go index 4dbc4bd8cc..653dd4c76f 100644 --- a/rollout/trafficrouting/appmesh/resource_client.go +++ b/rollout/trafficrouting/appmesh/resource_client.go @@ -4,10 +4,11 @@ import ( "context" "errors" - appmeshutil "github.com/argoproj/argo-rollouts/utils/appmesh" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/client-go/dynamic" + + appmeshutil "github.com/argoproj/argo-rollouts/utils/appmesh" ) type ResourceClient struct { diff --git a/rollout/trafficrouting/istio/istio.go b/rollout/trafficrouting/istio/istio.go index 040960c7fd..9fd9402c09 100644 --- a/rollout/trafficrouting/istio/istio.go +++ b/rollout/trafficrouting/istio/istio.go @@ -6,10 +6,11 @@ import ( "fmt" "strings" - replicasetutil "github.com/argoproj/argo-rollouts/utils/replicaset" "github.com/mitchellh/mapstructure" appsv1 "k8s.io/api/apps/v1" + replicasetutil "github.com/argoproj/argo-rollouts/utils/replicaset" + "github.com/argoproj/argo-rollouts/rollout/trafficrouting" jsonpatch "github.com/evanphx/json-patch/v5" diff --git a/rollout/trafficrouting/istio/istio_types.go b/rollout/trafficrouting/istio/istio_types.go index 9544efc49e..aa58aff6ec 100644 --- a/rollout/trafficrouting/istio/istio_types.go +++ b/rollout/trafficrouting/istio/istio_types.go @@ -1,8 +1,9 @@ package istio import ( - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) // VirtualService is an Istio VirtualService containing only the fields which we care about diff --git a/rollout/trafficrouting/plugin/client/client.go b/rollout/trafficrouting/plugin/client/client.go index 05ec1bc169..d1e6fc3731 100644 --- a/rollout/trafficrouting/plugin/client/client.go +++ b/rollout/trafficrouting/plugin/client/client.go @@ -5,10 +5,11 @@ import ( "os/exec" "sync" + goPlugin "github.com/hashicorp/go-plugin" + "github.com/argoproj/argo-rollouts/rollout/trafficrouting/plugin/rpc" "github.com/argoproj/argo-rollouts/utils/plugin" "github.com/argoproj/argo-rollouts/utils/plugin/types" - goPlugin "github.com/hashicorp/go-plugin" ) type trafficPlugin struct { diff --git a/rollout/trafficrouting/plugin/plugin.go b/rollout/trafficrouting/plugin/plugin.go index 7ded9ad2f1..e9ca2bc09f 100644 --- a/rollout/trafficrouting/plugin/plugin.go +++ b/rollout/trafficrouting/plugin/plugin.go @@ -3,11 +3,12 @@ package plugin import ( "fmt" + "k8s.io/client-go/kubernetes" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/rollout/trafficrouting/plugin/client" "github.com/argoproj/argo-rollouts/rollout/trafficrouting/plugin/rpc" "github.com/argoproj/argo-rollouts/utils/record" - "k8s.io/client-go/kubernetes" ) type ReconcilerConfig struct { diff --git a/rollout/trafficrouting/plugin/rpc/rpc.go b/rollout/trafficrouting/plugin/rpc/rpc.go index 297ff9d21b..ba61cc9e46 100644 --- a/rollout/trafficrouting/plugin/rpc/rpc.go +++ b/rollout/trafficrouting/plugin/rpc/rpc.go @@ -7,8 +7,9 @@ import ( "github.com/argoproj/argo-rollouts/utils/plugin/types" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/hashicorp/go-plugin" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) type UpdateHashArgs struct { diff --git a/rollout/trafficrouting/plugin/rpc/rpc_test.go b/rollout/trafficrouting/plugin/rpc/rpc_test.go index 5ca189e186..3de031a689 100644 --- a/rollout/trafficrouting/plugin/rpc/rpc_test.go +++ b/rollout/trafficrouting/plugin/rpc/rpc_test.go @@ -7,9 +7,10 @@ import ( "github.com/argoproj/argo-rollouts/utils/plugin/types" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" goPlugin "github.com/hashicorp/go-plugin" "github.com/tj/assert" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) var testHandshake = goPlugin.HandshakeConfig{ diff --git a/rollout/trafficrouting/service_helper_test.go b/rollout/trafficrouting/service_helper_test.go index cc0634eb6f..acb63673a4 100644 --- a/rollout/trafficrouting/service_helper_test.go +++ b/rollout/trafficrouting/service_helper_test.go @@ -3,9 +3,10 @@ package trafficrouting import ( "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/stretchr/testify/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) const PING_SVC = "ping-service" diff --git a/rollout/trafficrouting/traefik/mocks/traefik.go b/rollout/trafficrouting/traefik/mocks/traefik.go index b0cd361809..e53295c1b2 100644 --- a/rollout/trafficrouting/traefik/mocks/traefik.go +++ b/rollout/trafficrouting/traefik/mocks/traefik.go @@ -6,7 +6,6 @@ import ( "github.com/pkg/errors" "k8s.io/apimachinery/pkg/runtime" - argoRecord "github.com/argoproj/argo-rollouts/utils/record" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" @@ -14,6 +13,8 @@ import ( "k8s.io/apimachinery/pkg/watch" "k8s.io/client-go/dynamic" "k8s.io/client-go/tools/record" + + argoRecord "github.com/argoproj/argo-rollouts/utils/record" ) type FakeDynamicClient struct{} diff --git a/rollout/trafficrouting/traefik/traefik_test.go b/rollout/trafficrouting/traefik/traefik_test.go index 0b5b0c9701..2fccaf9a9f 100644 --- a/rollout/trafficrouting/traefik/traefik_test.go +++ b/rollout/trafficrouting/traefik/traefik_test.go @@ -3,12 +3,13 @@ package traefik import ( "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/rollout/trafficrouting/traefik/mocks" "github.com/stretchr/testify/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/serializer/yaml" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/trafficrouting/traefik/mocks" ) const traefikService = ` diff --git a/service/service_test.go b/service/service_test.go index 35722443ac..d8233a567e 100644 --- a/service/service_test.go +++ b/service/service_test.go @@ -16,11 +16,12 @@ import ( k8stesting "k8s.io/client-go/testing" "k8s.io/client-go/util/workqueue" + "k8s.io/client-go/tools/cache" + "github.com/argoproj/argo-rollouts/controller/metrics" "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" informers "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions" - "k8s.io/client-go/tools/cache" ) func newService(name string, port int, selector map[string]string) *corev1.Service { diff --git a/test/cmd/metrics-plugin-sample/internal/plugin/plugin.go b/test/cmd/metrics-plugin-sample/internal/plugin/plugin.go index 69d3763469..9cf3db3381 100644 --- a/test/cmd/metrics-plugin-sample/internal/plugin/plugin.go +++ b/test/cmd/metrics-plugin-sample/internal/plugin/plugin.go @@ -13,15 +13,16 @@ import ( "github.com/argoproj/argo-rollouts/utils/plugin/types" + "github.com/prometheus/client_golang/api" + v1 "github.com/prometheus/client_golang/api/prometheus/v1" + "github.com/prometheus/common/model" + log "github.com/sirupsen/logrus" + "github.com/argoproj/argo-rollouts/metricproviders/plugin" "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/utils/evaluate" metricutil "github.com/argoproj/argo-rollouts/utils/metric" timeutil "github.com/argoproj/argo-rollouts/utils/time" - "github.com/prometheus/client_golang/api" - v1 "github.com/prometheus/client_golang/api/prometheus/v1" - "github.com/prometheus/common/model" - log "github.com/sirupsen/logrus" ) const EnvVarArgoRolloutsPrometheusAddress string = "ARGO_ROLLOUTS_PROMETHEUS_ADDRESS" diff --git a/test/cmd/metrics-plugin-sample/main.go b/test/cmd/metrics-plugin-sample/main.go index fdd01e6ba3..e84b40f36d 100644 --- a/test/cmd/metrics-plugin-sample/main.go +++ b/test/cmd/metrics-plugin-sample/main.go @@ -1,10 +1,11 @@ package main import ( - "github.com/argoproj/argo-rollouts/metricproviders/plugin/rpc" - "github.com/argoproj/argo-rollouts/test/cmd/metrics-plugin-sample/internal/plugin" goPlugin "github.com/hashicorp/go-plugin" log "github.com/sirupsen/logrus" + + "github.com/argoproj/argo-rollouts/metricproviders/plugin/rpc" + "github.com/argoproj/argo-rollouts/test/cmd/metrics-plugin-sample/internal/plugin" ) // handshakeConfigs are used to just do a basic handshake between diff --git a/test/cmd/step-plugin-e2e/internal/plugin/plugin.go b/test/cmd/step-plugin-e2e/internal/plugin/plugin.go index f46d9bfa78..8bb2aa4a7b 100644 --- a/test/cmd/step-plugin-e2e/internal/plugin/plugin.go +++ b/test/cmd/step-plugin-e2e/internal/plugin/plugin.go @@ -5,11 +5,12 @@ import ( "fmt" "time" + "github.com/google/uuid" + log "github.com/sirupsen/logrus" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" "github.com/argoproj/argo-rollouts/utils/plugin/types" - "github.com/google/uuid" - log "github.com/sirupsen/logrus" ) type Config struct { diff --git a/test/cmd/step-plugin-e2e/main.go b/test/cmd/step-plugin-e2e/main.go index 995b0fe690..54f97bd862 100644 --- a/test/cmd/step-plugin-e2e/main.go +++ b/test/cmd/step-plugin-e2e/main.go @@ -3,10 +3,11 @@ package main import ( "strings" - rolloutsPlugin "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" - "github.com/argoproj/argo-rollouts/test/cmd/step-plugin-e2e/internal/plugin" goPlugin "github.com/hashicorp/go-plugin" log "github.com/sirupsen/logrus" + + rolloutsPlugin "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" + "github.com/argoproj/argo-rollouts/test/cmd/step-plugin-e2e/internal/plugin" ) var handshakeConfig = goPlugin.HandshakeConfig{ diff --git a/test/cmd/step-plugin-sample/internal/plugin/plugin.go b/test/cmd/step-plugin-sample/internal/plugin/plugin.go index de2341dfd1..27ab9bcc5e 100644 --- a/test/cmd/step-plugin-sample/internal/plugin/plugin.go +++ b/test/cmd/step-plugin-sample/internal/plugin/plugin.go @@ -8,11 +8,12 @@ import ( "sync" "time" + "github.com/google/uuid" + log "github.com/sirupsen/logrus" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" "github.com/argoproj/argo-rollouts/utils/plugin/types" - "github.com/google/uuid" - log "github.com/sirupsen/logrus" ) type Config struct { diff --git a/test/cmd/step-plugin-sample/internal/plugin/plugin_test.go b/test/cmd/step-plugin-sample/internal/plugin/plugin_test.go index 97897217c0..40f3fe0252 100644 --- a/test/cmd/step-plugin-sample/internal/plugin/plugin_test.go +++ b/test/cmd/step-plugin-sample/internal/plugin/plugin_test.go @@ -5,12 +5,13 @@ import ( "sync" "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/utils/plugin/types" log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "k8s.io/utils/ptr" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/utils/plugin/types" ) func new(logCtx *log.Entry, seed int64) *rpcPlugin { diff --git a/test/cmd/step-plugin-sample/main.go b/test/cmd/step-plugin-sample/main.go index f70d4d25eb..74d8a4550d 100644 --- a/test/cmd/step-plugin-sample/main.go +++ b/test/cmd/step-plugin-sample/main.go @@ -6,10 +6,11 @@ import ( "strings" "time" - rolloutsPlugin "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" - "github.com/argoproj/argo-rollouts/test/cmd/step-plugin-sample/internal/plugin" goPlugin "github.com/hashicorp/go-plugin" log "github.com/sirupsen/logrus" + + rolloutsPlugin "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" + "github.com/argoproj/argo-rollouts/test/cmd/step-plugin-sample/internal/plugin" ) // handshakeConfigs are used to just do a basic handshake between diff --git a/test/cmd/step-plugin-sample/main_test.go b/test/cmd/step-plugin-sample/main_test.go index 17bc5730b7..f7703b2042 100644 --- a/test/cmd/step-plugin-sample/main_test.go +++ b/test/cmd/step-plugin-sample/main_test.go @@ -5,15 +5,17 @@ import ( "testing" "time" + goPlugin "github.com/hashicorp/go-plugin" + log "github.com/sirupsen/logrus" + "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" rolloutsPlugin "github.com/argoproj/argo-rollouts/rollout/steps/plugin/rpc" "github.com/argoproj/argo-rollouts/test/cmd/step-plugin-sample/internal/plugin" "github.com/argoproj/argo-rollouts/utils/plugin/types" - goPlugin "github.com/hashicorp/go-plugin" - log "github.com/sirupsen/logrus" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/tj/assert" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" ) var testHandshake = goPlugin.HandshakeConfig{ diff --git a/test/cmd/trafficrouter-plugin-sample/internal/plugin/plugin.go b/test/cmd/trafficrouter-plugin-sample/internal/plugin/plugin.go index 0d18c5d069..c4fd9c8c07 100644 --- a/test/cmd/trafficrouter-plugin-sample/internal/plugin/plugin.go +++ b/test/cmd/trafficrouter-plugin-sample/internal/plugin/plugin.go @@ -8,11 +8,6 @@ import ( "strings" "time" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/rollout/trafficrouting/plugin/rpc" - "github.com/argoproj/argo-rollouts/utils/defaults" - ingressutil "github.com/argoproj/argo-rollouts/utils/ingress" - pluginTypes "github.com/argoproj/argo-rollouts/utils/plugin/types" "github.com/sirupsen/logrus" extensionsv1beta1 "k8s.io/api/extensions/v1beta1" networkingv1 "k8s.io/api/networking/v1" @@ -23,6 +18,12 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/clientcmd" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/rollout/trafficrouting/plugin/rpc" + "github.com/argoproj/argo-rollouts/utils/defaults" + ingressutil "github.com/argoproj/argo-rollouts/utils/ingress" + pluginTypes "github.com/argoproj/argo-rollouts/utils/plugin/types" ) var _ rpc.TrafficRouterPlugin = &RpcPlugin{} diff --git a/test/cmd/trafficrouter-plugin-sample/main.go b/test/cmd/trafficrouter-plugin-sample/main.go index 05122fbe0f..79743e6b3e 100644 --- a/test/cmd/trafficrouter-plugin-sample/main.go +++ b/test/cmd/trafficrouter-plugin-sample/main.go @@ -3,10 +3,11 @@ package main import ( "strings" - rolloutsPlugin "github.com/argoproj/argo-rollouts/rollout/trafficrouting/plugin/rpc" - "github.com/argoproj/argo-rollouts/test/cmd/trafficrouter-plugin-sample/internal/plugin" goPlugin "github.com/hashicorp/go-plugin" log "github.com/sirupsen/logrus" + + rolloutsPlugin "github.com/argoproj/argo-rollouts/rollout/trafficrouting/plugin/rpc" + "github.com/argoproj/argo-rollouts/test/cmd/trafficrouter-plugin-sample/internal/plugin" ) // handshakeConfigs are used to just do a basic handshake between diff --git a/test/fixtures/common.go b/test/fixtures/common.go index b5c5dae7b0..6b9cdf9733 100644 --- a/test/fixtures/common.go +++ b/test/fixtures/common.go @@ -12,9 +12,10 @@ import ( "text/tabwriter" "time" - a6util "github.com/argoproj/argo-rollouts/utils/apisix" k8errors "k8s.io/apimachinery/pkg/api/errors" + a6util "github.com/argoproj/argo-rollouts/utils/apisix" + smiv1alpha1 "github.com/servicemeshinterface/smi-sdk-go/pkg/apis/split/v1alpha1" smiclientset "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/split/clientset/versioned" "github.com/sirupsen/logrus" diff --git a/test/fixtures/then.go b/test/fixtures/then.go index d39e054d34..68a9d822c8 100644 --- a/test/fixtures/then.go +++ b/test/fixtures/then.go @@ -13,12 +13,13 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" + "github.com/stretchr/testify/assert" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" rov1 "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/utils/defaults" replicasetutil "github.com/argoproj/argo-rollouts/utils/replicaset" rolloututil "github.com/argoproj/argo-rollouts/utils/rollout" - "github.com/stretchr/testify/assert" ) type Then struct { diff --git a/utils/analysis/factory_test.go b/utils/analysis/factory_test.go index 65aa629f15..8873ce0f3f 100644 --- a/utils/analysis/factory_test.go +++ b/utils/analysis/factory_test.go @@ -4,8 +4,6 @@ import ( "fmt" "testing" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/utils/annotations" "github.com/stretchr/testify/assert" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -13,6 +11,9 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/utils/pointer" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/utils/annotations" ) func TestBuildArgumentsForRolloutAnalysisRun(t *testing.T) { diff --git a/utils/analysis/helpers.go b/utils/analysis/helpers.go index 42ded67315..142b6daeb1 100644 --- a/utils/analysis/helpers.go +++ b/utils/analysis/helpers.go @@ -7,7 +7,6 @@ import ( "fmt" "regexp" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" log "github.com/sirupsen/logrus" k8serrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -15,6 +14,8 @@ import ( "k8s.io/apimachinery/pkg/runtime" patchtypes "k8s.io/apimachinery/pkg/types" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + argoprojclient "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/typed/rollouts/v1alpha1" ) diff --git a/utils/apisix/apisix.go b/utils/apisix/apisix.go index 3f5984e022..010aaf60ba 100644 --- a/utils/apisix/apisix.go +++ b/utils/apisix/apisix.go @@ -4,10 +4,11 @@ import ( "context" "strings" - "github.com/argoproj/argo-rollouts/utils/defaults" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/dynamic" + + "github.com/argoproj/argo-rollouts/utils/defaults" ) const apisixRoutes = "apisixroutes" diff --git a/utils/appmesh/appmesh.go b/utils/appmesh/appmesh.go index 83e77572ff..19c9d2133b 100644 --- a/utils/appmesh/appmesh.go +++ b/utils/appmesh/appmesh.go @@ -3,10 +3,11 @@ package appmesh import ( "context" - "github.com/argoproj/argo-rollouts/utils/defaults" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/dynamic" + + "github.com/argoproj/argo-rollouts/utils/defaults" ) const AppMeshCRDGroup = "appmesh.k8s.aws" diff --git a/utils/aws/aws.go b/utils/aws/aws.go index 42b4907836..42685302fd 100644 --- a/utils/aws/aws.go +++ b/utils/aws/aws.go @@ -8,7 +8,6 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" - "github.com/argoproj/argo-rollouts/utils/defaults" "github.com/aws/aws-sdk-go-v2/config" elbv2 "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2" elbv2types "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2/types" @@ -18,6 +17,8 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/client-go/dynamic" + + "github.com/argoproj/argo-rollouts/utils/defaults" ) // AWSLoadBalancerV2TagKeyResourceID is the tag applied to an AWS resource by the AWS Load Balancer diff --git a/utils/config/config.go b/utils/config/config.go index 3eb9a1f86f..7b20520341 100644 --- a/utils/config/config.go +++ b/utils/config/config.go @@ -10,11 +10,12 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" - "github.com/argoproj/argo-rollouts/utils/defaults" - "github.com/argoproj/argo-rollouts/utils/plugin/types" v1 "k8s.io/api/core/v1" k8errors "k8s.io/apimachinery/pkg/api/errors" "sigs.k8s.io/yaml" + + "github.com/argoproj/argo-rollouts/utils/defaults" + "github.com/argoproj/argo-rollouts/utils/plugin/types" ) // Config is the in memory representation of the configmap with some additional fields/functions for ease of use. diff --git a/utils/controller/controller_test.go b/utils/controller/controller_test.go index 3761d05ba5..39f3c134b5 100644 --- a/utils/controller/controller_test.go +++ b/utils/controller/controller_test.go @@ -23,13 +23,14 @@ import ( kubetesting "k8s.io/client-go/testing" "k8s.io/client-go/util/workqueue" + "k8s.io/client-go/tools/cache" + "github.com/argoproj/argo-rollouts/controller/metrics" register "github.com/argoproj/argo-rollouts/pkg/apis/rollouts" "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" informers "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions" "github.com/argoproj/argo-rollouts/utils/log" - "k8s.io/client-go/tools/cache" ) func TestProcessNextWorkItemHandlePanic(t *testing.T) { diff --git a/utils/istio/istio_test.go b/utils/istio/istio_test.go index a4e5f5fe46..8e0d20d6d7 100644 --- a/utils/istio/istio_test.go +++ b/utils/istio/istio_test.go @@ -6,11 +6,12 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/utils/defaults" "github.com/stretchr/testify/assert" "k8s.io/apimachinery/pkg/runtime" dynamicfake "k8s.io/client-go/dynamic/fake" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/utils/defaults" ) func NewFakeDynamicClient(objects ...runtime.Object) *dynamicfake.FakeDynamicClient { diff --git a/utils/plugin/downloader.go b/utils/plugin/downloader.go index 15bf560e1c..17c7ba1bf7 100644 --- a/utils/plugin/downloader.go +++ b/utils/plugin/downloader.go @@ -11,10 +11,11 @@ import ( "path/filepath" "time" - argoConfig "github.com/argoproj/argo-rollouts/utils/config" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" + argoConfig "github.com/argoproj/argo-rollouts/utils/config" + "github.com/argoproj/argo-rollouts/utils/defaults" log "github.com/sirupsen/logrus" diff --git a/utils/plugin/downloader_test.go b/utils/plugin/downloader_test.go index 7c54f6b8ef..601e20dda4 100644 --- a/utils/plugin/downloader_test.go +++ b/utils/plugin/downloader_test.go @@ -10,11 +10,12 @@ import ( "github.com/argoproj/argo-rollouts/utils/config" - "github.com/argoproj/argo-rollouts/utils/defaults" "github.com/tj/assert" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" + + "github.com/argoproj/argo-rollouts/utils/defaults" ) type MockFileDownloader struct { diff --git a/utils/plugin/plugin_test.go b/utils/plugin/plugin_test.go index 0e5d994a6c..f380105a5b 100644 --- a/utils/plugin/plugin_test.go +++ b/utils/plugin/plugin_test.go @@ -7,11 +7,12 @@ import ( "github.com/argoproj/argo-rollouts/utils/defaults" "github.com/argoproj/argo-rollouts/utils/plugin/types" - "github.com/argoproj/argo-rollouts/utils/config" "github.com/stretchr/testify/assert" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" + + "github.com/argoproj/argo-rollouts/utils/config" ) func TestGetPluginInfo(t *testing.T) { diff --git a/utils/record/record.go b/utils/record/record.go index 96be7c8582..8180981213 100644 --- a/utils/record/record.go +++ b/utils/record/record.go @@ -12,8 +12,6 @@ import ( "sync" "time" - argoinformers "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions/rollouts/v1alpha1" - timeutil "github.com/argoproj/argo-rollouts/utils/time" "github.com/argoproj/notifications-engine/pkg/api" "github.com/argoproj/notifications-engine/pkg/services" "github.com/argoproj/notifications-engine/pkg/subscriptions" @@ -33,6 +31,9 @@ import ( "k8s.io/client-go/tools/record" "k8s.io/kubectl/pkg/scheme" + argoinformers "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions/rollouts/v1alpha1" + timeutil "github.com/argoproj/argo-rollouts/utils/time" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" rolloutscheme "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/scheme" "github.com/argoproj/argo-rollouts/utils/annotations" diff --git a/utils/record/record_test.go b/utils/record/record_test.go index dfea598eae..213fc456b1 100644 --- a/utils/record/record_test.go +++ b/utils/record/record_test.go @@ -9,12 +9,6 @@ import ( "testing" "time" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - argofake "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" - argoinformersfactory "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions" - argoinformers "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/utils/defaults" - timeutil "github.com/argoproj/argo-rollouts/utils/time" "github.com/argoproj/notifications-engine/pkg/api" notificationapi "github.com/argoproj/notifications-engine/pkg/api" "github.com/argoproj/notifications-engine/pkg/mocks" @@ -33,6 +27,13 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/informers" "k8s.io/client-go/kubernetes/fake" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + argofake "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" + argoinformersfactory "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions" + argoinformers "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/utils/defaults" + timeutil "github.com/argoproj/argo-rollouts/utils/time" ) var ( diff --git a/utils/rollout/rolloututil_test.go b/utils/rollout/rolloututil_test.go index f85a53faf6..d5a09423b5 100644 --- a/utils/rollout/rolloututil_test.go +++ b/utils/rollout/rolloututil_test.go @@ -5,12 +5,13 @@ import ( "testing" "time" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" - "github.com/argoproj/argo-rollouts/utils/annotations" "github.com/tj/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/utils/pointer" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/argoproj/argo-rollouts/utils/annotations" ) func newCanaryRollout() *v1alpha1.Rollout { diff --git a/utils/template/template_test.go b/utils/template/template_test.go index 8f493bcd58..84580c9c8a 100644 --- a/utils/template/template_test.go +++ b/utils/template/template_test.go @@ -5,11 +5,12 @@ import ( "testing" "time" - "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" appsv1 "k8s.io/api/apps/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/utils/pointer" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + "github.com/stretchr/testify/assert" ) From fb04f2e571fa5f4adcf84eb7c0dd7eb803621adc Mon Sep 17 00:00:00 2001 From: Yusuke Abe Date: Tue, 4 Mar 2025 07:29:01 +0900 Subject: [PATCH 217/219] fix(dashboard): Revert react-scripts upgrade due to performance regression. Fixes #4122 (#4166) fix(dashboard): revert `react-scripts`` upgrade to restore performance This reverts commit 2e7cf6932a0c5111967d6ba4b27716580985a34f. Signed-off-by: chansuke --- ui/package.json | 8 +- ui/src/app/webpack.common.js | 17 +- ui/yarn.lock | 10734 +++++++++++++++------------------ 3 files changed, 4812 insertions(+), 5947 deletions(-) diff --git a/ui/package.json b/ui/package.json index c06832be2e..0a631d3773 100644 --- a/ui/package.json +++ b/ui/package.json @@ -58,22 +58,22 @@ "@types/jest": "^29.5.10", "@types/node": "^12.0.0", "@types/react": "^16.9.3", - "@types/react-autocomplete": "^1.8.4", "@types/react-dom": "^16.9.3", - "@types/react-form": "^2.16.1", "@types/react-helmet": "^6.1.0", "@types/react-router-dom": "^5.1.7", + "@types/react-form": "^2.16.1", "@types/uuid": "^9.0.3", + "@types/react-autocomplete": "^1.8.4", "copy-webpack-plugin": "^6.3.2", "jest": "^29.7.0", "mini-css-extract-plugin": "^1.3.9", "raw-loader": "^4.0.2", - "react-scripts": "5.0.1", + "react-scripts": "4.0.3", "sass": "^1.32.8", "ts-jest": "^29.1.1", "ts-loader": "^8.0.17", "webpack-bundle-analyzer": "^4.4.0", - "webpack-cli": "^5.1.4", + "webpack-cli": "^4.5.0", "webpack-dev-server": "^3.11.2", "webpack-merge": "^5.7.3" }, diff --git a/ui/src/app/webpack.common.js b/ui/src/app/webpack.common.js index d24d20f508..72d6d908ad 100644 --- a/ui/src/app/webpack.common.js +++ b/ui/src/app/webpack.common.js @@ -1,8 +1,8 @@ 'use strict;'; -const crypto = require('crypto'); +const crypto = require("crypto"); const crypto_orig_createHash = crypto.createHash; -crypto.createHash = (algorithm) => crypto_orig_createHash(algorithm == 'md4' ? 'sha256' : algorithm); +crypto.createHash = algorithm => crypto_orig_createHash(algorithm == "md4" ? "sha256" : algorithm); const CopyWebpackPlugin = require('copy-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); @@ -30,24 +30,27 @@ const config = { rules: [ { test: /\.tsx?$/, - use: [`ts-loader?allowTsInNodeModules=true&configFile=${path.resolve('./tsconfig.json')}`], + loaders: [`ts-loader?allowTsInNodeModules=true&configFile=${path.resolve('./tsconfig.json')}`], }, { test: /\.scss$/, - use: ['style-loader', 'raw-loader', 'sass-loader'], + loader: 'style-loader!raw-loader!sass-loader', }, { test: /\.css$/, - use: ['style-loader', 'raw-loader'], + loader: 'style-loader!raw-loader', }, // https://github.com/fkhadra/react-toastify/issues/775#issuecomment-1149569290 { test: /\.mjs$/, include: /node_modules/, - type: 'javascript/auto', + type: "javascript/auto" }, ], }, + node: { + fs: 'empty', + }, plugins: [ new webpack.DefinePlugin({ SYSTEM_INFO: JSON.stringify({ @@ -60,7 +63,7 @@ const config = { {from: 'src/assets', to: 'assets'}, { from: 'node_modules/argo-ui/src/assets', - to: 'assets', + to: 'assets' }, { from: 'node_modules/@fortawesome/fontawesome-free/webfonts', diff --git a/ui/yarn.lock b/ui/yarn.lock index 628cb5963f..68dcaf2cf7 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -2,11 +2,6 @@ # yarn lockfile v1 -"@alloc/quick-lru@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" - integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== - "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -102,30 +97,27 @@ resize-observer-polyfill "^1.5.1" throttle-debounce "^5.0.0" -"@apideck/better-ajv-errors@^0.3.1": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" - integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== +"@babel/code-frame@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: - json-schema "^0.4.0" - jsonpointer "^5.0.0" - leven "^3.1.0" + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.5.5": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== dependencies: "@babel/highlight" "^7.12.13" -"@babel/code-frame@^7.16.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.8.3": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== - dependencies: - "@babel/highlight" "^7.24.2" - picocolors "^1.0.0" - "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.4.tgz#03ae5af150be94392cb5c7ccd97db5a19a5da6aa" @@ -134,22 +126,39 @@ "@babel/highlight" "^7.23.4" chalk "^2.4.2" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": +"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== - "@babel/compat-data@^7.22.9": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11" integrity sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ== -"@babel/core@^7.1.0", "@babel/core@^7.12.3": +"@babel/core@7.12.3": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@^7.8.4": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.2.tgz#54e45334ffc0172048e5c93ded36461d3ad4c417" integrity sha512-OgC1mON+l4U4B4wiohJlQNUU3H73mpTyYY3j/c8U9dr9UagGGSm+WFpzjy/YLdoyjiG++c1kIDgxCo/mLwQJeQ== @@ -170,27 +179,6 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.11.1", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" - integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.24.5" - "@babel/helpers" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - "@babel/core@^7.11.6": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.3.tgz#5ec09c8803b91f51cc887dedc2654a35852849c9" @@ -212,16 +200,7 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@^7.16.3": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz#3b0f7d383a540329a30a6a9937cfc89461d26217" - integrity sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ== - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.1" - -"@babel/generator@^7.14.2": +"@babel/generator@^7.12.1", "@babel/generator@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.2.tgz#d5773e8b557d421fd6ce0d5efa5fd7fc22567c30" integrity sha512-OnADYbKrffDVai5qcpkMxQ7caomHOoEwjkouqnN2QhydAjowFAZcsdecFIRUBdb+ZcruwYE4ythYmF1UBZU5xQ== @@ -240,16 +219,6 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/generator@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" - integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== - dependencies: - "@babel/types" "^7.24.5" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" @@ -257,13 +226,6 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - "@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" @@ -272,14 +234,7 @@ "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16": +"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16": version "7.13.16" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== @@ -300,18 +255,7 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0": +"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.2.tgz#4e455b0329af29c2d3ad254b5dd5aed34595385d" integrity sha512-6YctwVsmlkchxfGUogvVrrhzyD3grFJyluj5JgDlQrwfMLJSt5tdAzFZfPf4H2Xoi5YLcQ6BxfJlaOBHuctyIw== @@ -323,21 +267,6 @@ "@babel/helper-replace-supers" "^7.13.12" "@babel/helper-split-export-declaration" "^7.12.13" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723" - integrity sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.24.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" - semver "^6.3.1" - "@babel/helper-create-regexp-features-plugin@^7.12.13": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" @@ -346,15 +275,6 @@ "@babel/helper-annotate-as-pure" "^7.12.13" regexpu-core "^4.7.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - "@babel/helper-define-polyfill-provider@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz#a640051772045fedaaecc6f0c6c69f02bdd34bf1" @@ -369,17 +289,6 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": - version "0.6.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" - integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" @@ -438,21 +347,7 @@ dependencies: "@babel/types" "^7.13.12" -"@babel/helper-member-expression-to-functions@^7.23.0", "@babel/helper-member-expression-to-functions@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475" - integrity sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== - dependencies: - "@babel/types" "^7.24.0" - -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== @@ -466,7 +361,7 @@ dependencies: "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.14.0", "@babel/helper-module-transforms@^7.14.2": +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.14.0", "@babel/helper-module-transforms@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5" integrity sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== @@ -491,17 +386,6 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" -"@babel/helper-module-transforms@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" - integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-simple-access" "^7.24.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/helper-validator-identifier" "^7.24.5" - "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" @@ -509,23 +393,11 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== -"@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" - integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== - "@babel/helper-plugin-utils@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" @@ -540,15 +412,6 @@ "@babel/helper-wrap-function" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - "@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" @@ -559,15 +422,6 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.12" -"@babel/helper-replace-supers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" - integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-simple-access@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" @@ -582,13 +436,6 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-simple-access@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" - integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== - dependencies: - "@babel/types" "^7.24.5" - "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" @@ -596,13 +443,6 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - "@babel/helper-split-export-declaration@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" @@ -617,23 +457,11 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-split-export-declaration@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" - integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== - dependencies: - "@babel/types" "^7.24.5" - "@babel/helper-string-parser@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== -"@babel/helper-string-parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - "@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" @@ -644,12 +472,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-identifier@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" - integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== - -"@babel/helper-validator-option@^7.12.17": +"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== @@ -659,11 +482,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - "@babel/helper-wrap-function@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" @@ -674,16 +492,7 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helper-wrap-function@^7.22.20": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz#335f934c0962e2c1ed1fb9d79e06a56115067c09" - integrity sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw== - dependencies: - "@babel/helper-function-name" "^7.23.0" - "@babel/template" "^7.24.0" - "@babel/types" "^7.24.5" - -"@babel/helpers@^7.14.0": +"@babel/helpers@^7.12.1", "@babel/helpers@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62" integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== @@ -701,16 +510,7 @@ "@babel/traverse" "^7.23.4" "@babel/types" "^7.23.4" -"@babel/helpers@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" - integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - -"@babel/highlight@^7.12.13": +"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== @@ -728,17 +528,7 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/highlight@^7.24.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" - integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.5" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.14.2": +"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.14.2", "@babel/parser@^7.7.0": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.2.tgz#0c1680aa44ad4605b16cbdcc5c341a61bde9c746" integrity sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ== @@ -748,26 +538,6 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.4.tgz#409fbe690c333bb70187e2de4021e1e47a026661" integrity sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ== -"@babel/parser@^7.24.0", "@babel/parser@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" - integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" - integrity sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.5" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" - integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a" @@ -777,24 +547,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-proposal-optional-chaining" "^7.13.12" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" - integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" - integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-proposal-async-generator-functions@^7.14.2": +"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz#3a2085abbf5d5f962d480dbc81347385ed62eb1e" integrity sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ== @@ -803,7 +556,15 @@ "@babel/helper-remap-async-to-generator" "^7.13.0" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.13.0": +"@babel/plugin-proposal-class-properties@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== @@ -811,14 +572,6 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-proposal-class-properties@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-proposal-class-static-block@^7.13.11": version "7.13.11" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz#6fcbba4a962702c17e5371a0c7b39afde186d703" @@ -827,16 +580,16 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-class-static-block" "^7.12.13" -"@babel/plugin-proposal-decorators@^7.16.4": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz#bab2b9e174a2680f0a80f341f3ec70f809f8bb4b" - integrity sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA== +"@babel/plugin-proposal-decorators@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz#59271439fed4145456c41067450543aee332d15f" + integrity sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-decorators" "^7.24.1" + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-decorators" "^7.12.1" -"@babel/plugin-proposal-dynamic-import@^7.14.2": +"@babel/plugin-proposal-dynamic-import@^7.12.1", "@babel/plugin-proposal-dynamic-import@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz#01ebabd7c381cff231fa43e302939a9de5be9d9f" integrity sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA== @@ -844,7 +597,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.14.2": +"@babel/plugin-proposal-export-namespace-from@^7.12.1", "@babel/plugin-proposal-export-namespace-from@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz#62542f94aa9ce8f6dba79eec698af22112253791" integrity sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ== @@ -852,7 +605,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.14.2": +"@babel/plugin-proposal-json-strings@^7.12.1", "@babel/plugin-proposal-json-strings@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz#830b4e2426a782e8b2878fbfe2cba85b70cbf98c" integrity sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA== @@ -860,7 +613,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.14.2": +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1", "@babel/plugin-proposal-logical-assignment-operators@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz#222348c080a1678e0e74ea63fe76f275882d1fd7" integrity sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg== @@ -868,7 +621,15 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.2": +"@babel/plugin-proposal-nullish-coalescing-operator@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz#425b11dc62fc26939a2ab42cbba680bdf5734546" integrity sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q== @@ -876,15 +637,15 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== +"@babel/plugin-proposal-numeric-separator@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6" + integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-numeric-separator@^7.14.2": +"@babel/plugin-proposal-numeric-separator@^7.12.1", "@babel/plugin-proposal-numeric-separator@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz#82b4cc06571143faf50626104b335dd71baa4f9e" integrity sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg== @@ -892,15 +653,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-numeric-separator@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.14.2": +"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz#e17d418f81cc103fedd4ce037e181c8056225abc" integrity sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw== @@ -911,7 +664,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.14.2" -"@babel/plugin-proposal-optional-catch-binding@^7.14.2": +"@babel/plugin-proposal-optional-catch-binding@^7.12.1", "@babel/plugin-proposal-optional-catch-binding@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz#150d4e58e525b16a9a1431bd5326c4eed870d717" integrity sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ== @@ -919,7 +672,16 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.14.2": +"@babel/plugin-proposal-optional-chaining@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" + integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz#df8171a8b9c43ebf4c1dabe6311b432d83e1b34e" integrity sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA== @@ -928,16 +690,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.16.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" - integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.13.0": +"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== @@ -945,19 +698,6 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-proposal-private-methods@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" - integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - "@babel/plugin-proposal-private-property-in-object@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz#b1a1f2030586b9d3489cc26179d2eb5883277636" @@ -968,7 +708,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-private-property-in-object" "^7.14.0" -"@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== @@ -976,7 +716,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-async-generators@^7.8.4": +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== @@ -990,7 +730,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== @@ -1004,21 +744,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz#71d9ad06063a6ac5430db126b5df48c70ee885fa" - integrity sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw== +"@babel/plugin-syntax-decorators@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648" + integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-dynamic-import@^7.8.3": +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== @@ -1032,35 +765,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz#875c25e3428d7896c87589765fc8b9d32f24bd8d" - integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-import-assertions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" - integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-import-attributes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" - integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== +"@babel/plugin-syntax-flow@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" + integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-json-strings@^7.8.3": +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== @@ -1074,13 +793,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-jsx@^7.7.2": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" @@ -1095,7 +807,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== @@ -1109,21 +821,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== @@ -1137,33 +849,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== +"@babel/plugin-syntax-typescript@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" + integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-typescript@^7.7.2": version "7.23.3" @@ -1172,39 +870,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.13.0": +"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-arrow-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" - integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-async-generator-functions@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" - integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.13.0": +"@babel/plugin-transform-async-to-generator@^7.12.1", "@babel/plugin-transform-async-to-generator@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== @@ -1213,61 +886,21 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-remap-async-to-generator" "^7.13.0" -"@babel/plugin-transform-async-to-generator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" - integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== - dependencies: - "@babel/helper-module-imports" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" - -"@babel/plugin-transform-block-scoped-functions@^7.12.13": +"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-block-scoped-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" - integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-block-scoping@^7.14.2": +"@babel/plugin-transform-block-scoping@^7.12.1", "@babel/plugin-transform-block-scoping@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz#761cb12ab5a88d640ad4af4aa81f820e6b5fdf5c" integrity sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-block-scoping@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz#89574191397f85661d6f748d4b89ee4d9ee69a2a" - integrity sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.5" - -"@babel/plugin-transform-class-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" - integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-class-static-block@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" - integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.14.2": +"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz#3f1196c5709f064c252ad056207d87b7aeb2d03d" integrity sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg== @@ -1280,50 +913,21 @@ "@babel/helper-split-export-declaration" "^7.12.13" globals "^11.1.0" -"@babel/plugin-transform-classes@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz#05e04a09df49a46348299a0e24bfd7e901129339" - integrity sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.24.5" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.13.0": +"@babel/plugin-transform-computed-properties@^7.12.1", "@babel/plugin-transform-computed-properties@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-computed-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" - integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/template" "^7.24.0" - -"@babel/plugin-transform-destructuring@^7.13.17": +"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.13.17": version "7.13.17" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-destructuring@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz#80843ee6a520f7362686d1a97a7b53544ede453c" - integrity sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.5" - -"@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== @@ -1331,37 +935,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-dotall-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" - integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-duplicate-keys@^7.12.13": +"@babel/plugin-transform-duplicate-keys@^7.12.1", "@babel/plugin-transform-duplicate-keys@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-duplicate-keys@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" - integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-dynamic-import@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" - integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.12.13": +"@babel/plugin-transform-exponentiation-operator@^7.12.1", "@babel/plugin-transform-exponentiation-operator@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== @@ -1369,46 +950,22 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-exponentiation-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" - integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-export-namespace-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" - integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-flow-strip-types@^7.16.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz#fa8d0a146506ea195da1671d38eed459242b2dcc" - integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== +"@babel/plugin-transform-flow-strip-types@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4" + integrity sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-flow" "^7.24.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.12.1" -"@babel/plugin-transform-for-of@^7.13.0": +"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-for-of@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" - integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-function-name@^7.12.13": +"@babel/plugin-transform-function-name@^7.12.1", "@babel/plugin-transform-function-name@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== @@ -1416,60 +973,21 @@ "@babel/helper-function-name" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-function-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" - integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== - dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-json-strings@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" - integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.12.13": +"@babel/plugin-transform-literals@^7.12.1", "@babel/plugin-transform-literals@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" - integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-logical-assignment-operators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" - integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.12.13": +"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-member-expression-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" - integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-modules-amd@^7.14.2": +"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz#6622806fe1a7c07a1388444222ef9535f2ca17b0" integrity sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw== @@ -1478,15 +996,7 @@ "@babel/helper-plugin-utils" "^7.13.0" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-amd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" - integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-modules-commonjs@^7.14.0": +"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz#52bc199cb581e0992edba0f0f80356467587f161" integrity sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ== @@ -1496,16 +1006,7 @@ "@babel/helper-simple-access" "^7.13.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" - integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-simple-access" "^7.22.5" - -"@babel/plugin-transform-modules-systemjs@^7.13.8": +"@babel/plugin-transform-modules-systemjs@^7.12.1", "@babel/plugin-transform-modules-systemjs@^7.13.8": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== @@ -1516,17 +1017,7 @@ "@babel/helper-validator-identifier" "^7.12.11" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" - integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/plugin-transform-modules-umd@^7.14.0": +"@babel/plugin-transform-modules-umd@^7.12.1", "@babel/plugin-transform-modules-umd@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz#2f8179d1bbc9263665ce4a65f305526b2ea8ac34" integrity sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw== @@ -1534,70 +1025,21 @@ "@babel/helper-module-transforms" "^7.14.0" "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-modules-umd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" - integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.13" -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-new-target@^7.12.13": +"@babel/plugin-transform-new-target@^7.12.1", "@babel/plugin-transform-new-target@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-new-target@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" - integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" - integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" - integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz#f91bbcb092ff957c54b4091c86bda8372f0b10ef" - integrity sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA== - dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.5" - -"@babel/plugin-transform-object-super@^7.12.13": +"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== @@ -1605,77 +1047,20 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-replace-supers" "^7.12.13" -"@babel/plugin-transform-object-super@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" - integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz#e4290f72e0e9e831000d066427c4667098decc31" + integrity sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-optional-catch-binding@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" - integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.24.1", "@babel/plugin-transform-optional-chaining@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz#a6334bebd7f9dd3df37447880d0bd64b778e600f" - integrity sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz#e4290f72e0e9e831000d066427c4667098decc31" - integrity sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-parameters@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62" - integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.5" - -"@babel/plugin-transform-private-methods@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" - integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-private-property-in-object@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz#f5d1fcad36e30c960134cb479f1ca98a5b06eda5" - integrity sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.5" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" - integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== +"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" + integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-property-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" - integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-transform-react-constant-elements@^7.12.1": version "7.13.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.13.tgz#0208b1d942bf939cd4f7aa5b255d42602aa4a920" @@ -1683,35 +1068,42 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-react-display-name@^7.12.13": +"@babel/plugin-transform-react-display-name@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-display-name@^7.12.1", "@babel/plugin-transform-react-display-name@^7.12.13": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.2.tgz#2e854544d42ab3bb9c21f84e153d62e800fbd593" integrity sha512-zCubvP+jjahpnFJvPaHPiGVfuVUjXHhFvJKQdNnsmSsiU9kR/rCZ41jHc++tERD2zV+p7Hr6is+t5b6iWTCqSw== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" - integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-react-jsx-development@^7.12.17": +"@babel/plugin-transform-react-jsx-development@^7.12.1", "@babel/plugin-transform-react-jsx-development@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz#f510c0fa7cd7234153539f9a362ced41a5ca1447" integrity sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ== dependencies: "@babel/plugin-transform-react-jsx" "^7.12.17" -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== +"@babel/plugin-transform-react-jsx-self@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz#422d99d122d592acab9c35ea22a6cfd9bf189f60" + integrity sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx-source@^7.12.1": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.2.tgz#2620b57e7de775c0687f65d464026d15812941da" + integrity sha512-OMorspVyjxghAjzgeAWc6O7W7vHbJhV69NeTGdl9Mxgz6PaweAuo7ffB9T5A1OQ9dGcw0As4SYMUhyNC4u7mVg== dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" + "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.13.12": +"@babel/plugin-transform-react-jsx@^7.12.1", "@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz#1df5dfaf0f4b784b43e96da6f28d630e775f68b3" integrity sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA== @@ -1722,17 +1114,6 @@ "@babel/plugin-syntax-jsx" "^7.12.13" "@babel/types" "^7.13.12" -"@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" - "@babel/plugin-transform-react-pure-annotations@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" @@ -1741,70 +1122,38 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-pure-annotations@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz#c86bce22a53956331210d268e49a0ff06e392470" - integrity sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-regenerator@^7.13.15": +"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.13.15": version "7.13.15" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz#e5eb28945bf8b6563e7f818945f966a8d2997f39" integrity sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-regenerator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" - integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.12.13": +"@babel/plugin-transform-reserved-words@^7.12.1", "@babel/plugin-transform-reserved-words@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-reserved-words@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" - integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-runtime@^7.16.4": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" - integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== +"@babel/plugin-transform-runtime@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" + integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== dependencies: - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-plugin-utils" "^7.24.0" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.1" - babel-plugin-polyfill-regenerator "^0.6.1" - semver "^6.3.1" + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + resolve "^1.8.1" + semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.12.13": +"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-shorthand-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" - integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-spread@^7.13.0": +"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== @@ -1812,89 +1161,44 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" -"@babel/plugin-transform-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" - integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-sticky-regex@^7.12.13": +"@babel/plugin-transform-sticky-regex@^7.12.1", "@babel/plugin-transform-sticky-regex@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-sticky-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" - integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-template-literals@^7.13.0": +"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-template-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" - integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-typeof-symbol@^7.12.13": +"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-typeof-symbol@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz#703cace5ef74155fb5eecab63cbfc39bdd25fe12" - integrity sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.5" - -"@babel/plugin-transform-typescript@^7.24.1": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz#bcba979e462120dc06a75bd34c473a04781931b8" - integrity sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw== +"@babel/plugin-transform-typescript@^7.12.1": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" + integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.5" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/plugin-syntax-typescript" "^7.24.1" + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-typescript" "^7.12.13" -"@babel/plugin-transform-unicode-escapes@^7.12.13": +"@babel/plugin-transform-unicode-escapes@^7.12.1", "@babel/plugin-transform-unicode-escapes@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-unicode-escapes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" - integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-property-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" - integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-regex@^7.12.13": +"@babel/plugin-transform-unicode-regex@^7.12.1", "@babel/plugin-transform-unicode-regex@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== @@ -1902,110 +1206,79 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-unicode-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" - integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-sets-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" - integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.16.4": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" - integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== - dependencies: - "@babel/compat-data" "^7.24.4" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" +"@babel/preset-env@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" + integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== + dependencies: + "@babel/compat-data" "^7.12.1" + "@babel/helper-compilation-targets" "^7.12.1" + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.1" - "@babel/plugin-syntax-import-attributes" "^7.24.1" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.1" - "@babel/plugin-transform-async-generator-functions" "^7.24.3" - "@babel/plugin-transform-async-to-generator" "^7.24.1" - "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.5" - "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.4" - "@babel/plugin-transform-classes" "^7.24.5" - "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.5" - "@babel/plugin-transform-dotall-regex" "^7.24.1" - "@babel/plugin-transform-duplicate-keys" "^7.24.1" - "@babel/plugin-transform-dynamic-import" "^7.24.1" - "@babel/plugin-transform-exponentiation-operator" "^7.24.1" - "@babel/plugin-transform-export-namespace-from" "^7.24.1" - "@babel/plugin-transform-for-of" "^7.24.1" - "@babel/plugin-transform-function-name" "^7.24.1" - "@babel/plugin-transform-json-strings" "^7.24.1" - "@babel/plugin-transform-literals" "^7.24.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" - "@babel/plugin-transform-member-expression-literals" "^7.24.1" - "@babel/plugin-transform-modules-amd" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-modules-systemjs" "^7.24.1" - "@babel/plugin-transform-modules-umd" "^7.24.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.24.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" - "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.5" - "@babel/plugin-transform-object-super" "^7.24.1" - "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.5" - "@babel/plugin-transform-parameters" "^7.24.5" - "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.5" - "@babel/plugin-transform-property-literals" "^7.24.1" - "@babel/plugin-transform-regenerator" "^7.24.1" - "@babel/plugin-transform-reserved-words" "^7.24.1" - "@babel/plugin-transform-shorthand-properties" "^7.24.1" - "@babel/plugin-transform-spread" "^7.24.1" - "@babel/plugin-transform-sticky-regex" "^7.24.1" - "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.5" - "@babel/plugin-transform-unicode-escapes" "^7.24.1" - "@babel/plugin-transform-unicode-property-regex" "^7.24.1" - "@babel/plugin-transform-unicode-regex" "^7.24.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" - babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.31.0" - semver "^6.3.1" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.1" + core-js-compat "^3.6.2" + semver "^5.5.0" -"@babel/preset-env@^7.12.1": +"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.8.4": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.2.tgz#e80612965da73579c84ad2f963c2359c71524ed5" integrity sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ== @@ -2084,16 +1357,7 @@ core-js-compat "^3.9.0" semver "^6.3.0" -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-modules@^0.1.4": +"@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.4": version "0.1.4" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== @@ -2104,6 +1368,19 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/preset-react@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.1.tgz#7f022b13f55b6dd82f00f16d1c599ae62985358c" + integrity sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.12.1" + "@babel/plugin-transform-react-jsx" "^7.12.1" + "@babel/plugin-transform-react-jsx-development" "^7.12.1" + "@babel/plugin-transform-react-jsx-self" "^7.12.1" + "@babel/plugin-transform-react-jsx-source" "^7.12.1" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + "@babel/preset-react@^7.12.5": version "7.13.13" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.13.13.tgz#fa6895a96c50763fe693f9148568458d5a839761" @@ -2116,33 +1393,13 @@ "@babel/plugin-transform-react-jsx-development" "^7.12.17" "@babel/plugin-transform-react-pure-annotations" "^7.12.1" -"@babel/preset-react@^7.16.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" - integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-transform-react-display-name" "^7.24.1" - "@babel/plugin-transform-react-jsx" "^7.23.4" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.24.1" - -"@babel/preset-typescript@^7.16.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" - integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-syntax-jsx" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-typescript" "^7.24.1" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== +"@babel/preset-typescript@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz#86480b483bb97f75036e8864fe404cc782cc311b" + integrity sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typescript" "^7.12.1" "@babel/runtime-corejs3@^7.10.2": version "7.14.0" @@ -2152,7 +1409,14 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" + integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== @@ -2173,13 +1437,6 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.16.3": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" - integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== - dependencies: - regenerator-runtime "^0.14.0" - "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.5.tgz#11edb98f8aeec529b82b211028177679144242db" @@ -2187,7 +1444,7 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.12.13", "@babel/template@^7.3.3": +"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== @@ -2205,16 +1462,7 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/template@^7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2", "@babel/traverse@^7.7.0": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== @@ -2244,23 +1492,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.24.5", "@babel/traverse@^7.7.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" - integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== - dependencies: - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/types" "^7.24.5" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.2.tgz#4208ae003107ef8a057ea8333e56eb64d2f6a2c3" integrity sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== @@ -2277,130 +1509,28 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@babel/types@^7.24.0", "@babel/types@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" - integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== - dependencies: - "@babel/helper-string-parser" "^7.24.1" - "@babel/helper-validator-identifier" "^7.24.5" - to-fast-properties "^2.0.0" - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@csstools/normalize.css@*": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.1.1.tgz#f0ad221b7280f3fc814689786fd9ee092776ef8f" - integrity sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ== - -"@csstools/postcss-cascade-layers@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" - integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== - dependencies: - "@csstools/selector-specificity" "^2.0.2" - postcss-selector-parser "^6.0.10" - -"@csstools/postcss-color-function@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" - integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-font-format-keywords@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" - integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-hwb-function@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" - integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-ic-unit@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" - integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-is-pseudo-class@^2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" - integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== - dependencies: - "@csstools/selector-specificity" "^2.0.0" - postcss-selector-parser "^6.0.10" - -"@csstools/postcss-nested-calc@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26" - integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-normalize-display-values@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" - integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-oklab-function@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" - integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" - integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-stepped-value-functions@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" - integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-text-decoration-shorthand@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f" - integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-trigonometric-functions@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" - integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== dependencies: - postcss-value-parser "^4.2.0" + exec-sh "^0.3.2" + minimist "^1.2.0" -"@csstools/postcss-unset-value@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" - integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" - integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== "@ctrl/tinycolor@^3.4.0", "@ctrl/tinycolor@^3.6.0": version "3.6.0" @@ -2427,38 +1557,21 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== -"@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== +"@eslint/eslintrc@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" + integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== dependencies: ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" + js-yaml "^3.13.1" + minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - "@fortawesome/fontawesome-common-types@6.4.0": version "6.4.0" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz#88da2b70d6ca18aaa6ed3687832e11f39e80624b" @@ -2502,36 +1615,37 @@ dependencies: prop-types "^15.8.1" -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== +"@hapi/joi@^15.1.0": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@hapi/hoek" "^8.3.0" "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -2549,28 +1663,16 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - -"@jest/console@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" - integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^28.1.3" - jest-util "^28.1.3" + jest-message-util "^26.6.2" + jest-util "^26.6.2" slash "^3.0.0" "@jest/console@^29.7.0": @@ -2585,36 +1687,36 @@ jest-util "^29.7.0" slash "^3.0.0" -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== +"@jest/core@^26.6.0", "@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.8.1" exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" - micromatch "^4.0.4" + graceful-fs "^4.2.4" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" + micromatch "^4.0.2" + p-each-series "^2.1.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" @@ -2653,15 +1755,15 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== +"@jest/environment@^26.6.0", "@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^27.5.1" + jest-mock "^26.6.2" "@jest/environment@^29.7.0": version "29.7.0" @@ -2688,17 +1790,17 @@ expect "^29.7.0" jest-snapshot "^29.7.0" -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" "@jest/fake-timers@^29.7.0": version "29.7.0" @@ -2712,14 +1814,14 @@ jest-mock "^29.7.0" jest-util "^29.7.0" -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" "@jest/globals@^29.7.0": version "29.7.0" @@ -2731,36 +1833,37 @@ "@jest/types" "^29.6.3" jest-mock "^29.7.0" -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" - graceful-fs "^4.2.9" + graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" + istanbul-lib-instrument "^4.0.3" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" + istanbul-reports "^3.0.2" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" + v8-to-istanbul "^7.0.0" + optionalDependencies: + node-notifier "^8.0.0" "@jest/reporters@^29.7.0": version "29.7.0" @@ -2792,13 +1895,6 @@ strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" -"@jest/schemas@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" - integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== - dependencies: - "@sinclair/typebox" "^0.24.1" - "@jest/schemas@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" @@ -2806,13 +1902,13 @@ dependencies: "@sinclair/typebox" "^0.27.8" -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== dependencies: callsites "^3.0.0" - graceful-fs "^4.2.9" + graceful-fs "^4.2.4" source-map "^0.6.0" "@jest/source-map@^29.6.3": @@ -2824,23 +1920,13 @@ callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== - dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-result@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" - integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== +"@jest/test-result@^26.6.0", "@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: - "@jest/console" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" @@ -2854,15 +1940,16 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== dependencies: - "@jest/test-result" "^27.5.1" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" + "@jest/test-result" "^26.6.2" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" "@jest/test-sequencer@^29.7.0": version "29.7.0" @@ -2874,23 +1961,23 @@ jest-haste-map "^29.7.0" slash "^3.0.0" -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" - babel-plugin-istanbul "^6.1.1" + "@jest/types" "^26.6.2" + babel-plugin-istanbul "^6.0.0" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" - micromatch "^4.0.4" - pirates "^4.0.4" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" + micromatch "^4.0.2" + pirates "^4.0.1" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" @@ -2916,7 +2003,7 @@ slash "^3.0.0" write-file-atomic "^4.0.2" -"@jest/types@^26.6.2": +"@jest/types@^26.6.0", "@jest/types@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== @@ -2927,29 +2014,6 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== - dependencies: - "@jest/schemas" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" @@ -2971,15 +2035,6 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -2990,19 +2045,6 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/source-map@^0.3.3": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" - integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" @@ -3016,26 +2058,6 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@leichtgewicht/ip-codec@^2.0.1": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" - integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== - -"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - version "5.1.1-v1" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" - integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== - dependencies: - eslint-scope "5.1.1" - "@nodelib/fs.scandir@2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" @@ -3044,24 +2066,11 @@ "@nodelib/fs.stat" "2.0.4" run-parallel "^1.1.9" -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - "@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": version "2.0.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== -"@nodelib/fs.stat@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - "@nodelib/fs.walk@^1.2.3": version "1.2.6" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" @@ -3070,14 +2079,6 @@ "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" -"@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - "@npmcli/move-file@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" @@ -3086,22 +2087,16 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pmmmwh/react-refresh-webpack-plugin@^0.5.3": - version "0.5.13" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.13.tgz#02338a92a92f541a5189b97e922caf3215221e49" - integrity sha512-odZVYXly+JwzYri9rKqqUAk0cY6zLpv4dxoKinhoJNShV36Gpxf+CyDIILJ4tYsJ1ZxIWs233Y39iVnynvDA/g== +"@pmmmwh/react-refresh-webpack-plugin@0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" + integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== dependencies: - ansi-html-community "^0.0.8" - core-js-pure "^3.23.3" + ansi-html "^0.0.7" error-stack-parser "^2.0.6" - html-entities "^2.1.0" - loader-utils "^2.0.4" - schema-utils "^3.0.0" + html-entities "^1.2.1" + native-url "^0.2.6" + schema-utils "^2.6.5" source-map "^0.7.3" "@polka/url@^1.0.0-next.9": @@ -3225,27 +2220,18 @@ rc-resize-observer "^1.3.1" rc-util "^5.38.0" -"@rollup/plugin-babel@^5.2.0": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" - integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" - -"@rollup/plugin-node-resolve@^11.2.1": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== +"@rollup/plugin-node-resolve@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" + integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" + "@rollup/pluginutils" "^3.0.8" + "@types/resolve" "0.0.8" builtin-modules "^3.1.0" - deepmerge "^4.2.2" is-module "^1.0.0" - resolve "^1.19.0" + resolve "^1.14.2" -"@rollup/plugin-replace@^2.4.1": +"@rollup/plugin-replace@^2.3.1": version "2.4.2" resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== @@ -3253,7 +2239,7 @@ "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" -"@rollup/pluginutils@^3.1.0": +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== @@ -3262,16 +2248,6 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@rushstack/eslint-patch@^1.1.0": - version "1.10.3" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz#391d528054f758f81e53210f1a1eebcf1a8b1d20" - integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== - -"@sinclair/typebox@^0.24.1": - version "0.24.51" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" - integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== - "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -3298,22 +2274,20 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@sinonjs/fake-timers@^8.0.1": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" - integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== dependencies: "@sinonjs/commons" "^1.7.0" -"@surma/rollup-plugin-off-main-thread@^2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" - integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== +"@surma/rollup-plugin-off-main-thread@^1.1.1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" + integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== dependencies: - ejs "^3.1.6" - json5 "^2.2.0" + ejs "^2.6.1" magic-string "^0.25.0" - string.prototype.matchall "^4.0.6" "@svgr/babel-plugin-add-jsx-attribute@^5.4.0": version "5.4.0" @@ -3404,7 +2378,7 @@ deepmerge "^4.2.2" svgo "^1.2.2" -"@svgr/webpack@^5.5.0": +"@svgr/webpack@5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== @@ -3469,22 +2443,17 @@ prop-types "^15.6.2" tippy.js "^5.1.1" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@types/anymatch@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" + integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== "@types/aria-query@^4.2.0": version "4.2.1" resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b" integrity sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg== -"@types/babel__core@^7.0.0": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.14" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== @@ -3528,41 +2497,11 @@ dependencies: "@babel/types" "^7.3.0" -"@types/body-parser@*": - version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" - integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bonjour@^3.5.9": - version "3.5.13" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" - integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== - dependencies: - "@types/node" "*" - "@types/classnames@2.2.9": version "2.2.9" resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.9.tgz#d868b6febb02666330410fe7f58f3c4b8258be7b" integrity sha512-MNl+rT5UmZeilaPxAVs6YaPC2m6aA8rofviZbhbxpPpl61uKodfdQVsBtgJGTqGizEf02oW3tsVe7FYB8kK14A== -"@types/connect-history-api-fallback@^1.3.5": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" - integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - "@types/d3-array@^3.0.3": version "3.0.9" resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.0.9.tgz#54feabd29d1f15940d422c16008c63c1e4e3d188" @@ -3614,18 +2553,10 @@ resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.1.tgz#8dac23292df0e559a3aa459d8efca78a734c3fbe" integrity sha512-GGTvzKccVEhxmRfJEB6zhY9ieT4UhGVUIQaBzFpUO9OXy2ycAlnPCSJLzmGGgqt3KVjqN3QCQB4g1rsZnHsWhg== -"@types/eslint-scope@^3.7.3": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": - version "8.56.10" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" - integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== +"@types/eslint@^7.2.6": + version "7.2.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.10.tgz#4b7a9368d46c0f8cd5408c23288a59aa2394d917" + integrity sha512-kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -3640,31 +2571,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/estree@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz#3ae8ab3767d98d0b682cda063c3339e1e86ccfaa" - integrity sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@*", "@types/express@^4.17.13": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - "@types/glob@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" @@ -3697,22 +2603,10 @@ resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== - -"@types/http-errors@*": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== - -"@types/http-proxy@^1.17.8": - version "1.17.14" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" - integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== - dependencies: - "@types/node" "*" +"@types/html-minifier-terser@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" + integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.6" @@ -3754,38 +2648,21 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== -"@types/json-schema@^7.0.4", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= -"@types/mime@^1": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" - integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== - "@types/minimatch@*": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== -"@types/node-forge@^1.3.0": - version "1.3.11" - resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" - integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== - dependencies: - "@types/node" "*" - "@types/node@*": version "20.10.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.0.tgz#16ddf9c0a72b832ec4fcce35b8249cf149214617" @@ -3798,15 +2675,20 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.13.tgz#e743bae112bd779ac9650f907197dd2caa7f0364" integrity sha512-1x8W5OpxPq+T85OUsHRP6BqXeosKmeXRtjoF39STcdf/UWLqUsoehstZKOi0CunhVqHG17AyZgpj20eRVooK6A== +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/prettier@^2.1.5": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== +"@types/prettier@^2.0.0": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" + integrity sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA== "@types/prop-types@*": version "15.7.3" @@ -3818,16 +2700,6 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== -"@types/qs@*": - version "6.9.15" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" - integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== - -"@types/range-parser@*": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== - "@types/react-autocomplete@^1.8.4": version "1.8.9" resolved "https://registry.yarnpkg.com/@types/react-autocomplete/-/react-autocomplete-1.8.9.tgz#f7062603878a1f206584d0acbb9b8ac8620cd1b7" @@ -3881,59 +2753,28 @@ "@types/prop-types" "*" csstype "^2.2.0" -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - -"@types/semver@^7.3.12": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - -"@types/send@*": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" - integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-index@^1.9.1": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" - integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== - dependencies: - "@types/express" "*" - -"@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.7" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" - integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== dependencies: - "@types/http-errors" "*" "@types/node" "*" - "@types/send" "*" -"@types/sockjs@^0.3.33": - version "0.3.36" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" - integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== - dependencies: - "@types/node" "*" +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== "@types/stack-utils@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== +"@types/tapable@^1", "@types/tapable@^1.0.5": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.7.tgz#545158342f949e8fd3bfd813224971ecddc3fac4" + integrity sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ== + "@types/testing-library__jest-dom@^5.9.1": version "5.9.5" resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz#5bf25c91ad2d7b38f264b12275e5c92a66d849b0" @@ -3941,22 +2782,38 @@ dependencies: "@types/jest" "*" -"@types/trusted-types@^2.0.2": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" - integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== +"@types/uglify-js@*": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124" + integrity sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q== + dependencies: + source-map "^0.6.1" "@types/uuid@^9.0.3": version "9.0.7" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.7.tgz#b14cebc75455eeeb160d5fe23c2fcc0c64f724d8" integrity sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g== -"@types/ws@^8.5.5": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== +"@types/webpack-sources@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" + integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4.41.8": + version "4.41.28" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.28.tgz#0069a2159b7ad4d83d0b5801942c17d54133897b" + integrity sha512-Nn84RAiJjKRfPFFCVR8LC4ueTtTdfWAMZ03THIzZWRJB+rX24BD3LqPSFnbMscWauEsT4segAsylPDIaZyZyLQ== dependencies: + "@types/anymatch" "*" "@types/node" "*" + "@types/tapable" "^1" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" "@types/yargs-parser@*": version "21.0.3" @@ -3970,13 +2827,6 @@ dependencies: "@types/yargs-parser" "*" -"@types/yargs@^16.0.0": - version "16.0.9" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.9.tgz#ba506215e45f7707e6cbcaf386981155b7ab956e" - integrity sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA== - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^17.0.8": version "17.0.32" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" @@ -3984,237 +2834,274 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.5.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" - integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@^5.0.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" - integrity sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw== - dependencies: - "@typescript-eslint/utils" "5.62.0" - -"@typescript-eslint/parser@^5.5.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" - integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== - dependencies: - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/type-utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== - dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" +"@typescript-eslint/eslint-plugin@^4.5.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.23.0.tgz#29d3c9c81f6200b1fd6d8454cfb007ba176cde80" + integrity sha512-tGK1y3KIvdsQEEgq6xNn1DjiFJtl+wn8JJQiETtCbdQxw1vzjXyAaIkEmO2l6Nq24iy3uZBMFQjZ6ECf1QdgGw== + dependencies: + "@typescript-eslint/experimental-utils" "4.23.0" + "@typescript-eslint/scope-manager" "4.23.0" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + lodash "^4.17.15" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== +"@typescript-eslint/experimental-utils@4.23.0", "@typescript-eslint/experimental-utils@^4.0.1": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.23.0.tgz#f2059434cd6e5672bfeab2fb03b7c0a20622266f" + integrity sha512-WAFNiTDnQfrF3Z2fQ05nmCgPsO5o790vOhmWKXbbYQTO9erE1/YsFot5/LnOUizLzU2eeuz6+U/81KV5/hFTGA== dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.23.0" + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/typescript-estree" "4.23.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" - integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - -"@webassemblyjs/helper-buffer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" - integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== - -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" +"@typescript-eslint/experimental-utils@^3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" + integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^4.5.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.23.0.tgz#239315d38e42e852bef43a4b0b01bef78f78911c" + integrity sha512-wsvjksHBMOqySy/Pi2Q6UuIuHYbgAMwLczRl4YanEPKW5KVxI9ZzDYh3B5DtcZPQTGRWFJrfcbJ6L01Leybwug== + dependencies: + "@typescript-eslint/scope-manager" "4.23.0" + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/typescript-estree" "4.23.0" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.23.0.tgz#8792ef7eacac122e2ec8fa2d30a59b8d9a1f1ce4" + integrity sha512-ZZ21PCFxPhI3n0wuqEJK9omkw51wi2bmeKJvlRZPH5YFkcawKOuRMQMnI8mH6Vo0/DoHSeZJnHiIx84LmVQY+w== + dependencies: + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/visitor-keys" "4.23.0" + +"@typescript-eslint/types@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" + integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== + +"@typescript-eslint/types@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.23.0.tgz#da1654c8a5332f4d1645b2d9a1c64193cae3aa3b" + integrity sha512-oqkNWyG2SLS7uTWLZf6Sr7Dm02gA5yxiz1RP87tvsmDsguVATdpVguHr4HoGOcFOpCvx9vtCSCyQUGfzq28YCw== + +"@typescript-eslint/typescript-estree@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" + integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== + dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" + debug "^4.1.1" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== +"@typescript-eslint/typescript-estree@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.23.0.tgz#0753b292097523852428a6f5a1aa8ccc1aae6cd9" + integrity sha512-5Sty6zPEVZF5fbvrZczfmLCOcby3sfrSPu30qKoY1U3mca5/jvU5cwsPb/CO6Q3ByRjixTMIVsDkqwIxCf/dMw== + dependencies: + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/visitor-keys" "4.23.0" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" + integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== + dependencies: + eslint-visitor-keys "^1.1.0" -"@webassemblyjs/helper-wasm-section@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" - integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== +"@typescript-eslint/visitor-keys@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.23.0.tgz#7215cc977bd3b4ef22467b9023594e32f9e4e455" + integrity sha512-5PNe5cmX9pSifit0H+nPoQBXdbNzi5tOEec+3riK+ku4e3er37pKxMKDH5Ct5Y4fhWxcD4spnlYjxi9vXbSpwg== dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.12.1" + "@typescript-eslint/types" "4.23.0" + eslint-visitor-keys "^2.0.0" -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" - integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-opt" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - "@webassemblyjs/wast-printer" "1.12.1" - -"@webassemblyjs/wasm-gen@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" - integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" - integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" - integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" - integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== - dependencies: - "@webassemblyjs/ast" "1.12.1" +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" "@xtuc/long" "4.2.2" -"@webpack-cli/configtest@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" - integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" -"@webpack-cli/info@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" - integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== +"@webpack-cli/configtest@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.3.tgz#204bcff87cda3ea4810881f7ea96e5f5321b87b9" + integrity sha512-WQs0ep98FXX2XBAfQpRbY0Ma6ADw8JR6xoIkaIiJIzClGOMqVRvPCWqndTxf28DgFopWan0EKtHtg/5W1h0Zkw== -"@webpack-cli/serve@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" - integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== +"@webpack-cli/info@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.4.tgz#7381fd41c9577b2d8f6c2594fad397ef49ad5573" + integrity sha512-ogE2T4+pLhTTPS/8MM3IjHn0IYplKM4HbVNMCWA9N4NrdPzunwenpCsqKEXyejMfRu6K8mhauIPYf8ZxWG5O6g== + dependencies: + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.4.0.tgz#f84fd07bcacefe56ce762925798871092f0f228e" + integrity sha512-xgT/HqJ+uLWGX+Mzufusl3cgjAcnqYYskaB7o0vRcwOEfuu6hMzSILQpnIzFMGsTaeaX4Nnekl+6fadLbl1/Vg== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -4239,14 +3126,6 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" @@ -4255,15 +3134,10 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== acorn-walk@^7.1.1: version "7.2.0" @@ -4275,46 +3149,34 @@ acorn-walk@^8.0.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.0.tgz#d3c6a9faf00987a5e2b9bdb506c2aa76cd707f83" integrity sha512-mjmzmv12YIG/G8JQdQuz2MUDShEJ6teYpT5bmWA4q7iwoGen8xtt3twF3OvzIUl+Q06aWIjvnwQUKvQ6TtMRjg== -acorn@^7.1.1: +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4: +acorn@^8.0.4, acorn@^8.1.0: version "8.2.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== -acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -address@^1.0.1: +address@1.1.2, address@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -address@^1.1.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" - integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== - -adjust-sourcemap-loader@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" - integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== +adjust-sourcemap-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" + integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== dependencies: loader-utils "^2.0.0" regex-parser "^2.2.11" -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -4328,26 +3190,12 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.1.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -4357,21 +3205,31 @@ ajv@^6.1.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" - integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== +ajv@^8.0.1: + version "8.3.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.3.0.tgz#25ee7348e32cdc4a1dbb38256bf6bdc451dd577c" + integrity sha512-RYE7B5An83d7eWnDR8kbdaIFqmKCNsP16ay1hDbJEU+sa0e3H9SebskCt0Uufem6cfAVu7Col6ubcn/W+Sm8/Q== dependencies: - fast-deep-equal "^3.1.3" + fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -4379,12 +3237,7 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: dependencies: type-fest "^0.21.3" -ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-html@0.0.7: +ansi-html@0.0.7, ansi-html@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= @@ -4404,11 +3257,6 @@ ansi-regex@^5.0.0, ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -4428,11 +3276,6 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - antd@^5.4.2: version "5.4.2" resolved "https://registry.yarnpkg.com/antd/-/antd-5.4.2.tgz#3923b96da76fc7276992e9fc0286ebb3a638e016" @@ -4541,11 +3384,6 @@ antd@^5.6.1: scroll-into-view-if-needed "^3.1.0" throttle-debounce "^5.0.0" -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -4562,18 +3400,10 @@ anymatch@^3.0.3, anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" - integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== "argo-ui@git+https://github.com/argoproj/argo-ui.git#5ff344ac9692c14dd108468bd3c020c3c75181cb": version "1.0.0" @@ -4607,11 +3437,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -4620,12 +3445,10 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -aria-query@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= arr-diff@^4.0.0: version "4.0.0" @@ -4642,14 +3465,6 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-buffer-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" - integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== - dependencies: - call-bind "^1.0.5" - is-array-buffer "^3.0.4" - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -4660,7 +3475,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.1.2: +array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== @@ -4671,18 +3486,6 @@ array-includes@^3.1.2: get-intrinsic "^1.1.1" is-string "^1.0.5" -array-includes@^3.1.6, array-includes@^3.1.7: - version "3.1.8" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" - array-tree-filter@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" @@ -4710,99 +3513,79 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.findlast@^1.2.4: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" - integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-shim-unscopables "^1.0.2" - -array.prototype.findlastindex@^1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" - integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-shim-unscopables "^1.0.2" - -array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.toreversed@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba" - integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== +array.prototype.flat@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" -array.prototype.tosorted@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" - integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== +array.prototype.flatmap@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.1.0" - es-shim-unscopables "^1.0.2" + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + function-bind "^1.1.1" -arraybuffer.prototype.slice@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" - integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== - dependencies: - array-buffer-byte-length "^1.0.1" - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.2.1" - get-intrinsic "^1.2.3" - is-array-buffer "^3.0.4" - is-shared-array-buffer "^1.0.2" +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -ast-types-flow@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" - integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-each@^1.0.1: version "1.0.3" @@ -4826,11 +3609,6 @@ async@^2.6.2: dependencies: lodash "^4.17.14" -async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -4846,49 +3624,70 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^10.4.13: - version "10.4.19" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f" - integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== +autoprefixer@^9.6.1: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== dependencies: - browserslist "^4.23.0" - caniuse-lite "^1.0.30001599" - fraction.js "^4.3.7" + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -axe-core@=4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" - integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axobject-query@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" - integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== +axe-core@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.2.0.tgz#6594db4ee62f78be79e32a7295d21b099b60668d" + integrity sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg== + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== dependencies: - dequal "^2.0.3" + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" -babel-jest@^27.4.2, babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" + babylon "^6.18.0" + +babel-jest@^26.6.0, babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== + dependencies: + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.6.2" chalk "^4.0.0" - graceful-fs "^4.2.9" + graceful-fs "^4.2.4" slash "^3.0.0" babel-jest@^29.7.0: @@ -4904,14 +3703,15 @@ babel-jest@^29.7.0: graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@^8.2.3: - version "8.3.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" - integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== dependencies: - find-cache-dir "^3.3.1" - loader-utils "^2.0.0" - make-dir "^3.1.0" + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" schema-utils "^2.6.5" babel-plugin-dynamic-import-node@^2.3.3: @@ -4921,6 +3721,17 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + babel-plugin-istanbul@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" @@ -4932,10 +3743,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -4952,19 +3763,19 @@ babel-plugin-jest-hoist@^29.6.3: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" - integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== +babel-plugin-macros@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== dependencies: - "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" -babel-plugin-named-asset-import@^0.3.8: - version "0.3.8" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" - integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== +babel-plugin-named-asset-import@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" + integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== babel-plugin-polyfill-corejs2@^0.2.0: version "0.2.0" @@ -4975,23 +3786,6 @@ babel-plugin-polyfill-corejs2@^0.2.0: "@babel/helper-define-polyfill-provider" "^0.2.0" semver "^6.1.1" -babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.11" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" - integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.2" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: - version "0.10.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" - integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" - core-js-compat "^3.36.1" - babel-plugin-polyfill-corejs3@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz#f4b4bb7b19329827df36ff56f6e6d367026cb7a2" @@ -5007,14 +3801,20 @@ babel-plugin-polyfill-regenerator@^0.2.0: dependencies: "@babel/helper-define-polyfill-provider" "^0.2.0" -babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" - integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.2" + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" -babel-plugin-transform-react-remove-prop-types@^0.4.24: +babel-plugin-transform-react-remove-prop-types@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== @@ -5037,12 +3837,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== dependencies: - babel-plugin-jest-hoist "^27.5.1" + babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" babel-preset-jest@^29.6.3: @@ -5053,27 +3853,26 @@ babel-preset-jest@^29.6.3: babel-plugin-jest-hoist "^29.6.3" babel-preset-current-node-syntax "^1.0.0" -babel-preset-react-app@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" - integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== - dependencies: - "@babel/core" "^7.16.0" - "@babel/plugin-proposal-class-properties" "^7.16.0" - "@babel/plugin-proposal-decorators" "^7.16.4" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" - "@babel/plugin-proposal-numeric-separator" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.0" - "@babel/plugin-proposal-private-methods" "^7.16.0" - "@babel/plugin-transform-flow-strip-types" "^7.16.0" - "@babel/plugin-transform-react-display-name" "^7.16.0" - "@babel/plugin-transform-runtime" "^7.16.4" - "@babel/preset-env" "^7.16.4" - "@babel/preset-react" "^7.16.0" - "@babel/preset-typescript" "^7.16.0" - "@babel/runtime" "^7.16.3" - babel-plugin-macros "^3.1.0" - babel-plugin-transform-react-remove-prop-types "^0.4.24" +babel-preset-react-app@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.0.tgz#689b60edc705f8a70ce87f47ab0e560a317d7045" + integrity sha512-itL2z8v16khpuKutx5IH8UdCdSTuzrOhRFTEdIhveZ2i1iBKDrVE0ATa4sFVy+02GLucZNVBWtoarXBy0Msdpg== + dependencies: + "@babel/core" "7.12.3" + "@babel/plugin-proposal-class-properties" "7.12.1" + "@babel/plugin-proposal-decorators" "7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.12.1" + "@babel/plugin-proposal-numeric-separator" "7.12.1" + "@babel/plugin-proposal-optional-chaining" "7.12.1" + "@babel/plugin-transform-flow-strip-types" "7.12.1" + "@babel/plugin-transform-react-display-name" "7.12.1" + "@babel/plugin-transform-runtime" "7.12.1" + "@babel/preset-env" "7.12.1" + "@babel/preset-react" "7.12.1" + "@babel/preset-typescript" "7.12.1" + "@babel/runtime" "7.12.1" + babel-plugin-macros "2.8.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" babel-runtime@^6.26.0: version "6.26.0" @@ -5083,11 +3882,21 @@ babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -5106,6 +3915,13 @@ batch@0.6.1: resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + bfj@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" @@ -5143,6 +3959,16 @@ bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + body-parser@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -5159,32 +3985,6 @@ body-parser@1.19.0: raw-body "2.4.0" type-is "~1.6.17" -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - -bonjour-service@^1.0.11: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" - integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== - dependencies: - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.5" - bonjour@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" @@ -5210,13 +4010,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -5240,12 +4033,88 @@ braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6: +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.14.2: + version "4.14.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" + integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== + dependencies: + caniuse-lite "^1.0.30001125" + electron-to-chromium "^1.3.564" + escalade "^3.0.2" + node-releases "^1.1.61" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.6.2, browserslist@^4.6.4: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== @@ -5256,16 +4125,6 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6: escalade "^3.1.1" node-releases "^1.1.71" -browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: - version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== - dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - browserslist@^4.21.9: version "4.22.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" @@ -5300,11 +4159,30 @@ buffer-indexof@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + builtin-modules@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -5315,10 +4193,26 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" cacache@^15.0.5: version "15.0.6" @@ -5366,23 +4260,31 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@^4.1.2: +camel-case@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== @@ -5390,26 +4292,16 @@ camel-case@^4.1.2: pascal-case "^3.1.2" tslib "^2.0.3" -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0: +camelcase@^6.0.0, camelcase@^6.1.0, camelcase@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -camelcase@^6.2.1: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -5420,7 +4312,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001219: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001219: version "1.0.30001228" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== @@ -5430,17 +4322,24 @@ caniuse-lite@^1.0.30001541: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz#a528b253c8a2d95d2b415e11d8b9942acc100c4f" integrity sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w== -caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: - version "1.0.30001620" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz#78bb6f35b8fe315b96b8590597094145d0b146b4" - integrity sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew== +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +case-sensitive-paths-webpack-plugin@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== -case-sensitive-paths-webpack-plugin@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" - integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -5457,7 +4356,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.2: +chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -5478,17 +4377,12 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -char-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" - integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== - check-types@^11.1.1: version "11.1.2" resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== -"chokidar@>=3.0.0 <4.0.0": +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1: version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== @@ -5522,20 +4416,10 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.4.2, chokidar@^3.5.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chownr@^2.0.0: version "2.0.0" @@ -5547,16 +4431,34 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + ci-info@^3.2.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + circular-json@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.4.0.tgz#c448ea998b7fe31ecf472ec29c6b608e2e2a62fd" integrity sha512-tKV502ADgm9Z37s6B1QOohegjJJrCl2iyMMb1+8ITHrh1fquW8Jdbkb4s5r4Iwutr1UfL1qvkqvc1wZZlLvwow== +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + cjs-module-lexer@^1.0.0: version "1.2.3" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" @@ -5582,10 +4484,10 @@ classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.3.1, classna resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== -clean-css@^5.2.2: - version "5.3.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" - integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== +clean-css@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== dependencies: source-map "~0.6.0" @@ -5603,14 +4505,14 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" + wrap-ansi "^6.2.0" cliui@^8.0.1: version "8.0.1" @@ -5662,7 +4564,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -5681,44 +4583,45 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colord@^2.9.1: - version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== +color-string@^1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" + integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.4" -colorette@^1.2.2: +colorette@^1.2.1, colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== -colorette@^2.0.10, colorette@^2.0.14: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -combined-stream@^1.0.8: +combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" -commander@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.0: +commander@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== @@ -5728,16 +4631,11 @@ commander@^6.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -commander@^7.2.0: +commander@^7.0.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -5753,6 +4651,13 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -5783,20 +4688,40 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -confusing-browser-globals@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" - integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= content-disposition@0.5.3: version "0.5.3" @@ -5805,30 +4730,23 @@ content-disposition@0.5.3: dependencies: safe-buffer "5.1.2" -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" @@ -5844,10 +4762,17 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" copy-descriptor@^0.1.0: version "0.1.1" @@ -5878,14 +4803,7 @@ copy-webpack-plugin@^6.3.2: serialize-javascript "^5.0.1" webpack-sources "^1.4.3" -core-js-compat@^3.31.0, core-js-compat@^3.36.1: - version "3.37.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" - integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== - dependencies: - browserslist "^4.23.0" - -core-js-compat@^3.9.0, core-js-compat@^3.9.1: +core-js-compat@^3.6.2, core-js-compat@^3.9.0, core-js-compat@^3.9.1: version "3.12.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.12.1.tgz#2c302c4708505fa7072b0adb5156d26f7801a18b" integrity sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ== @@ -5898,31 +4816,36 @@ core-js-pure@^3.0.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.12.1.tgz#934da8b9b7221e2a2443dc71dfa5bd77a7ea00b8" integrity sha512-1cch+qads4JnDSWsvc7d6nzlKAippwjUlf6vykkTLW53VSV+NkE6muGBToAjEA8pG90cSfcud3JgVmW2ds5TaQ== -core-js-pure@^3.23.3: - version "3.37.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.37.1.tgz#2b4b34281f54db06c9a9a5bd60105046900553bd" - integrity sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA== - core-js@^2.4.0: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.19.2: - version "3.37.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9" - integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw== - core-js@^3.32.1: version "3.33.3" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.3.tgz#3c644a323f0f533a0d360e9191e37f7fc059088d" integrity sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw== -core-util-is@~1.0.0: +core-js@^3.6.5: + version "3.12.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.12.1.tgz#6b5af4ff55616c08a44d386f1f510917ff204112" + integrity sha512-Ne9DKPHTObRuB09Dru5AjwKjY4cJHVGu+y5f7coGn1E9Grkc3p2iBwE9AI/nJzsE29mQF7oq+mhYYRqOMFN1Bw== + +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" @@ -5945,6 +4868,37 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + create-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" @@ -5958,6 +4912,15 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" +cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -5969,76 +4932,87 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= -css-blank-pseudo@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" - integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== dependencies: - postcss-selector-parser "^6.0.9" + postcss "^7.0.5" -css-declaration-sorter@^6.3.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" - integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= -css-has-pseudo@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" - integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== - dependencies: - postcss-selector-parser "^6.0.9" - -css-loader@^6.5.1: - version "6.11.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" - integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.33" - postcss-modules-extract-imports "^3.1.0" - postcss-modules-local-by-default "^4.0.5" - postcss-modules-scope "^3.2.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.5.4" +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" -css-minimizer-webpack-plugin@^3.2.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" - integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== - dependencies: - cssnano "^5.0.6" - jest-worker "^27.0.2" - postcss "^8.3.5" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" -css-prefers-color-scheme@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" - integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== +css-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" + integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== + dependencies: + camelcase "^6.0.0" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^2.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.3" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.1" + semver "^7.3.2" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" css-select-base-adapter@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== -css-select@^2.0.0: +css-select@^2.0.0, css-select@^2.0.2: version "2.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== @@ -6048,17 +5022,6 @@ css-select@^2.0.0: domutils "^1.7.0" nth-check "^1.0.2" -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - css-tree@1.0.0-alpha.37: version "1.0.0-alpha.37" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" @@ -6067,7 +5030,7 @@ css-tree@1.0.0-alpha.37: mdn-data "2.0.4" source-map "^0.6.1" -css-tree@^1.1.2, css-tree@^1.1.3: +css-tree@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -6080,16 +5043,21 @@ css-what@^3.2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - css.escape@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + css@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" @@ -6099,66 +5067,90 @@ css@^3.0.0: source-map "^0.6.1" source-map-resolve "^0.6.0" -cssdb@^7.1.0: - version "7.11.2" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.11.2.tgz#127a2f5b946ee653361a5af5333ea85a39df5ae5" - integrity sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A== +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^5.2.14: - version "5.2.14" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" - integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.1" - postcss-convert-values "^5.1.3" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.4" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.4" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.1" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.2" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== +cssnano-preset-default@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" + integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.3" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== -cssnano@^5.0.6: - version "5.1.15" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" - integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== +cssnano@^4.1.10: + version "4.1.11" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" + integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== dependencies: - cssnano-preset-default "^5.2.14" - lilconfig "^2.0.3" - yaml "^1.10.2" + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.8" + is-resolvable "^1.0.0" + postcss "^7.0.0" -csso@^4.0.2, csso@^4.2.0: +csso@^4.0.2: version "4.2.0" resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== @@ -6192,6 +5184,11 @@ csstype@^3.0.10: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + "d3-array@2 - 3", "d3-array@2.10.0 - 3", d3-array@^3.1.6: version "3.2.4" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" @@ -6263,10 +5260,25 @@ d3-timer@^3.0.1: resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== -damerau-levenshtein@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" + integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" data-urls@^2.0.0: version "2.0.0" @@ -6277,60 +5289,26 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -data-view-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" - integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" - integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" - integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - dayjs@^1.11.1: version "1.11.7" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: +debug@^3.1.1, debug@^3.2.6: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1: +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -6402,43 +5380,13 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - -define-data-property@^1.0.1, define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3: +define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" -define-properties@^1.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -6479,25 +5427,18 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" destroy@~1.0.4: version "1.0.4" @@ -6514,7 +5455,7 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.5.tgz#9d270aa7eaa5af0b72c4c9d9b814e7f4ce738b79" integrity sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw== -detect-port-alt@^1.1.6: +detect-port-alt@1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== @@ -6522,26 +5463,25 @@ detect-port-alt@^1.1.6: address "^1.0.1" debug "^2.6.0" -didyoumean@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" - integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - diff-sequences@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - diff-sequences@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -6549,11 +5489,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -6567,13 +5502,6 @@ dns-packet@^1.3.1: ip "^1.1.0" safe-buffer "^5.0.1" -dns-packet@^5.2.2: - version "5.6.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" - integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - dns-txt@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" @@ -6581,6 +5509,14 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -6605,7 +5541,7 @@ dom-align@^1.7.0: resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.4.tgz#3503992eb2a7cfcb2ed3b2a6d21e0b9c00d54511" integrity sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw== -dom-converter@^0.2.0: +dom-converter@^0.2: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== @@ -6632,21 +5568,17 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== -domelementtype@1: +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== @@ -6656,11 +5588,6 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== -domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -6668,14 +5595,14 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== dependencies: - domelementtype "^2.2.0" + domelementtype "1" -domutils@^1.7.0: +domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -6683,15 +5610,6 @@ domutils@^1.7.0: dom-serializer "0" domelementtype "1" -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - dot-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" @@ -6700,39 +5618,57 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dotenv-expand@^5.1.0: +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== -duplexer@^0.1.2: +duplexer@^0.1.1, duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^3.1.6: - version "3.1.10" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" - integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== - dependencies: - jake "^10.8.5" +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -electron-to-chromium@^1.3.723: +electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.723: version "1.3.727" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz#857e310ca00f0b75da4e1db6ff0e073cc4a91ddf" integrity sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg== @@ -6742,25 +5678,28 @@ electron-to-chromium@^1.4.535: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.596.tgz#6752d1aa795d942d49dfc5d3764d6ea283fab1d7" integrity sha512-zW3zbZ40Icb2BCWjm47nxwcFGYlIgdXkAx85XDO7cyky9J4QQfq8t0W19/TLZqq3JPQXtlv8BPIGmfa9Jb4scg== -electron-to-chromium@^1.4.668: - version "1.4.773" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.773.tgz#49741af9bb4e712ad899e35d8344d8d59cdb7e12" - integrity sha512-87eHF+h3PlCRwbxVEAw9KtK3v7lWfc/sUDr0W76955AdYTG4bV/k0zrl585Qnj/skRMH2qOSiE+kqMeOQ+LOpw== - -emittery@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" - integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== emoji-regex@^7.0.1: version "7.0.3" @@ -6772,11 +5711,16 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emoji-regex@^9.2.2: +emoji-regex@^9.0.0: version "9.2.2" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -6794,14 +5738,14 @@ encoding@^0.1.11: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^4.0.0: +enhanced-resolve@^4.0.0, enhanced-resolve@^4.3.0: version "4.5.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== @@ -6810,13 +5754,17 @@ enhanced-resolve@^4.0.0: memory-fs "^0.5.0" tapable "^1.0.0" -enhanced-resolve@^5.16.0: - version "5.16.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz#e8bc63d51b826d6f1cbc0a150ecb5a8b0c62e567" - integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" + ansi-colors "^4.1.1" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== entities@^2.0.0: version "2.2.0" @@ -6828,14 +5776,14 @@ envinfo@^7.7.3: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== -errno@^0.1.3: +errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: prr "~1.0.1" -error-ex@^1.3.1: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -6856,7 +5804,7 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.1.1" -es-abstract@^1.17.2, es-abstract@^1.18.0-next.2: +es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: version "1.18.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== @@ -6878,118 +5826,6 @@ es-abstract@^1.17.2, es-abstract@^1.18.0-next.2: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.0" -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: - version "1.23.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" - integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== - dependencies: - array-buffer-byte-length "^1.0.1" - arraybuffer.prototype.slice "^1.0.3" - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - data-view-buffer "^1.0.1" - data-view-byte-length "^1.0.1" - data-view-byte-offset "^1.0.0" - es-define-property "^1.0.0" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-set-tostringtag "^2.0.3" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.4" - get-symbol-description "^1.0.2" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - hasown "^2.0.2" - internal-slot "^1.0.7" - is-array-buffer "^3.0.4" - is-callable "^1.2.7" - is-data-view "^1.0.1" - is-negative-zero "^2.0.3" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.3" - is-string "^1.0.7" - is-typed-array "^1.1.13" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.5" - regexp.prototype.flags "^1.5.2" - safe-array-concat "^1.1.2" - safe-regex-test "^1.0.3" - string.prototype.trim "^1.2.9" - string.prototype.trimend "^1.0.8" - string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.2" - typed-array-byte-length "^1.0.1" - typed-array-byte-offset "^1.0.2" - typed-array-length "^1.0.6" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.15" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: - version "1.0.19" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" - integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.3" - es-errors "^1.3.0" - es-set-tostringtag "^2.0.3" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - globalthis "^1.0.3" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - iterator.prototype "^1.1.2" - safe-array-concat "^1.1.2" - -es-module-lexer@^1.2.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz#00b423304f2500ac59359cc9b6844951f372d497" - integrity sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA== - -es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" - integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== - dependencies: - get-intrinsic "^1.2.4" - has-tostringtag "^1.0.2" - hasown "^2.0.1" - -es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -6999,7 +5835,33 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -escalade@^3.1.1: +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.0.2, escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== @@ -7009,20 +5871,15 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@^2.0.0: version "2.0.0" @@ -7036,139 +5893,119 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-react-app@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" - integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== - dependencies: - "@babel/core" "^7.16.0" - "@babel/eslint-parser" "^7.16.3" - "@rushstack/eslint-patch" "^1.1.0" - "@typescript-eslint/eslint-plugin" "^5.5.0" - "@typescript-eslint/parser" "^5.5.0" - babel-preset-react-app "^10.0.1" - confusing-browser-globals "^1.0.11" - eslint-plugin-flowtype "^8.0.3" - eslint-plugin-import "^2.25.3" - eslint-plugin-jest "^25.3.0" - eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-react "^7.27.1" - eslint-plugin-react-hooks "^4.3.0" - eslint-plugin-testing-library "^5.0.1" - -eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" +eslint-config-react-app@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" + integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== + dependencies: + confusing-browser-globals "^1.0.10" -eslint-module-utils@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" - integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== dependencies: - debug "^3.2.7" + debug "^2.6.9" + resolve "^1.13.1" -eslint-plugin-flowtype@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" - integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== dependencies: - lodash "^4.17.21" + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-flowtype@^5.2.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.7.2.tgz#482a42fe5d15ee614652ed256d37543d584d7bc0" + integrity sha512-7Oq/N0+3nijBnYWQYzz/Mp/7ZCpwxYvClRyW/PLAmimY9uLCBvoXsNsERcJdkKceyOjgRbFhhxs058KTrne9Mg== + dependencies: + lodash "^4.17.15" string-natural-compare "^3.0.1" -eslint-plugin-import@^2.25.3: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== +eslint-plugin-import@^2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-jest@^24.1.0: + version "24.3.6" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.3.6.tgz#5f0ca019183c3188c5ad3af8e80b41de6c8e9173" + integrity sha512-WOVH4TIaBLIeCX576rLcOgjNXqP+jNlCiEmRgFTfQtJ52DpwnIQKAVGlGPAN7CZ33bW6eNfHD6s8ZbEUTQubJg== dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" - semver "^6.3.1" - tsconfig-paths "^3.15.0" + "@typescript-eslint/experimental-utils" "^4.0.1" -eslint-plugin-jest@^25.3.0: - version "25.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" - integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== +eslint-plugin-jsx-a11y@^6.3.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" + integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== dependencies: - "@typescript-eslint/experimental-utils" "^5.0.0" + "@babel/runtime" "^7.11.2" + aria-query "^4.2.2" + array-includes "^3.1.1" + ast-types-flow "^0.0.7" + axe-core "^4.0.2" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" + has "^1.0.3" + jsx-ast-utils "^3.1.0" + language-tags "^1.0.5" -eslint-plugin-jsx-a11y@^6.5.1: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" - integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== +eslint-plugin-react-hooks@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" + integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== + +eslint-plugin-react@^7.21.5: + version "7.23.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz#2d2291b0f95c03728b55869f01102290e792d494" + integrity sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw== dependencies: - "@babel/runtime" "^7.23.2" - aria-query "^5.3.0" - array-includes "^3.1.7" - array.prototype.flatmap "^1.3.2" - ast-types-flow "^0.0.8" - axe-core "=4.7.0" - axobject-query "^3.2.1" - damerau-levenshtein "^1.0.8" - emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.15" - hasown "^2.0.0" - jsx-ast-utils "^3.3.5" - language-tags "^1.0.9" - minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" - -eslint-plugin-react-hooks@^4.3.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" - integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== - -eslint-plugin-react@^7.27.1: - version "7.34.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997" - integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw== - dependencies: - array-includes "^3.1.7" - array.prototype.findlast "^1.2.4" - array.prototype.flatmap "^1.3.2" - array.prototype.toreversed "^1.1.2" - array.prototype.tosorted "^1.1.3" + array-includes "^3.1.3" + array.prototype.flatmap "^1.2.4" doctrine "^2.1.0" - es-iterator-helpers "^1.0.17" - estraverse "^5.3.0" + has "^1.0.3" jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" - object.hasown "^1.1.3" - object.values "^1.1.7" - prop-types "^15.8.1" - resolve "^2.0.0-next.5" - semver "^6.3.1" - string.prototype.matchall "^4.0.10" + minimatch "^3.0.4" + object.entries "^1.1.3" + object.fromentries "^2.0.4" + object.values "^1.1.3" + prop-types "^15.7.2" + resolve "^2.0.0-next.3" + string.prototype.matchall "^4.0.4" + +eslint-plugin-testing-library@^3.9.2: + version "3.10.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz#609ec2b0369da7cf2e6d9edff5da153cc31d87bd" + integrity sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA== + dependencies: + "@typescript-eslint/experimental-utils" "^3.10.1" -eslint-plugin-testing-library@^5.0.1: - version "5.11.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz#5b46cdae96d4a78918711c0b4792f90088e62d20" - integrity sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw== +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: - "@typescript-eslint/utils" "^5.58.0" + esrecurse "^4.1.0" + estraverse "^4.1.1" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@^5.0.0, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -7176,101 +6013,100 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" + eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^2.1.0: +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint-webpack-plugin@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" - integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== +eslint-webpack-plugin@^2.5.2: + version "2.5.4" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.4.tgz#473b84932f1a8e2c2b8e66a402d0497bf440b986" + integrity sha512-7rYh0m76KyKSDE+B+2PUQrlNS4HJ51t3WKpkJg6vo2jFMbEPTG99cBV0Dm7LXSHucN4WGCG65wQcRiTFrj7iWw== dependencies: - "@types/eslint" "^7.29.0 || ^8.4.1" - jest-worker "^28.0.2" - micromatch "^4.0.5" + "@types/eslint" "^7.2.6" + arrify "^2.0.1" + jest-worker "^26.6.2" + micromatch "^4.0.2" normalize-path "^3.0.0" - schema-utils "^4.0.0" - -eslint@^8.3.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" + schema-utils "^3.0.0" + +eslint@^7.11.0: + version "7.26.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.26.0.tgz#d416fdcdcb3236cd8f282065312813f8c13982f6" + integrity sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.1" + ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.3.2" + debug "^4.0.1" doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" esutils "^2.0.2" - fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" + lodash "^4.17.21" + minimatch "^3.0.4" natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.4" text-table "^0.2.0" + v8-compile-cache "^2.0.3" -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: estraverse "^5.1.0" -esrecurse@^4.3.0: +esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -7287,10 +6123,10 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== -estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== estree-walker@^1.0.1: version "1.0.1" @@ -7312,7 +6148,7 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.1: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.2.0: +events@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -7324,6 +6160,19 @@ eventsource@^1.0.7: dependencies: original "^1.0.0" +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.6" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -7337,6 +6186,21 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + execa@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" @@ -7370,15 +6234,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== +expect@^26.6.0, expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" + "@jest/types" "^26.6.2" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" expect@^29.0.0, expect@^29.7.0: version "29.7.0" @@ -7427,42 +6293,12 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -express@^4.17.3: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.2" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" + type "^2.0.0" extend-shallow@^2.0.1: version "2.0.1" @@ -7479,6 +6315,11 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -7493,7 +6334,17 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -7515,17 +6366,6 @@ fast-glob@^3.1.1, fast-glob@^3.2.4: micromatch "^4.0.2" picomatch "^2.2.1" -fast-glob@^3.2.9, fast-glob@^3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -7562,6 +6402,11 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -7569,10 +6414,10 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-loader@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== +file-loader@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" + integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== dependencies: loader-utils "^2.0.0" schema-utils "^3.0.0" @@ -7582,17 +6427,10 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -filelist@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -filesize@^8.0.6: - version "8.0.7" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" - integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== +filesize@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" + integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== fill-range@^4.0.0: version "4.0.0" @@ -7611,19 +6449,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -7637,6 +6462,15 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + find-cache-dir@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" @@ -7646,14 +6480,7 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -7661,13 +6488,19 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" flat-cache@^3.0.4: version "3.0.4" @@ -7682,64 +6515,56 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + follow-redirects@^1.0.0: version "1.15.5" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -fork-ts-checker-webpack-plugin@^6.5.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" - integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== - dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - chalk "^4.1.0" - chokidar "^3.4.2" - cosmiconfig "^6.0.0" - deepmerge "^4.2.2" - fs-extra "^9.0.0" - glob "^7.1.6" - memfs "^3.1.2" +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin@4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" + integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== + dependencies: + "@babel/code-frame" "^7.5.5" + chalk "^2.4.1" + micromatch "^3.1.10" minimatch "^3.0.4" - schema-utils "2.7.0" - semver "^7.3.2" + semver "^5.6.0" tapable "^1.0.0" + worker-rpc "^0.1.0" -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.8" + combined-stream "^1.0.6" mime-types "^2.1.12" -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -7750,11 +6575,6 @@ foundation-sites@^6.4.3: resolved "https://registry.yarnpkg.com/foundation-sites/-/foundation-sites-6.6.3.tgz#8ca5f246357db69e6a0e73351ce06aa8acce6540" integrity sha512-8X93wUAmUg1HhVv8uWMWnwoBLSQWSmFImJencneIZDctswn724Bq/MV1cbPZN/GFWGOB/9ngoQHztfzd4+ovCg== -fraction.js@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" - integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== - fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -7767,16 +6587,33 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-extra@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" + jsonfile "^4.0.0" + universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.0.1: +fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -7793,10 +6630,15 @@ fs-minipass@^2.0.0: dependencies: minipass "^3.0.0" -fs-monkey@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" - integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" fs.realpath@^1.0.0: version "1.0.0" @@ -7811,16 +6653,16 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -fsevents@~2.3.1: +fsevents@^2.1.2, fsevents@^2.1.3, fsevents@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +fsevents@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -7831,22 +6673,12 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gensync@^1.0.0-beta.2: +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -7856,7 +6688,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -7865,17 +6697,6 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" @@ -7893,25 +6714,30 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-symbol-description@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" - integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== - dependencies: - call-bind "^1.0.5" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -7920,36 +6746,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^10.3.10: - version "10.3.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.15.tgz#e72bc61bc3038c90605f5dd48543dc67aaf3b50d" - integrity sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.6" - minimatch "^9.0.1" - minipass "^7.0.4" - path-scurry "^1.11.0" - glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -7962,7 +6765,7 @@ glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^2.0.0: +global-modules@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== @@ -7991,25 +6794,24 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== dependencies: - type-fest "^0.20.2" + type-fest "^0.8.1" -globalthis@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" - integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== +globals@^13.6.0: + version "13.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" + integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== dependencies: - define-properties "^1.2.1" - gopd "^1.0.1" + type-fest "^0.20.2" -globby@^11.0.1: - version "11.0.3" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" - integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== +globby@11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" @@ -8018,16 +6820,16 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" -globby@^11.0.4, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== +globby@^11.0.1: + version "11.0.3" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" + integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" slash "^3.0.0" globby@^6.1.0: @@ -8041,27 +6843,28 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== -graceful-fs@^4.2.11, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" gzip-size@^6.0.0: version "6.0.0" @@ -8075,6 +6878,19 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" @@ -8085,11 +6901,6 @@ has-bigints@^1.0.1: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== -has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -8100,35 +6911,11 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1, has-proto@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== -has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -8160,13 +6947,30 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.3: +has@^1.0.0, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + hasown@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" @@ -8174,18 +6978,16 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" -hasown@^2.0.1, hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + history@^4.10.1, history@^4.7.2, history@^4.9.0: version "4.10.1" resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" @@ -8198,6 +7000,15 @@ history@^4.10.1, history@^4.7.2, history@^4.9.0: tiny-warning "^1.0.0" value-equal "^1.0.1" +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + hoist-non-react-statics@^2.5.0: version "2.5.5" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" @@ -8215,6 +7026,11 @@ hoopy@^0.1.4: resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -8225,6 +7041,16 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -8232,54 +7058,55 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" -html-entities@^1.3.1: +html-entities@^1.2.1, html-entities@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== -html-entities@^2.1.0, html-entities@^2.3.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" - integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" he "^1.2.0" - param-case "^3.0.4" + param-case "^3.0.3" relateurl "^0.2.7" - terser "^5.10.0" + terser "^4.6.3" -html-webpack-plugin@^5.5.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" - integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== - dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" +html-webpack-plugin@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" + integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== + dependencies: + "@types/html-minifier-terser" "^5.0.0" + "@types/tapable" "^1.0.5" + "@types/webpack" "^4.41.8" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== +htmlparser2@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" http-deceiver@^1.2.7: version "1.2.7" @@ -8297,17 +7124,6 @@ http-errors@1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" @@ -8334,15 +7150,6 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" @@ -8353,18 +7160,7 @@ http-proxy-middleware@0.19.1: lodash "^4.17.11" micromatch "^3.1.10" -http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== - dependencies: - "@types/http-proxy" "^1.17.8" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.17.0, http-proxy@^1.18.1: +http-proxy@^1.17.0: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== @@ -8373,13 +7169,24 @@ http-proxy@^1.17.0, http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: - agent-base "6" - debug "4" + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== human-signals@^2.1.0: version "2.1.0" @@ -8400,46 +7207,61 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + postcss "^7.0.14" -idb@^7.0.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" - integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== - -identity-obj-proxy@^3.0.0: +identity-obj-proxy@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= dependencies: harmony-reflect "^1.4.6" +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + ignore@^5.1.4: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -ignore@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== +immer@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" + integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== -immer@^9.0.7: - version "9.0.21" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" - integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" -import-fresh@^3.1.0, import-fresh@^3.2.1: +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -8447,6 +7269,13 @@ import-fresh@^3.1.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -8473,7 +7302,12 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infer-owner@^1.0.4: +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -8486,11 +7320,16 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -8509,13 +7348,13 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -internal-slot@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" - integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== dependencies: - es-errors "^1.3.0" - hasown "^2.0.0" + get-intrinsic "^1.1.0" + has "^1.0.3" side-channel "^1.0.4" "internmap@1 - 2": @@ -8523,10 +7362,10 @@ internal-slot@^1.0.7: resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== -interpret@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" - integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== invariant@^2.2.4: version "2.2.4" @@ -8550,10 +7389,10 @@ ipaddr.js@1.9.1, ipaddr.js@^1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= is-absolute-url@^3.0.3: version "3.0.3" @@ -8581,25 +7420,15 @@ is-arguments@^1.0.4: dependencies: call-bind "^1.0.0" -is-array-buffer@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" - integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-async-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" - integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== - dependencies: - has-tostringtag "^1.0.0" +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-bigint@^1.0.1: version "1.0.2" @@ -8632,30 +7461,44 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.3, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - is-callable@^1.1.4, is-callable@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== -is-core-module@^2.13.0, is-core-module@^2.13.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: - hasown "^2.0.0" + ci-info "^2.0.0" -is-core-module@^2.2.0: +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.0.0, is-core-module@^2.2.0: version "2.4.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== dependencies: has "^1.0.3" +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -8670,25 +7513,11 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-data-view@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" - integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== - dependencies: - is-typed-array "^1.1.13" - is-date-object@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== -is-date-object@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -8707,7 +7536,12 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-docker@^2.0.0, is-docker@^2.1.1: +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== @@ -8729,13 +7563,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finalizationregistry@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" - integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== - dependencies: - call-bind "^1.0.2" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -8751,13 +7578,6 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-generator-function@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -8772,18 +7592,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" - integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== - is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -8794,11 +7602,6 @@ is-negative-zero@^2.0.1: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== -is-negative-zero@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" - integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== - is-number-object@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" @@ -8821,6 +7624,11 @@ is-obj@^1.0.1: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + is-path-cwd@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" @@ -8840,15 +7648,10 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -8857,7 +7660,7 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-potential-custom-element-name@^1.0.1: +is-potential-custom-element-name@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== @@ -8870,36 +7673,21 @@ is-regex@^1.0.4, is-regex@^1.1.2: call-bind "^1.0.2" has-symbols "^1.0.2" -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= -is-root@^2.1.0: +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -is-set@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" - integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== - -is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" - integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== - dependencies: - call-bind "^1.0.7" - is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -8915,13 +7703,6 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== -is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" @@ -8929,38 +7710,11 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" - integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== - dependencies: - which-typed-array "^1.1.14" - -is-typedarray@^1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-weakmap@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" - integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-weakset@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007" - integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ== - dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -8971,7 +7725,7 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.2.0: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -8983,16 +7737,11 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -9018,6 +7767,11 @@ isomorphic-fetch@^3.0.0: node-fetch "^2.6.1" whatwg-fetch "^3.4.1" +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" @@ -9028,7 +7782,17 @@ istanbul-lib-coverage@^3.2.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-instrument@^5.0.4: version "5.2.1" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== @@ -9068,6 +7832,14 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + istanbul-reports@^3.1.3: version "3.1.6" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" @@ -9076,44 +7848,14 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== - dependencies: - define-properties "^1.2.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.4" - set-function-name "^2.0.1" - -jackspeak@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jake@^10.8.5: - version "10.9.1" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.1.tgz#8dc96b7fcc41cb19aa502af506da4e1d56f5e62b" - integrity sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" - -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== dependencies: - "@jest/types" "^27.5.1" - execa "^5.0.0" - throat "^6.0.1" + "@jest/types" "^26.6.2" + execa "^4.0.0" + throat "^5.0.0" jest-changed-files@^29.7.0: version "29.7.0" @@ -9124,30 +7866,32 @@ jest-changed-files@^29.7.0: jest-util "^29.7.0" p-limit "^3.1.0" -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== +jest-circus@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-26.6.0.tgz#7d9647b2e7f921181869faae1f90a2629fd70705" + integrity sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng== dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.0" + "@jest/test-result" "^26.6.0" + "@jest/types" "^26.6.0" + "@types/babel__traverse" "^7.0.4" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.5.1" + expect "^26.6.0" is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" + jest-each "^26.6.0" + jest-matcher-utils "^26.6.0" + jest-message-util "^26.6.0" + jest-runner "^26.6.0" + jest-runtime "^26.6.0" + jest-snapshot "^26.6.0" + jest-util "^26.6.0" + pretty-format "^26.6.0" + stack-utils "^2.0.2" + throat "^5.0.0" jest-circus@^29.7.0: version "29.7.0" @@ -9175,23 +7919,24 @@ jest-circus@^29.7.0: slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== +jest-cli@^26.6.0: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.2.9" + graceful-fs "^4.2.4" import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" + is-ci "^2.0.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" prompts "^2.0.1" - yargs "^16.2.0" + yargs "^15.4.1" jest-cli@^29.7.0: version "29.7.0" @@ -9210,35 +7955,29 @@ jest-cli@^29.7.0: jest-validate "^29.7.0" yargs "^17.3.1" -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" chalk "^4.0.0" - ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.1" - graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^27.5.1" - slash "^3.0.0" - strip-json-comments "^3.1.1" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + micromatch "^4.0.2" + pretty-format "^26.6.2" jest-config@^29.7.0: version "29.7.0" @@ -9268,7 +8007,7 @@ jest-config@^29.7.0: slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@^26.0.0: +jest-diff@^26.0.0, jest-diff@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== @@ -9278,16 +8017,6 @@ jest-diff@^26.0.0: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" @@ -9298,10 +8027,10 @@ jest-diff@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== dependencies: detect-newline "^3.0.0" @@ -9312,16 +8041,16 @@ jest-docblock@^29.7.0: dependencies: detect-newline "^3.0.0" -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== +jest-each@^26.6.0, jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^26.6.2" chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" jest-each@^29.7.0: version "29.7.0" @@ -9334,30 +8063,30 @@ jest-each@^29.7.0: jest-util "^29.7.0" pretty-format "^29.7.0" -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" - -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" + +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" + jest-mock "^26.6.2" + jest-util "^26.6.2" jest-environment-node@^29.7.0: version "29.7.0" @@ -9376,35 +8105,31 @@ jest-get-type@^26.3.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - jest-get-type@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^26.6.2" "@types/graceful-fs" "^4.1.2" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - micromatch "^4.0.4" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + micromatch "^4.0.2" + sane "^4.0.3" walker "^1.0.7" optionalDependencies: - fsevents "^2.3.2" + fsevents "^2.1.2" jest-haste-map@^29.7.0: version "29.7.0" @@ -9425,36 +8150,37 @@ jest-haste-map@^29.7.0: optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^27.5.1" + expect "^26.6.2" is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" - -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== - dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" + throat "^5.0.0" + +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== + dependencies: + jest-get-type "^26.3.0" + pretty-format "^26.6.2" jest-leak-detector@^29.7.0: version "29.7.0" @@ -9464,15 +8190,15 @@ jest-leak-detector@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-matcher-utils@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== +jest-matcher-utils@^26.6.0, jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== dependencies: chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" jest-matcher-utils@^29.7.0: version "29.7.0" @@ -9484,35 +8210,20 @@ jest-matcher-utils@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-message-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" - integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== +jest-message-util@^26.6.0, jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.3" + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.6.2" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^28.1.3" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" slash "^3.0.0" - stack-utils "^2.0.3" + stack-utils "^2.0.2" jest-message-util@^29.7.0: version "29.7.0" @@ -9529,12 +8240,12 @@ jest-message-util@^29.7.0: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^26.6.2" "@types/node" "*" jest-mock@^29.7.0: @@ -9551,29 +8262,24 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-regex-util@^28.0.0: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" - integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== jest-regex-util@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" jest-resolve-dependencies@^29.7.0: version "29.7.0" @@ -9583,20 +8289,32 @@ jest-resolve-dependencies@^29.7.0: jest-regex-util "^29.6.3" jest-snapshot "^29.7.0" -jest-resolve@^27.4.2, jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== +jest-resolve@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.0.tgz#070fe7159af87b03e50f52ea5e17ee95bbee40e1" + integrity sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^26.6.0" chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" + graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" - resolve "^1.20.0" - resolve.exports "^1.1.0" + jest-util "^26.6.0" + read-pkg-up "^7.0.1" + resolve "^1.17.0" + slash "^3.0.0" + +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" + read-pkg-up "^7.0.1" + resolve "^1.18.1" slash "^3.0.0" jest-resolve@^29.7.0: @@ -9614,32 +8332,31 @@ jest-resolve@^29.7.0: resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== +jest-runner@^26.6.0, jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" - emittery "^0.8.1" - graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" + emittery "^0.7.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" source-map-support "^0.5.6" - throat "^6.0.1" + throat "^5.0.0" jest-runner@^29.7.0: version "29.7.0" @@ -9668,33 +8385,38 @@ jest-runner@^29.7.0: p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" +jest-runtime@^26.6.0, jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/yargs" "^15.0.0" chalk "^4.0.0" - cjs-module-lexer "^1.0.0" + cjs-module-lexer "^0.6.0" collect-v8-coverage "^1.0.0" - execa "^5.0.0" + exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" slash "^3.0.0" strip-bom "^4.0.0" + yargs "^15.4.1" jest-runtime@^29.7.0: version "29.7.0" @@ -9724,40 +8446,34 @@ jest-runtime@^29.7.0: slash "^3.0.0" strip-bom "^4.0.0" -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== dependencies: "@types/node" "*" - graceful-fs "^4.2.9" + graceful-fs "^4.2.4" -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== +jest-snapshot@^26.6.0, jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== dependencies: - "@babel/core" "^7.7.2" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/types" "^26.6.2" "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" + "@types/prettier" "^2.0.0" chalk "^4.0.0" - expect "^27.5.1" - graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" + expect "^26.6.2" + graceful-fs "^4.2.4" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" natural-compare "^1.4.0" - pretty-format "^27.5.1" + pretty-format "^26.6.2" semver "^7.3.2" jest-snapshot@^29.7.0: @@ -9786,29 +8502,17 @@ jest-snapshot@^29.7.0: pretty-format "^29.7.0" semver "^7.5.3" -jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== +jest-util@^26.6.0, jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" jest-util@^29.0.0, jest-util@^29.7.0: version "29.7.0" @@ -9822,17 +8526,17 @@ jest-util@^29.0.0, jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== dependencies: - "@jest/types" "^27.5.1" - camelcase "^6.2.0" + "@jest/types" "^26.6.2" + camelcase "^6.0.0" chalk "^4.0.0" - jest-get-type "^27.5.1" + jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^27.5.1" + pretty-format "^26.6.2" jest-validate@^29.7.0: version "29.7.0" @@ -9846,44 +8550,30 @@ jest-validate@^29.7.0: leven "^3.1.0" pretty-format "^29.7.0" -jest-watch-typeahead@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz#b4a6826dfb9c9420da2f7bc900de59dad11266a9" - integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== +jest-watch-typeahead@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz#45221b86bb6710b7e97baaa1640ae24a07785e63" + integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg== dependencies: ansi-escapes "^4.3.1" chalk "^4.0.0" - jest-regex-util "^28.0.0" - jest-watcher "^28.0.0" - slash "^4.0.0" - string-length "^5.0.1" - strip-ansi "^7.0.1" - -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== - dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^27.5.1" + jest-regex-util "^26.0.0" + jest-watcher "^26.3.0" + slash "^3.0.0" string-length "^4.0.1" + strip-ansi "^6.0.0" -jest-watcher@^28.0.0: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" - integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== +jest-watcher@^26.3.0, jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.10.2" - jest-util "^28.1.3" + jest-util "^26.6.2" string-length "^4.0.1" jest-watcher@^29.7.0: @@ -9900,7 +8590,15 @@ jest-watcher@^29.7.0: jest-util "^29.7.0" string-length "^4.0.1" -jest-worker@^26.2.1: +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^26.5.0, jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== @@ -9909,24 +8607,6 @@ jest-worker@^26.2.1: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^28.0.2: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" - integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest-worker@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" @@ -9937,14 +8617,14 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.4.3: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== +jest@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.0.tgz#546b25a1d8c888569dbbe93cae131748086a4a25" + integrity sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA== dependencies: - "@jest/core" "^27.5.1" + "@jest/core" "^26.6.0" import-local "^3.0.2" - jest-cli "^27.5.1" + jest-cli "^26.6.0" jest@^29.7.0: version "29.7.0" @@ -9956,11 +8636,6 @@ jest@^29.7.0: import-local "^3.0.2" jest-cli "^29.7.0" -jiti@^1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" - integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -9974,20 +8649,18 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== +jsdom@^16.4.0: + version "16.5.3" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.5.3.tgz#13a755b3950eb938b4482c407238ddf16f0d2136" + integrity sha512-Qj1H+PEvUsOtdPJ056ewXM4UJPCi4hhLA8wpiz9F2YvsRBhuFsXxtrIFAgGBDynQA9isAMGE91PfUYbdMPXuTA== dependencies: abab "^2.0.5" - acorn "^8.2.4" + acorn "^8.1.0" acorn-globals "^6.0.0" cssom "^0.4.4" cssstyle "^2.3.0" @@ -9995,13 +8668,12 @@ jsdom@^16.6.0: decimal.js "^10.2.1" domexception "^2.0.1" escodegen "^2.0.0" - form-data "^3.0.0" html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" + is-potential-custom-element-name "^1.0.0" nwsapi "^2.2.0" parse5 "6.0.1" + request "^2.88.2" + request-promise-native "^1.0.9" saxes "^5.0.1" symbol-tree "^3.2.4" tough-cookie "^4.0.0" @@ -10011,7 +8683,7 @@ jsdom@^16.6.0: whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" whatwg-url "^8.5.0" - ws "^7.4.6" + ws "^7.4.4" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -10024,7 +8696,12 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -10039,16 +8716,21 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + json2mq@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" @@ -10061,10 +8743,10 @@ json3@^3.3.3: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== dependencies: minimist "^1.2.0" @@ -10075,11 +8757,18 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" -json5@^2.2.0, json5@^2.2.3: +json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -10089,12 +8778,17 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonpointer@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" - integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" -"jsx-ast-utils@^2.4.1 || ^3.0.0": +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== @@ -10102,16 +8796,6 @@ jsonpointer@^5.0.0: array-includes "^3.1.2" object.assign "^4.1.2" -jsx-ast-utils@^3.3.5: - version "3.3.5" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" - integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - object.assign "^4.1.4" - object.values "^1.1.6" - killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -10151,30 +8835,25 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -klona@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" - integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== - -language-subtag-registry@^0.3.20: - version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== -language-tags@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" - integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= dependencies: - language-subtag-registry "^0.3.20" + language-subtag-registry "~0.3.2" -launch-editor@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" - integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== dependencies: - picocolors "^1.0.0" - shell-quote "^1.8.1" + lodash "^4.17.5" + webpack-sources "^1.1.0" leven@^3.1.0: version "3.1.0" @@ -10197,25 +8876,20 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lilconfig@^2.0.3, lilconfig@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - -lilconfig@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" - integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== - lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" loader-utils@^2.0.0, loader-utils@^2.0.4: version "2.0.4" @@ -10224,12 +8898,15 @@ loader-utils@^2.0.0, loader-utils@^2.0.4: dependencies: big.js "^5.2.2" emojis-list "^3.0.0" - json5 "^2.1.2" + json5 "^1.0.1" -loader-utils@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" locate-path@^3.0.0: version "3.0.0" @@ -10246,18 +8923,21 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - lodash-es@^4.2.1: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -10268,22 +8948,32 @@ lodash.memoize@4.x, lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.2.1, lodash@^4.6.1, lodash@^4.7.0: +"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.6.1, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -10307,11 +8997,6 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" -lru-cache@^10.2.0: - version "10.2.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" - integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -10338,7 +9023,15 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.4" -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -10376,6 +9069,15 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" @@ -10391,13 +9093,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -memfs@^3.1.2, memfs@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== - dependencies: - fs-monkey "^1.0.4" - memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -10424,7 +9119,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0, merge2@^1.4.1: +merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -10434,6 +9129,11 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -10461,7 +9161,7 @@ micromatch@^4.0.0, micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.2.3" -micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -10469,30 +9169,26 @@ micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + mime-db@1.47.0, "mime-db@>= 1.43.0 < 2": version "1.47.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.30" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== dependencies: mime-db "1.47.0" -mime-types@^2.1.31, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -10528,6 +9224,16 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" +mini-css-extract-plugin@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" + integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + mini-css-extract-plugin@^1.3.9: version "1.6.0" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.0.tgz#b4db2525af2624899ed64a23b0016e0036411893" @@ -10537,48 +9243,24 @@ mini-css-extract-plugin@^1.3.9: schema-utils "^3.0.0" webpack-sources "^1.1.0" -mini-css-extract-plugin@^2.4.5: - version "2.9.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz#c73a1327ccf466f69026ac22a8e8fd707b78a235" - integrity sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA== - dependencies: - schema-utils "^4.0.0" - tapable "^2.2.1" - -minimalistic-assert@^1.0.0: +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@^3.0.4: +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.5, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.1: - version "9.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" - integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -10611,11 +9293,6 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4: - version "7.1.1" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.1.tgz#f7f85aff59aa22f110b20e27692465cf3bf89481" - integrity sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA== - minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -10624,6 +9301,22 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -10632,7 +9325,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -10663,6 +9356,18 @@ moment@2.29.4, "moment@>= 2.9.0", moment@^2.29.4: resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -10678,7 +9383,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -10696,32 +9401,15 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" - -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - nan@^2.12.1: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== +nanoid@^3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== nanomatch@^1.2.9: version "1.2.13" @@ -10740,10 +9428,12 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== +native-url@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" + integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== + dependencies: + querystring "^0.2.0" natural-compare@^1.4.0: version "1.4.0" @@ -10755,16 +9445,16 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: +neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -10798,22 +9488,58 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== -node-forge@^1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-releases@^1.1.71: +node-notifier@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" + integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== + dependencies: + growly "^1.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" + shellwords "^0.1.1" + uuid "^8.3.0" + which "^2.0.2" + +node-releases@^1.1.61, node-releases@^1.1.71: version "1.1.71" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== @@ -10823,10 +9549,15 @@ node-releases@^2.0.13: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" normalize-path@^2.1.1: version "2.1.1" @@ -10845,10 +9576,20 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== npm-run-path@^2.0.0: version "2.0.2" @@ -10857,7 +9598,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.1: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -10871,19 +9612,22 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -object-assign@^4.0.1, object-assign@^4.1.1: +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -10897,16 +9641,6 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - -object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - object-inspect@^1.9.0: version "1.10.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" @@ -10942,36 +9676,27 @@ object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.assign@^4.1.4, object.assign@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" - integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== +object.entries@^1.1.0, object.entries@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" -object.fromentries@^2.0.7: - version "2.0.8" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" - integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== +object.fromentries@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" + integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" -object.getownpropertydescriptors@^2.1.0: +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== @@ -10980,24 +9705,6 @@ object.getownpropertydescriptors@^2.1.0: define-properties "^1.1.3" es-abstract "^1.18.0-next.2" -object.groupby@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" - integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - -object.hasown@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" - integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== - dependencies: - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -11005,7 +9712,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0: +object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== @@ -11015,27 +9722,11 @@ object.values@^1.1.0: es-abstract "^1.18.0-next.2" has "^1.0.3" -object.values@^1.1.6, object.values@^1.1.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" - integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -11055,21 +9746,20 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.2: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@^8.0.9, open@^8.4.0: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== +open@^7.0.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" + is-docker "^2.0.0" + is-wsl "^2.1.1" opener@^1.5.2: version "1.5.2" @@ -11083,6 +9773,14 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" +optimize-css-assets-webpack-plugin@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" + integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -11095,17 +9793,17 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.5" + word-wrap "^1.2.3" original@^1.0.0: version "1.0.2" @@ -11114,11 +9812,28 @@ original@^1.0.0: dependencies: url-parse "^1.4.3" +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -11133,6 +9848,13 @@ p-limit@^3.0.2, p-limit@^3.1.0: dependencies: yocto-queue "^0.1.0" +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -11147,13 +9869,6 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -11173,20 +9888,31 @@ p-retry@^3.0.1: dependencies: retry "^0.12.0" -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -param-case@^3.0.4: +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== @@ -11201,6 +9927,32 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -11234,6 +9986,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -11279,14 +10036,6 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.11.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -11299,21 +10048,34 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -11329,10 +10091,10 @@ picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^2.0.0, pify@^2.3.0: +pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^4.0.1: version "4.0.1" @@ -11363,6 +10125,13 @@ pirates@^4.0.4: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -11377,13 +10146,20 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@^3.1.0: +pkg-up@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: find-up "^3.0.0" +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + popper.js@^1.16.0: version "1.16.1" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" @@ -11411,527 +10187,602 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== - -postcss-attribute-case-insensitive@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" - integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== dependencies: - postcss-selector-parser "^6.0.10" - -postcss-browser-comments@^4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz#bcfc86134df5807f5d3c0eefa191d42136b5e72a" - integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" + postcss "^7" -postcss-clamp@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" - integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== dependencies: - postcss-value-parser "^4.2.0" + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" -postcss-color-functional-notation@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" - integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== dependencies: - postcss-value-parser "^4.2.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -postcss-color-hex-alpha@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" - integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== dependencies: - postcss-value-parser "^4.2.0" + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" -postcss-color-rebeccapurple@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" - integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== dependencies: - postcss-value-parser "^4.2.0" + postcss "^7.0.14" + postcss-values-parser "^2.0.1" -postcss-colormin@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" - integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -postcss-convert-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" - integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -postcss-custom-media@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" - integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== dependencies: - postcss-value-parser "^4.2.0" + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-custom-properties@^12.1.10: - version "12.1.11" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz#d14bb9b3989ac4d40aaa0e110b43be67ac7845cf" - integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== dependencies: - postcss-value-parser "^4.2.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-custom-selectors@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" - integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== dependencies: - postcss-selector-parser "^6.0.4" + postcss "^7.0.14" -postcss-dir-pseudo-class@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" - integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== dependencies: - postcss-selector-parser "^6.0.10" + postcss "^7.0.17" + postcss-values-parser "^2.0.1" -postcss-discard-comments@^5.1.2: +postcss-custom-selectors@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" -postcss-double-position-gradients@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" - integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" + postcss "^7.0.0" -postcss-env-function@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" - integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== dependencies: - postcss-value-parser "^4.2.0" + postcss "^7.0.0" -postcss-flexbugs-fixes@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" - integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" -postcss-focus-visible@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" - integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== dependencies: - postcss-selector-parser "^6.0.9" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -postcss-focus-within@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" - integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== +postcss-flexbugs-fixes@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== dependencies: - postcss-selector-parser "^6.0.9" + postcss "^7.0.26" -postcss-font-variant@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" - integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" -postcss-gap-properties@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" - integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" -postcss-image-set-function@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" - integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== dependencies: - postcss-value-parser "^4.2.0" + postcss "^7.0.2" -postcss-import@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" - integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" + postcss "^7.0.2" -postcss-initial@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" - integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -postcss-js@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" - integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== +postcss-initial@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" + integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== dependencies: - camelcase-css "^2.0.1" + postcss "^7.0.2" -postcss-lab-function@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" - integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -postcss-load-config@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" - integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== dependencies: - lilconfig "^3.0.0" - yaml "^2.3.4" + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" -postcss-loader@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" - integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== dependencies: - cosmiconfig "^7.0.0" - klona "^2.0.5" - semver "^7.3.5" + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" -postcss-logical@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" - integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" -postcss-media-minmax@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" - integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" -postcss-merge-longhand@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" - integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.1" + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" -postcss-merge-rules@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" - integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== dependencies: - browserslist "^4.21.4" + browserslist "^4.0.0" caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== dependencies: - postcss-value-parser "^4.2.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-minify-params@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" - integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== dependencies: - browserslist "^4.21.4" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== dependencies: - postcss-selector-parser "^6.0.5" + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" -postcss-modules-extract-imports@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" - integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" -postcss-modules-local-by-default@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" - integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== +postcss-modules-local-by-default@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== dependencies: - icss-utils "^5.0.0" + icss-utils "^4.1.1" + postcss "^7.0.32" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-scope@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" - integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== dependencies: - postcss-selector-parser "^6.0.4" + icss-utils "^4.0.0" + postcss "^7.0.6" -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== dependencies: - icss-utils "^5.0.0" + postcss "^7.0.2" -postcss-nested@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" - integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== dependencies: - postcss-selector-parser "^6.0.11" + postcss "^7.0.0" -postcss-nesting@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be" - integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== dependencies: - "@csstools/selector-specificity" "^2.0.0" - postcss-selector-parser "^6.0.10" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== dependencies: - postcss-value-parser "^4.2.0" + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== dependencies: - postcss-value-parser "^4.2.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== dependencies: - postcss-value-parser "^4.2.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== dependencies: - postcss-value-parser "^4.2.0" + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== dependencies: - postcss-value-parser "^4.2.0" + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-normalize-unicode@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" - integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== dependencies: - postcss-value-parser "^4.2.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-normalize@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-10.0.1.tgz#464692676b52792a06b06880a176279216540dd7" - integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== dependencies: - "@csstools/normalize.css" "*" - postcss-browser-comments "^4" - sanitize.css "*" + postcss "^7.0.2" -postcss-opacity-percentage@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz#5b89b35551a556e20c5d23eb5260fbfcf5245da6" - integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -postcss-overflow-shorthand@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" - integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== dependencies: - postcss-value-parser "^4.2.0" + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" -postcss-page-break@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" - integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" -postcss-place@^7.0.5: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" - integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== dependencies: - postcss-value-parser "^4.2.0" + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-preset-env@^7.0.1: - version "7.8.3" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz#2a50f5e612c3149cc7af75634e202a5b2ad4f1e2" - integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== - dependencies: - "@csstools/postcss-cascade-layers" "^1.1.1" - "@csstools/postcss-color-function" "^1.1.1" - "@csstools/postcss-font-format-keywords" "^1.0.1" - "@csstools/postcss-hwb-function" "^1.0.2" - "@csstools/postcss-ic-unit" "^1.0.1" - "@csstools/postcss-is-pseudo-class" "^2.0.7" - "@csstools/postcss-nested-calc" "^1.0.0" - "@csstools/postcss-normalize-display-values" "^1.0.1" - "@csstools/postcss-oklab-function" "^1.1.1" - "@csstools/postcss-progressive-custom-properties" "^1.3.0" - "@csstools/postcss-stepped-value-functions" "^1.0.1" - "@csstools/postcss-text-decoration-shorthand" "^1.0.0" - "@csstools/postcss-trigonometric-functions" "^1.0.2" - "@csstools/postcss-unset-value" "^1.0.2" - autoprefixer "^10.4.13" - browserslist "^4.21.4" - css-blank-pseudo "^3.0.3" - css-has-pseudo "^3.0.4" - css-prefers-color-scheme "^6.0.3" - cssdb "^7.1.0" - postcss-attribute-case-insensitive "^5.0.2" - postcss-clamp "^4.1.0" - postcss-color-functional-notation "^4.2.4" - postcss-color-hex-alpha "^8.0.4" - postcss-color-rebeccapurple "^7.1.1" - postcss-custom-media "^8.0.2" - postcss-custom-properties "^12.1.10" - postcss-custom-selectors "^6.0.3" - postcss-dir-pseudo-class "^6.0.5" - postcss-double-position-gradients "^3.1.2" - postcss-env-function "^4.0.6" - postcss-focus-visible "^6.0.4" - postcss-focus-within "^5.0.4" - postcss-font-variant "^5.0.0" - postcss-gap-properties "^3.0.5" - postcss-image-set-function "^4.0.7" - postcss-initial "^4.0.1" - postcss-lab-function "^4.2.1" - postcss-logical "^5.0.4" - postcss-media-minmax "^5.0.0" - postcss-nesting "^10.2.0" - postcss-opacity-percentage "^1.1.2" - postcss-overflow-shorthand "^3.0.4" - postcss-page-break "^3.0.4" - postcss-place "^7.0.5" - postcss-pseudo-class-any-link "^7.1.6" - postcss-replace-overflow-wrap "^4.0.0" - postcss-selector-not "^6.0.1" - postcss-value-parser "^4.2.0" - -postcss-pseudo-class-any-link@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" - integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== - dependencies: - postcss-selector-parser "^6.0.10" - -postcss-reduce-initial@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" - integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" + postcss "^7.0.2" -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== +postcss-safe-parser@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz#459dd27df6bc2ba64608824ba39e45dacf5e852d" + integrity sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ== dependencies: - postcss-value-parser "^4.2.0" + postcss "^8.1.0" -postcss-replace-overflow-wrap@^4.0.0: +postcss-selector-matches@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" - integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" -postcss-selector-not@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" - integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== dependencies: - postcss-selector-parser "^6.0.10" + balanced-match "^1.0.0" + postcss "^7.0.2" -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.16" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" - integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" -postcss-selector-parser@^6.0.2: +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.6" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== @@ -11939,47 +10790,69 @@ postcss-selector-parser@^6.0.2: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== +postcss-svgo@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" + integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== dependencies: - postcss-selector-parser "^6.0.5" + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" -postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.1.0: +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@^7.0.35: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== dependencies: - picocolors "^0.2.1" + chalk "^2.4.2" source-map "^0.6.1" + supports-color "^6.1.0" -postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.4: - version "8.4.38" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.2.0" + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^8.1.0: + version "8.2.15" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65" + integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q== + dependencies: + colorette "^1.2.2" + nanoid "^3.1.23" + source-map "^0.6.1" prelude-ls@^1.2.1: version "1.2.1" @@ -11991,20 +10864,25 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +pretty-bytes@^5.3.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== dependencies: lodash "^4.17.20" - renderkid "^3.0.0" + renderkid "^2.0.4" -pretty-format@^26.0.0, pretty-format@^26.6.2: +pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== @@ -12014,25 +10892,6 @@ pretty-format@^26.0.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-format@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" - integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== - dependencies: - "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^18.0.0" - pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -12052,6 +10911,11 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -12064,18 +10928,18 @@ promise@^8.1.0: dependencies: asap "~2.0.6" -prompts@^2.0.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" - integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== +prompts@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== dependencies: kleur "^3.0.3" sisteransi "^1.0.5" -prompts@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== +prompts@^2.0.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" + integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== dependencies: kleur "^3.0.3" sisteransi "^1.0.5" @@ -12106,24 +10970,36 @@ proxy-addr@~2.0.5: forwarded "~0.1.2" ipaddr.js "1.9.1" -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -psl@^1.1.33: +psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -12132,11 +11008,25 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -12157,23 +11047,39 @@ qrcode.react@^3.1.0: resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.1.0.tgz#5c91ddc0340f768316fbdb8fff2765134c2aecd8" integrity sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q== -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -12191,13 +11097,21 @@ raf@^3.4.1: dependencies: performance-now "^2.1.0" -randombytes@^2.1.0: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -12213,16 +11127,6 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - raw-loader@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" @@ -12948,17 +11852,17 @@ rc-virtual-list@^3.4.13, rc-virtual-list@^3.4.8: rc-resize-observer "^1.0.0" rc-util "^5.15.0" -react-app-polyfill@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7" - integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== +react-app-polyfill@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz#a0bea50f078b8a082970a9d853dc34b6dcc6a3cf" + integrity sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA== dependencies: - core-js "^3.19.2" + core-js "^3.6.5" object-assign "^4.1.1" promise "^8.1.0" raf "^3.4.1" - regenerator-runtime "^0.13.9" - whatwg-fetch "^3.6.2" + regenerator-runtime "^0.13.7" + whatwg-fetch "^3.4.1" react-autocomplete@1.8.1: version "1.8.1" @@ -12973,35 +11877,35 @@ react-deep-force-update@^2.1.1: resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-2.1.3.tgz#740612322e617bcced38f61794a4af75dc3d98e7" integrity sha512-lqD4eHKVuB65RyO/hGbEST53E2/GPbcIPcFYyeW/p4vNngtH4G7jnKGlU6u1OqrFo0uNfIvwuBOg98IbLHlNEA== -react-dev-utils@^12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" - integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== - dependencies: - "@babel/code-frame" "^7.16.0" - address "^1.1.2" - browserslist "^4.18.1" - chalk "^4.1.2" - cross-spawn "^7.0.3" - detect-port-alt "^1.1.6" - escape-string-regexp "^4.0.0" - filesize "^8.0.6" - find-up "^5.0.0" - fork-ts-checker-webpack-plugin "^6.5.0" - global-modules "^2.0.0" - globby "^11.0.4" - gzip-size "^6.0.0" - immer "^9.0.7" - is-root "^2.1.0" - loader-utils "^3.2.0" - open "^8.4.0" - pkg-up "^3.1.0" - prompts "^2.4.2" - react-error-overlay "^6.0.11" - recursive-readdir "^2.2.2" - shell-quote "^1.7.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" +react-dev-utils@^11.0.3: + version "11.0.4" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a" + integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== + dependencies: + "@babel/code-frame" "7.10.4" + address "1.1.2" + browserslist "4.14.2" + chalk "2.4.2" + cross-spawn "7.0.3" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.1.0" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "4.1.6" + global-modules "2.0.0" + globby "11.0.1" + gzip-size "5.1.1" + immer "8.0.1" + is-root "2.1.0" + loader-utils "2.0.0" + open "^7.0.2" + pkg-up "3.1.0" + prompts "2.4.0" + react-error-overlay "^6.0.9" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" react-dom@^17.0.1: version "17.0.2" @@ -13012,10 +11916,10 @@ react-dom@^17.0.1: object-assign "^4.1.1" scheduler "^0.20.2" -react-error-overlay@^6.0.11: - version "6.0.11" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" - integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== +react-error-overlay@^6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" + integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== react-fast-compare@^3.1.1: version "3.2.0" @@ -13105,10 +12009,10 @@ react-redux@^5.0.6: react-is "^16.6.0" react-lifecycles-compat "^3.0.0" -react-refresh@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" - integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== +react-refresh@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" + integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== react-resize-detector@^8.0.4: version "8.1.0" @@ -13171,60 +12075,71 @@ react-router@^4.3.1: prop-types "^15.6.1" warning "^4.0.1" -react-scripts@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003" - integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== - dependencies: - "@babel/core" "^7.16.0" - "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" - "@svgr/webpack" "^5.5.0" - babel-jest "^27.4.2" - babel-loader "^8.2.3" - babel-plugin-named-asset-import "^0.3.8" - babel-preset-react-app "^10.0.1" +react-scripts@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-4.0.3.tgz#b1cafed7c3fa603e7628ba0f187787964cb5d345" + integrity sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A== + dependencies: + "@babel/core" "7.12.3" + "@pmmmwh/react-refresh-webpack-plugin" "0.4.3" + "@svgr/webpack" "5.5.0" + "@typescript-eslint/eslint-plugin" "^4.5.0" + "@typescript-eslint/parser" "^4.5.0" + babel-eslint "^10.1.0" + babel-jest "^26.6.0" + babel-loader "8.1.0" + babel-plugin-named-asset-import "^0.3.7" + babel-preset-react-app "^10.0.0" bfj "^7.0.2" - browserslist "^4.18.1" - camelcase "^6.2.1" - case-sensitive-paths-webpack-plugin "^2.4.0" - css-loader "^6.5.1" - css-minimizer-webpack-plugin "^3.2.0" - dotenv "^10.0.0" - dotenv-expand "^5.1.0" - eslint "^8.3.0" - eslint-config-react-app "^7.0.1" - eslint-webpack-plugin "^3.1.1" - file-loader "^6.2.0" - fs-extra "^10.0.0" - html-webpack-plugin "^5.5.0" - identity-obj-proxy "^3.0.0" - jest "^27.4.3" - jest-resolve "^27.4.2" - jest-watch-typeahead "^1.0.0" - mini-css-extract-plugin "^2.4.5" - postcss "^8.4.4" - postcss-flexbugs-fixes "^5.0.2" - postcss-loader "^6.2.1" - postcss-normalize "^10.0.1" - postcss-preset-env "^7.0.1" - prompts "^2.4.2" - react-app-polyfill "^3.0.0" - react-dev-utils "^12.0.1" - react-refresh "^0.11.0" - resolve "^1.20.0" - resolve-url-loader "^4.0.0" - sass-loader "^12.3.0" - semver "^7.3.5" - source-map-loader "^3.0.0" - style-loader "^3.3.1" - tailwindcss "^3.0.2" - terser-webpack-plugin "^5.2.5" - webpack "^5.64.4" - webpack-dev-server "^4.6.0" - webpack-manifest-plugin "^4.0.2" - workbox-webpack-plugin "^6.4.1" + camelcase "^6.1.0" + case-sensitive-paths-webpack-plugin "2.3.0" + css-loader "4.3.0" + dotenv "8.2.0" + dotenv-expand "5.1.0" + eslint "^7.11.0" + eslint-config-react-app "^6.0.0" + eslint-plugin-flowtype "^5.2.0" + eslint-plugin-import "^2.22.1" + eslint-plugin-jest "^24.1.0" + eslint-plugin-jsx-a11y "^6.3.1" + eslint-plugin-react "^7.21.5" + eslint-plugin-react-hooks "^4.2.0" + eslint-plugin-testing-library "^3.9.2" + eslint-webpack-plugin "^2.5.2" + file-loader "6.1.1" + fs-extra "^9.0.1" + html-webpack-plugin "4.5.0" + identity-obj-proxy "3.0.0" + jest "26.6.0" + jest-circus "26.6.0" + jest-resolve "26.6.0" + jest-watch-typeahead "0.6.1" + mini-css-extract-plugin "0.11.3" + optimize-css-assets-webpack-plugin "5.0.4" + pnp-webpack-plugin "1.6.4" + postcss-flexbugs-fixes "4.2.1" + postcss-loader "3.0.0" + postcss-normalize "8.0.1" + postcss-preset-env "6.7.0" + postcss-safe-parser "5.0.2" + prompts "2.4.0" + react-app-polyfill "^2.0.0" + react-dev-utils "^11.0.3" + react-refresh "^0.8.3" + resolve "1.18.1" + resolve-url-loader "^3.1.2" + sass-loader "^10.0.5" + semver "7.3.2" + style-loader "1.3.0" + terser-webpack-plugin "4.2.3" + ts-pnp "1.2.0" + url-loader "4.1.1" + webpack "4.44.2" + webpack-dev-server "3.11.1" + webpack-manifest-plugin "2.2.0" + workbox-webpack-plugin "5.1.4" optionalDependencies: - fsevents "^2.3.2" + fsevents "^2.1.3" react-side-effect@^2.1.0: version "2.1.1" @@ -13273,14 +12188,43 @@ react@^17.0.1: loose-envify "^1.1.0" object-assign "^4.1.1" -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: - pify "^2.3.0" + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" -readable-stream@^2.0.1, readable-stream@^2.0.2: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -13293,7 +12237,7 @@ readable-stream@^2.0.1, readable-stream@^2.0.2: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6: +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -13318,13 +12262,6 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - recharts-scale@^0.4.4: version "0.4.5" resolved "https://registry.yarnpkg.com/recharts-scale/-/recharts-scale-0.4.5.tgz#0969271f14e732e642fcc5bd4ab270d6e87dd1d9" @@ -13347,19 +12284,19 @@ recharts@^2.9.0: tiny-invariant "^1.3.1" victory-vendor "^36.6.8" -rechoir@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" - integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== +rechoir@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" + integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== dependencies: - resolve "^1.20.0" + resolve "^1.9.0" -recursive-readdir@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" - integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== dependencies: - minimatch "^3.0.5" + minimatch "3.0.4" redbox-react@^1.3.6: version "1.6.0" @@ -13401,26 +12338,6 @@ redux@^3.7.2: loose-envify "^1.1.0" symbol-observable "^1.0.3" -reflect.getprototypeof@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" - integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.1" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - globalthis "^1.0.3" - which-builtin-type "^1.1.3" - -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -13428,7 +12345,7 @@ regenerate-unicode-properties@^8.2.0: dependencies: regenerate "^1.4.0" -regenerate@^1.4.0, regenerate@^1.4.2: +regenerate@^1.4.0: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== @@ -13438,12 +12355,12 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9: +regenerator-runtime@^0.13.11: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-runtime@^0.13.4: +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== @@ -13460,13 +12377,6 @@ regenerator-transform@^0.14.2: dependencies: "@babel/runtime" "^7.8.4" -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -13480,7 +12390,7 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== -regexp.prototype.flags@^1.2.0: +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== @@ -13488,15 +12398,10 @@ regexp.prototype.flags@^1.2.0: call-bind "^1.0.2" define-properties "^1.1.3" -regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== - dependencies: - call-bind "^1.0.6" - define-properties "^1.2.1" - es-errors "^1.3.0" - set-function-name "^2.0.1" +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== regexpu-core@^4.7.1: version "4.7.1" @@ -13510,18 +12415,6 @@ regexpu-core@^4.7.1: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" @@ -13534,13 +12427,6 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" @@ -13551,16 +12437,16 @@ remove-trailing-separator@^1.0.1: resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== +renderkid@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" + integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" + css-select "^2.0.2" + dom-converter "^0.2" + htmlparser2 "^3.10.1" + lodash "^4.17.20" + strip-ansi "^3.0.0" repeat-element@^1.1.2: version "1.1.4" @@ -13572,6 +12458,48 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -13631,15 +12559,20 @@ resolve-pathname@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -resolve-url-loader@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" - integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== - dependencies: - adjust-sourcemap-loader "^4.0.0" - convert-source-map "^1.7.0" - loader-utils "^2.0.0" - postcss "^7.0.35" +resolve-url-loader@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.3.tgz#49ec68340f67d8d2ab6b401948d5def3ab2d0367" + integrity sha512-WbDSNFiKPPLem1ln+EVTE+bFUBdTTytfQZWbmghroaFNFaAVmGq0Saqw6F/306CwgPXsGwXVxbODE+3xAo/YbA== + dependencies: + adjust-sourcemap-loader "3.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" source-map "0.6.1" resolve-url@^0.2.1: @@ -13647,26 +12580,20 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve.exports@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" - integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== - resolve.exports@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.1.7, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== +resolve@1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" + integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" + is-core-module "^2.0.0" + path-parse "^1.0.6" -resolve@^1.14.2: +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.8.1, resolve@^1.9.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -13674,15 +12601,23 @@ resolve@^1.14.2: is-core-module "^2.2.0" path-parse "^1.0.6" -resolve@^2.0.0-next.5: - version "2.0.0-next.5" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" - integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== +resolve@^1.20.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -13693,17 +12628,35 @@ retry@^0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^2.6.3: +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -13717,22 +12670,53 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rollup-plugin-terser@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup-plugin-babel@^4.3.3: + version "4.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" + integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-terser@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" + integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== + dependencies: + "@babel/code-frame" "^7.5.5" + jest-worker "^24.9.0" + rollup-pluginutils "^2.8.2" serialize-javascript "^4.0.0" - terser "^5.0.0" + terser "^4.6.2" + +rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.31.1: + version "1.32.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" + integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== + dependencies: + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" -rollup@^2.43.1: - version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== - optionalDependencies: - fsevents "~2.3.2" +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-parallel@^1.1.9: version "1.2.0" @@ -13741,6 +12725,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + rxjs@^6.6.6: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" @@ -13755,35 +12746,16 @@ rxjs@^7.8.1: dependencies: tslib "^2.1.0" -safe-array-concat@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" - integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== - dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - has-symbols "^1.0.3" - isarray "^2.0.5" - safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-regex-test@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" - integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-regex "^1.1.4" - safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -13791,23 +12763,41 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sanitize.css@*: - version "13.0.0" - resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" - integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== -sass-loader@^12.3.0: - version "12.6.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" - integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== +sass-loader@^10.0.5: + version "10.2.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.2.0.tgz#3d64c1590f911013b3fa48a0b22a83d5e1494716" + integrity sha512-kUceLzC1gIHz0zNJPpqRsJyisWatGYNFRmv2CKZK2/ngMJgLqxTbXwe/hJ85luyvZkgqU3VlJ33UVF2T/0g6mw== dependencies: klona "^2.0.4" + loader-utils "^2.0.0" neo-async "^2.6.2" + schema-utils "^3.0.0" + semver "^7.3.2" sass@^1.32.8: version "1.32.13" @@ -13836,15 +12826,6 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -13854,7 +12835,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.6.5: +schema-utils@^2.6.5, schema-utils@^2.7.0, schema-utils@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -13872,25 +12853,6 @@ schema-utils@^3.0.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^3.1.1, schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" - integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - scroll-into-view-if-needed@^3.0.3: version "3.0.10" resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.0.10.tgz#38fbfe770d490baff0fb2ba34ae3539f6ec44e13" @@ -13917,23 +12879,20 @@ selfsigned@^1.10.8: dependencies: node-forge "^0.10.0" -selfsigned@^2.1.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" - integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== - dependencies: - "@types/node-forge" "^1.3.0" - node-forge "^1" +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" @@ -13945,18 +12904,13 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.4: +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" -semver@^7.3.5, semver@^7.3.7: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" @@ -13983,25 +12937,6 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -14016,13 +12951,6 @@ serialize-javascript@^5.0.1: dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -14046,43 +12974,11 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -set-function-name@^2.0.1, set-function-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" - integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.2" - set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -14093,6 +12989,11 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -14103,10 +13004,13 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" shallow-clone@^3.0.0: version "3.0.1" @@ -14139,10 +13043,15 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3, shell-quote@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== side-channel@^1.0.4: version "1.0.4" @@ -14153,16 +13062,6 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -side-channel@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -14173,10 +13072,12 @@ signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" sirv@^1.0.7: version "1.0.11" @@ -14197,10 +13098,14 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slash@^4.0.0: +slice-ansi@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" snapdragon-node@^2.0.1: version "2.1.1" @@ -14253,35 +13158,19 @@ sockjs@^0.3.21: uuid "^3.4.0" websocket-driver "^0.7.4" -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" + is-plain-obj "^1.0.0" -source-list-map@^2.0.0, source-list-map@^2.0.1: +source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-js@^1.0.1, source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== - -source-map-loader@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.2.tgz#af23192f9b344daa729f6772933194cc5fa54fee" - integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== - dependencies: - abab "^2.0.5" - iconv-lite "^0.6.3" - source-map-js "^1.0.1" - -source-map-resolve@^0.5.0: +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== @@ -14308,7 +13197,7 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.6: +source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -14316,14 +13205,6 @@ source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-url@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" @@ -14344,18 +13225,11 @@ source-map@^0.5.0, source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.7.3: +source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -source-map@^0.8.0-beta.0: - version "0.8.0-beta.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" - integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== - dependencies: - whatwg-url "^7.0.0" - sourcemap-codec@^1.4.4: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" @@ -14368,6 +13242,32 @@ sourcemapped-stacktrace@^1.1.6: dependencies: source-map "0.5.6" +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" @@ -14403,6 +13303,28 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== + dependencies: + figgy-pudding "^3.5.1" + ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" @@ -14415,6 +13337,13 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" + stack-utils@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" @@ -14440,16 +13369,53 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + string-convert@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" @@ -14463,28 +13429,11 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-length@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" - integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== - dependencies: - char-regex "^2.0.0" - strip-ansi "^7.0.1" - string-natural-compare@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -14503,42 +13452,27 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -string.prototype.matchall@^4.0.10, string.prototype.matchall@^4.0.6: - version "4.0.11" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" - integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - regexp.prototype.flags "^1.5.2" - set-function-name "^2.0.2" - side-channel "^1.0.6" - -string.prototype.trim@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" - integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.0" - es-object-atoms "^1.0.0" +string.prototype.matchall@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz#608f255e93e072107f5de066f81a2dfb78cf6b29" + integrity sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has-symbols "^1.0.1" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" string.prototype.trimend@^1.0.4: version "1.0.4" @@ -14548,15 +13482,6 @@ string.prototype.trimend@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -string.prototype.trimend@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" - integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - string.prototype.trimstart@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" @@ -14565,16 +13490,7 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -string.prototype.trimstart@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" - integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string_decoder@^1.1.1: +string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -14597,14 +13513,14 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: - ansi-regex "^5.0.1" + ansi-regex "^5.0.0" -strip-ansi@^3.0.1: +strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -14618,19 +13534,12 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^6.0.1" + ansi-regex "^5.0.1" strip-bom@^3.0.0: version "3.0.0" @@ -14642,10 +13551,13 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" - integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" strip-eof@^1.0.0: version "1.0.0" @@ -14664,42 +13576,33 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -style-loader@^3.3.1: - version "3.3.4" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" - integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== +style-loader@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" + integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.7.0" -stylehacks@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" - integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" stylis@^4.0.13: version "4.1.3" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== -sucrase@^3.32.0: - version "3.35.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" - integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - glob "^10.3.10" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -14746,7 +13649,7 @@ svg-parser@^2.0.2: resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svgo@^1.2.2: +svgo@^1.0.0, svgo@^1.2.2: version "1.3.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== @@ -14765,19 +13668,6 @@ svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" -svgo@^2.7.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - symbol-observable@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -14788,44 +13678,23 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -tailwindcss@^3.0.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.3.tgz#be48f5283df77dfced705451319a5dffb8621519" - integrity sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A== - dependencies: - "@alloc/quick-lru" "^5.2.0" - arg "^5.0.2" - chokidar "^3.5.3" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.3.0" - glob-parent "^6.0.2" - is-glob "^4.0.3" - jiti "^1.21.0" - lilconfig "^2.1.0" - micromatch "^4.0.5" - normalize-path "^3.0.0" - object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.23" - postcss-import "^15.1.0" - postcss-js "^4.0.1" - postcss-load-config "^4.0.1" - postcss-nested "^6.0.1" - postcss-selector-parser "^6.0.11" - resolve "^1.22.2" - sucrase "^3.32.0" - -tapable@^1.0.0: +table@^6.0.4: + version "6.7.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.0.tgz#26274751f0ee099c547f6cb91d3eff0d61d155b2" + integrity sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + +tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - tar@^6.0.2: version "6.1.0" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" @@ -14838,20 +13707,19 @@ tar@^6.0.2: mkdirp "^1.0.3" yallist "^4.0.0" -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= -tempy@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" - integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== +tempy@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== dependencies: - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.16.0" - unique-string "^2.0.0" + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" terminal-link@^2.0.0: version "2.1.1" @@ -14861,26 +13729,53 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10: - version "5.3.10" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" - integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== +terser-webpack-plugin@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2, terser@^4.6.2, terser@^4.6.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== dependencies: - "@jridgewell/trace-mapping" "^0.3.20" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.26.0" + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" -terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: - version "5.31.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.0.tgz#06eef86f17007dbad4593f11a574c7f5eb02c6a1" - integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg== +terser@^5.3.4: + version "5.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" + integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" commander "^2.20.0" - source-map-support "~0.5.20" + source-map "~0.7.2" + source-map-support "~0.5.19" test-exclude@^6.0.0: version "6.0.0" @@ -14891,40 +13786,46 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@^0.2.0: +text-table@0.2.0, text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -throat@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" - integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== throttle-debounce@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz#a17a4039e82a2ed38a5e7268e4132d6960d41933" integrity sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg== +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + thunky@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + tiny-invariant@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" @@ -14957,6 +13858,11 @@ tmpl@1.0.x: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -15004,16 +13910,19 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - totalist@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -15023,13 +13932,6 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== - dependencies: - punycode "^2.1.0" - tr46@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" @@ -15047,11 +13949,6 @@ tryer@^1.0.1: resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - ts-jest@^29.1.1: version "29.1.1" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" @@ -15077,14 +13974,19 @@ ts-loader@^8.0.17: micromatch "^4.0.0" semver "^7.3.4" -tsconfig-paths@^3.15.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== +ts-pnp@1.2.0, ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== dependencies: "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" + json5 "^1.0.1" + minimist "^1.2.0" strip-bom "^3.0.0" tslib@^1.8.1, tslib@^1.9.0: @@ -15102,13 +14004,30 @@ tslib@^2.1.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tsutils@^3.21.0: +tsutils@^3.17.1: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -15128,11 +14047,6 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" - integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== - type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -15143,6 +14057,21 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -15151,49 +14080,15 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -typed-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" - integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-typed-array "^1.1.13" - -typed-array-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" - integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-byte-offset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" - integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== -typed-array-length@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" - integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - possible-typed-array-names "^1.0.0" +type@^2.0.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" + integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -15202,6 +14097,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + typescript@^4.9.5: version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" @@ -15222,16 +14122,6 @@ unbox-primitive@^1.0.0: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" @@ -15242,11 +14132,6 @@ unicode-canonical-property-names-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" @@ -15255,34 +14140,16 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -15293,6 +14160,16 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -15307,14 +14184,14 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= dependencies: - crypto-random-string "^2.0.0" + crypto-random-string "^1.0.0" -universalify@^0.1.2: +universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== @@ -15342,7 +14219,7 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.1.1, upath@^1.2.0: +upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== @@ -15355,7 +14232,7 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" -uri-js@^4.2.2, uri-js@^4.4.1: +uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -15367,6 +14244,15 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-loader@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + url-parse@^1.4.3, url-parse@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" @@ -15393,6 +14279,14 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + util.promisify@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" @@ -15403,6 +14297,20 @@ util.promisify@~1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.0" +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -15418,7 +14326,7 @@ uuid@^3.3.2, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.2: +uuid@^8.3.0: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -15428,10 +14336,15 @@ uuid@^9.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== -v8-to-istanbul@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" - integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== +v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +v8-to-istanbul@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" + integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -15446,6 +14359,14 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + value-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" @@ -15456,6 +14377,20 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + victory-vendor@^36.6.8: version "36.6.11" resolved "https://registry.yarnpkg.com/victory-vendor/-/victory-vendor-36.6.11.tgz#acae770717c2dae541a54929c304ecab5ab6ac2a" @@ -15476,6 +14411,11 @@ victory-vendor@^36.6.8: d3-time "^3.0.0" d3-timer "^3.0.1" +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -15490,7 +14430,7 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" -walker@^1.0.7: +walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= @@ -15511,13 +14451,23 @@ warning@^4.0.1: dependencies: loose-envify "^1.0.0" -watchpack@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" - integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== dependencies: - glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" @@ -15536,11 +14486,6 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -15566,23 +14511,23 @@ webpack-bundle-analyzer@^4.4.0: sirv "^1.0.7" ws "^7.3.1" -webpack-cli@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" - integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== +webpack-cli@^4.5.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.7.0.tgz#3195a777f1f802ecda732f6c95d24c0004bc5a35" + integrity sha512-7bKr9182/sGfjFm+xdZSwgQuFjgEcy0iCTIBxRUeteJ2Kr8/Wz0qNJX+jw60LU36jApt4nmMkep6+W5AKhok6g== dependencies: "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^2.1.1" - "@webpack-cli/info" "^2.0.2" - "@webpack-cli/serve" "^2.0.5" - colorette "^2.0.14" - commander "^10.0.1" - cross-spawn "^7.0.3" - envinfo "^7.7.3" + "@webpack-cli/configtest" "^1.0.3" + "@webpack-cli/info" "^1.2.4" + "@webpack-cli/serve" "^1.4.0" + colorette "^1.2.1" + commander "^7.0.0" + execa "^5.0.0" fastest-levenshtein "^1.0.12" import-local "^3.0.2" - interpret "^3.1.1" - rechoir "^0.8.0" + interpret "^2.2.0" + rechoir "^0.7.0" + v8-compile-cache "^2.2.0" webpack-merge "^5.7.3" webpack-dev-middleware@^3.7.2: @@ -15596,16 +14541,44 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-middleware@^5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" - integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== +webpack-dev-server@3.11.1: + version "3.11.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz#c74028bf5ba8885aaf230e48a20e8936ab8511f0" + integrity sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ== dependencies: - colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.8" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "^0.3.21" + sockjs-client "^1.5.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" webpack-dev-server@^3.11.2: version "3.11.2" @@ -15646,42 +14619,6 @@ webpack-dev-server@^3.11.2: ws "^6.2.1" yargs "^13.3.2" -webpack-dev-server@^4.6.0: - version "4.15.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" - integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.5" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.4" - ws "^8.13.0" - webpack-log@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" @@ -15690,13 +14627,15 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-manifest-plugin@^4.0.2: - version "4.1.1" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz#10f8dbf4714ff93a215d5a45bcc416d80506f94f" - integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== dependencies: - tapable "^2.0.0" - webpack-sources "^2.2.0" + fs-extra "^7.0.0" + lodash ">=3.5 <5" + object.entries "^1.1.0" + tapable "^1.0.0" webpack-merge@^5.7.3: version "5.7.3" @@ -15706,7 +14645,7 @@ webpack-merge@^5.7.3: clone-deep "^4.0.1" wildcard "^2.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.4.3: +webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -15714,48 +14653,34 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.3: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-sources@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" - integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@^5.64.4: - version "5.91.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" - integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.21.10" +webpack@4.44.2: + version "4.44.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" + integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.16.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.1" - webpack-sources "^3.2.3" + enhanced-resolve "^4.3.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" @@ -15783,11 +14708,6 @@ whatwg-fetch@>=0.10.0, whatwg-fetch@^3.4.1: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== -whatwg-fetch@^3.6.2: - version "3.6.20" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" - integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== - whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" @@ -15801,15 +14721,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3" @@ -15830,50 +14741,11 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== - dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" - is-async-function "^2.0.0" - is-date-object "^1.0.5" - is-finalizationregistry "^1.0.2" - is-generator-function "^1.0.10" - is-regex "^1.1.4" - is-weakref "^1.0.2" - isarray "^2.0.5" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - -which-collection@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" - integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== - dependencies: - is-map "^2.0.3" - is-set "^2.0.3" - is-weakmap "^2.0.2" - is-weakset "^2.0.3" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: - version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" - integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.2" - which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -15881,7 +14753,7 @@ which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -15893,193 +14765,177 @@ wildcard@^2.0.0: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workbox-background-sync@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.6.1.tgz#08d603a33717ce663e718c30cc336f74909aff2f" - integrity sha512-trJd3ovpWCvzu4sW0E8rV3FUyIcC0W8G+AZ+VcqzzA890AsWZlUGOTSxIMmIHVusUw/FDq1HFWfy/kC/WTRqSg== +workbox-background-sync@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" + integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== dependencies: - idb "^7.0.1" - workbox-core "6.6.1" + workbox-core "^5.1.4" -workbox-broadcast-update@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.6.1.tgz#0fad9454cf8e4ace0c293e5617c64c75d8a8c61e" - integrity sha512-fBhffRdaANdeQ1V8s692R9l/gzvjjRtydBOvR6WCSB0BNE2BacA29Z4r9/RHd9KaXCPl6JTdI9q0bR25YKP8TQ== +workbox-broadcast-update@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" + integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== dependencies: - workbox-core "6.6.1" + workbox-core "^5.1.4" -workbox-build@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.6.1.tgz#6010e9ce550910156761448f2dbea8cfcf759cb0" - integrity sha512-INPgDx6aRycAugUixbKgiEQBWD0MPZqU5r0jyr24CehvNuLPSXp/wGOpdRJmts656lNiXwqV7dC2nzyrzWEDnw== +workbox-build@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" + integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== dependencies: - "@apideck/better-ajv-errors" "^0.3.1" - "@babel/core" "^7.11.1" - "@babel/preset-env" "^7.11.0" - "@babel/runtime" "^7.11.2" - "@rollup/plugin-babel" "^5.2.0" - "@rollup/plugin-node-resolve" "^11.2.1" - "@rollup/plugin-replace" "^2.4.1" - "@surma/rollup-plugin-off-main-thread" "^2.2.3" - ajv "^8.6.0" + "@babel/core" "^7.8.4" + "@babel/preset-env" "^7.8.4" + "@babel/runtime" "^7.8.4" + "@hapi/joi" "^15.1.0" + "@rollup/plugin-node-resolve" "^7.1.1" + "@rollup/plugin-replace" "^2.3.1" + "@surma/rollup-plugin-off-main-thread" "^1.1.1" common-tags "^1.8.0" fast-json-stable-stringify "^2.1.0" - fs-extra "^9.0.1" + fs-extra "^8.1.0" glob "^7.1.6" - lodash "^4.17.20" + lodash.template "^4.5.0" pretty-bytes "^5.3.0" - rollup "^2.43.1" - rollup-plugin-terser "^7.0.0" - source-map "^0.8.0-beta.0" + rollup "^1.31.1" + rollup-plugin-babel "^4.3.3" + rollup-plugin-terser "^5.3.1" + source-map "^0.7.3" + source-map-url "^0.4.0" stringify-object "^3.3.0" - strip-comments "^2.0.1" - tempy "^0.6.0" + strip-comments "^1.0.2" + tempy "^0.3.0" upath "^1.2.0" - workbox-background-sync "6.6.1" - workbox-broadcast-update "6.6.1" - workbox-cacheable-response "6.6.1" - workbox-core "6.6.1" - workbox-expiration "6.6.1" - workbox-google-analytics "6.6.1" - workbox-navigation-preload "6.6.1" - workbox-precaching "6.6.1" - workbox-range-requests "6.6.1" - workbox-recipes "6.6.1" - workbox-routing "6.6.1" - workbox-strategies "6.6.1" - workbox-streams "6.6.1" - workbox-sw "6.6.1" - workbox-window "6.6.1" - -workbox-cacheable-response@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.6.1.tgz#284c2b86be3f4fd191970ace8c8e99797bcf58e9" - integrity sha512-85LY4veT2CnTCDxaVG7ft3NKaFbH6i4urZXgLiU4AiwvKqS2ChL6/eILiGRYXfZ6gAwDnh5RkuDbr/GMS4KSag== - dependencies: - workbox-core "6.6.1" - -workbox-core@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.6.1.tgz#7184776d4134c5ed2f086878c882728fc9084265" - integrity sha512-ZrGBXjjaJLqzVothoE12qTbVnOAjFrHDXpZe7coCb6q65qI/59rDLwuFMO4PcZ7jcbxY+0+NhUVztzR/CbjEFw== - -workbox-expiration@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.6.1.tgz#a841fa36676104426dbfb9da1ef6a630b4f93739" - integrity sha512-qFiNeeINndiOxaCrd2DeL1Xh1RFug3JonzjxUHc5WkvkD2u5abY3gZL1xSUNt3vZKsFFGGORItSjVTVnWAZO4A== - dependencies: - idb "^7.0.1" - workbox-core "6.6.1" - -workbox-google-analytics@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.6.1.tgz#a07a6655ab33d89d1b0b0a935ffa5dea88618c5d" - integrity sha512-1TjSvbFSLmkpqLcBsF7FuGqqeDsf+uAXO/pjiINQKg3b1GN0nBngnxLcXDYo1n/XxK4N7RaRrpRlkwjY/3ocuA== - dependencies: - workbox-background-sync "6.6.1" - workbox-core "6.6.1" - workbox-routing "6.6.1" - workbox-strategies "6.6.1" - -workbox-navigation-preload@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.6.1.tgz#61a34fe125558dd88cf09237f11bd966504ea059" - integrity sha512-DQCZowCecO+wRoIxJI2V6bXWK6/53ff+hEXLGlQL4Rp9ZaPDLrgV/32nxwWIP7QpWDkVEtllTAK5h6cnhxNxDA== - dependencies: - workbox-core "6.6.1" - -workbox-precaching@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.6.1.tgz#dedeeba10a2d163d990bf99f1c2066ac0d1a19e2" - integrity sha512-K4znSJ7IKxCnCYEdhNkMr7X1kNh8cz+mFgx9v5jFdz1MfI84pq8C2zG+oAoeE5kFrUf7YkT5x4uLWBNg0DVZ5A== - dependencies: - workbox-core "6.6.1" - workbox-routing "6.6.1" - workbox-strategies "6.6.1" - -workbox-range-requests@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.6.1.tgz#ddaf7e73af11d362fbb2f136a9063a4c7f507a39" - integrity sha512-4BDzk28govqzg2ZpX0IFkthdRmCKgAKreontYRC5YsAPB2jDtPNxqx3WtTXgHw1NZalXpcH/E4LqUa9+2xbv1g== - dependencies: - workbox-core "6.6.1" - -workbox-recipes@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.6.1.tgz#ea70d2b2b0b0bce8de0a9d94f274d4a688e69fae" - integrity sha512-/oy8vCSzromXokDA+X+VgpeZJvtuf8SkQ8KL0xmRivMgJZrjwM3c2tpKTJn6PZA6TsbxGs3Sc7KwMoZVamcV2g== - dependencies: - workbox-cacheable-response "6.6.1" - workbox-core "6.6.1" - workbox-expiration "6.6.1" - workbox-precaching "6.6.1" - workbox-routing "6.6.1" - workbox-strategies "6.6.1" - -workbox-routing@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.6.1.tgz#cba9a1c7e0d1ea11e24b6f8c518840efdc94f581" - integrity sha512-j4ohlQvfpVdoR8vDYxTY9rA9VvxTHogkIDwGdJ+rb2VRZQ5vt1CWwUUZBeD/WGFAni12jD1HlMXvJ8JS7aBWTg== - dependencies: - workbox-core "6.6.1" - -workbox-strategies@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.6.1.tgz#38d0f0fbdddba97bd92e0c6418d0b1a2ccd5b8bf" - integrity sha512-WQLXkRnsk4L81fVPkkgon1rZNxnpdO5LsO+ws7tYBC6QQQFJVI6v98klrJEjFtZwzw/mB/HT5yVp7CcX0O+mrw== - dependencies: - workbox-core "6.6.1" - -workbox-streams@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.6.1.tgz#b2f7ba7b315c27a6e3a96a476593f99c5d227d26" - integrity sha512-maKG65FUq9e4BLotSKWSTzeF0sgctQdYyTMq529piEN24Dlu9b6WhrAfRpHdCncRS89Zi2QVpW5V33NX8PgH3Q== - dependencies: - workbox-core "6.6.1" - workbox-routing "6.6.1" - -workbox-sw@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.6.1.tgz#d4c4ca3125088e8b9fd7a748ed537fa0247bd72c" - integrity sha512-R7whwjvU2abHH/lR6kQTTXLHDFU2izht9kJOvBRYK65FbwutT4VvnUAJIgHvfWZ/fokrOPhfoWYoPCMpSgUKHQ== - -workbox-webpack-plugin@^6.4.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.1.tgz#4f81cc1ad4e5d2cd7477a86ba83c84ee2d187531" - integrity sha512-zpZ+ExFj9NmiI66cFEApyjk7hGsfJ1YMOaLXGXBoZf0v7Iu6hL0ZBe+83mnDq3YYWAfA3fnyFejritjOHkFcrA== + workbox-background-sync "^5.1.4" + workbox-broadcast-update "^5.1.4" + workbox-cacheable-response "^5.1.4" + workbox-core "^5.1.4" + workbox-expiration "^5.1.4" + workbox-google-analytics "^5.1.4" + workbox-navigation-preload "^5.1.4" + workbox-precaching "^5.1.4" + workbox-range-requests "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + workbox-streams "^5.1.4" + workbox-sw "^5.1.4" + workbox-window "^5.1.4" + +workbox-cacheable-response@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" + integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== dependencies: - fast-json-stable-stringify "^2.1.0" - pretty-bytes "^5.4.1" - upath "^1.2.0" - webpack-sources "^1.4.3" - workbox-build "6.6.1" + workbox-core "^5.1.4" -workbox-window@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.6.1.tgz#f22a394cbac36240d0dadcbdebc35f711bb7b89e" - integrity sha512-wil4nwOY58nTdCvif/KEZjQ2NP8uk3gGeRNy2jPBbzypU4BT4D9L8xiwbmDBpZlSgJd2xsT9FvSNU0gsxV51JQ== +workbox-core@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" + integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== + +workbox-expiration@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" + integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== dependencies: - "@types/trusted-types" "^2.0.2" - workbox-core "6.6.1" + workbox-core "^5.1.4" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== +workbox-google-analytics@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" + integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + workbox-background-sync "^5.1.4" + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + +workbox-navigation-preload@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" + integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== + dependencies: + workbox-core "^5.1.4" + +workbox-precaching@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" + integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== + dependencies: + workbox-core "^5.1.4" + +workbox-range-requests@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" + integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== + dependencies: + workbox-core "^5.1.4" + +workbox-routing@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" + integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== + dependencies: + workbox-core "^5.1.4" + +workbox-strategies@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" + integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== + dependencies: + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + +workbox-streams@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" + integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== + dependencies: + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + +workbox-sw@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" + integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== + +workbox-webpack-plugin@5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz#7bfe8c16e40fe9ed8937080ac7ae9c8bde01e79c" + integrity sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ== + dependencies: + "@babel/runtime" "^7.5.5" + fast-json-stable-stringify "^2.0.0" + source-map-url "^0.4.0" + upath "^1.1.2" + webpack-sources "^1.3.0" + workbox-build "^5.1.4" + +workbox-window@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" + integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== + dependencies: + workbox-core "^5.1.4" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" wrap-ansi@^5.1.0: version "5.1.0" @@ -16090,14 +14946,23 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" @@ -16129,21 +14994,11 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@^7.3.1: +ws@^7.3.1, ws@^7.4.4: version "7.4.5" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== -ws@^7.4.6: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -ws@^8.13.0: - version "8.17.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" - integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== - xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" @@ -16154,6 +15009,11 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + xterm-addon-fit@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.5.0.tgz#2d51b983b786a97dcd6cde805e700c7f913bc596" @@ -16184,16 +15044,11 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: +yaml@^1.10.0, yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.3.4: - version "2.4.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.2.tgz#7a2b30f2243a5fc299e1f14ca58d475ed4bc5362" - integrity sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA== - yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -16202,10 +15057,13 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" @@ -16228,18 +15086,22 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" yargs@^17.3.1: version "17.7.2" From d8c1ecac81d4393d4297790eb5acf9781bc54733 Mon Sep 17 00:00:00 2001 From: chengjoey <30427474+chengjoey@users.noreply.github.com> Date: Thu, 6 Mar 2025 23:29:17 +0800 Subject: [PATCH 218/219] fix(controller): rollout stuck in `Progressing`. fixes #3988 (#4072) fix rollout stuck in `Progressing` Signed-off-by: joey --- rollout/bluegreen_test.go | 1 + rollout/replicaset.go | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/rollout/bluegreen_test.go b/rollout/bluegreen_test.go index f8abaa9fcc..5a9bd7cf77 100644 --- a/rollout/bluegreen_test.go +++ b/rollout/bluegreen_test.go @@ -1406,6 +1406,7 @@ func TestBlueGreenReadyToScaleDownOldReplica(t *testing.T) { f.objects = append(f.objects, r2) f.serviceLister = append(f.serviceLister, s) + f.expectPatchReplicaSetAction(rs2) updatedRSIndex := f.expectUpdateReplicaSetAction(rs2) patchIndex := f.expectPatchRolloutAction(r2) f.run(getKey(r2, t)) diff --git a/rollout/replicaset.go b/rollout/replicaset.go index e374b98286..8412420be9 100644 --- a/rollout/replicaset.go +++ b/rollout/replicaset.go @@ -107,6 +107,16 @@ func (c *rolloutContext) removeScaleDownDeadlines() error { toRemove = append(toRemove, c.stableRS) } } + for _, rs := range c.otherRSs { + remainScaleDownDeadlines, err := replicasetutil.GetTimeRemainingBeforeScaleDownDeadline(rs) + if err != nil { + c.log.Warnf("%v", err) + continue + } + if replicasetutil.HasScaleDownDeadline(rs) && remainScaleDownDeadlines == nil { + toRemove = append(toRemove, rs) + } + } for _, rs := range toRemove { err := c.removeScaleDownDelay(rs) if err != nil { From f6a202db42868ab3b96e101704c1bd2ddeeefc38 Mon Sep 17 00:00:00 2001 From: Abhish2702 <97869619+Abhish2702@users.noreply.github.com> Date: Mon, 10 Mar 2025 22:05:33 +0530 Subject: [PATCH 219/219] fix: guardrail to not overload stable replicaset (#3878) * fix: unexpected downtime in rollouts Signed-off-by: Abhishek Bansal * lint Signed-off-by: Zach Aller --------- Signed-off-by: Abhishek Bansal Signed-off-by: Zach Aller Co-authored-by: Abhishek Bansal Co-authored-by: Zach Aller --- rollout/trafficrouting.go | 23 ++++++++++++ rollout/trafficrouting_test.go | 67 ++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) diff --git a/rollout/trafficrouting.go b/rollout/trafficrouting.go index eef25e1c1c..df00d70c77 100644 --- a/rollout/trafficrouting.go +++ b/rollout/trafficrouting.go @@ -10,6 +10,8 @@ import ( "github.com/argoproj/argo-rollouts/rollout/trafficrouting/plugin" + appsv1 "k8s.io/api/apps/v1" + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/rollout/trafficrouting" "github.com/argoproj/argo-rollouts/rollout/trafficrouting/alb" @@ -133,6 +135,23 @@ func (c *Controller) NewTrafficRoutingReconciler(roCtx *rolloutContext) ([]traff return nil, nil } +func (c *rolloutContext) checkReplicasAvailable(rs *appsv1.ReplicaSet, desiredWeight int32) bool { + if rs == nil { + return false + } + availableReplicas := rs.Status.AvailableReplicas + totalReplicas := *c.rollout.Spec.Replicas + + desiredReplicas := (desiredWeight * totalReplicas) / 100 + if availableReplicas < desiredReplicas { + c.log.Infof("ReplicaSet '%s' has %d available replicas, waiting for %d", rs.Name, availableReplicas, desiredReplicas) + return false + } + + return true + +} + // this currently only be used in the canary strategy func (c *rolloutContext) reconcileTrafficRouting() error { reconcilers, err := c.newTrafficRoutingReconciler(c) @@ -243,6 +262,10 @@ func (c *rolloutContext) reconcileTrafficRouting() error { desiredWeight = weightutil.MaxTrafficWeight(c.rollout) } } + + if !c.checkReplicasAvailable(c.stableRS, weightutil.MaxTrafficWeight(c.rollout)-desiredWeight) { + return nil + } // We need to check for revision > 1 because when we first install the rollout we run step 0 this prevents that. // There is a bigger fix needed for the reasons on why we run step 0 on rollout install, that needs to be explored. revision, revisionFound := annotations.GetRevisionAnnotation(c.rollout) diff --git a/rollout/trafficrouting_test.go b/rollout/trafficrouting_test.go index 288430f7a6..2b72fc95e3 100644 --- a/rollout/trafficrouting_test.go +++ b/rollout/trafficrouting_test.go @@ -1431,3 +1431,70 @@ func TestDontWeightOrHaveManagedRoutesDuringInterruptedUpdate(t *testing.T) { f.fakeTrafficRouting.AssertCalled(t, "RemoveManagedRoutes", mock.Anything, mock.Anything) } + +// This test verifies that if we are shifting traffic to stable replicaset without the stable replicaset being available proportional to the weight, the traffic shouldn't be switched immediately to the stable replicaset. +func TestCheckReplicaSetAvailable(t *testing.T) { + fix := newFixture(t) + defer fix.Close() + + steps := []v1alpha1.CanaryStep{ + { + SetWeight: pointer.Int32(60), + }, + { + Pause: &v1alpha1.RolloutPause{}, + }, + } + + rollout1 := newCanaryRollout("test-rollout", 10, nil, steps, pointer.Int32(1), intstr.FromInt(1), intstr.FromInt(1)) + rollout1.Spec.Strategy.Canary.DynamicStableScale = true + rollout1.Spec.Strategy.Canary.TrafficRouting = &v1alpha1.RolloutTrafficRouting{ + SMI: &v1alpha1.SMITrafficRouting{}, + } + rollout1.Spec.Strategy.Canary.CanaryService = "canary-service" + rollout1.Spec.Strategy.Canary.StableService = "stable-service" + rollout1.Status.ReadyReplicas = 10 + rollout1.Status.AvailableReplicas = 10 + + rollout2 := bumpVersion(rollout1) + + replicaSet1 := newReplicaSetWithStatus(rollout1, 1, 1) + replicaSet2 := newReplicaSetWithStatus(rollout2, 9, 9) + + replicaSet1Hash := replicaSet1.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + replicaSet2Hash := replicaSet2.Labels[v1alpha1.DefaultRolloutUniqueLabelKey] + canarySelector := map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: replicaSet2Hash} + stableSelector := map[string]string{v1alpha1.DefaultRolloutUniqueLabelKey: replicaSet1Hash} + canarySvc := newService("canary-service", 80, canarySelector, rollout1) + stableSvc := newService("stable-service", 80, stableSelector, rollout1) + + rollout2.Spec = rollout1.Spec + rollout2.Status.StableRS = replicaSet1Hash + rollout2.Status.CurrentPodHash = replicaSet1Hash + rollout2.Status.Canary.Weights = &v1alpha1.TrafficWeights{ + Canary: v1alpha1.WeightDestination{ + Weight: 10, + ServiceName: "canary-service", + PodTemplateHash: replicaSet2Hash, + }, + Stable: v1alpha1.WeightDestination{ + Weight: 90, + ServiceName: "stable-service", + PodTemplateHash: replicaSet1Hash, + }, + } + + fix.kubeobjects = append(fix.kubeobjects, replicaSet1, replicaSet2, canarySvc, stableSvc) + fix.replicaSetLister = append(fix.replicaSetLister, replicaSet1, replicaSet2) + + fix.rolloutLister = append(fix.rolloutLister, rollout2) + fix.objects = append(fix.objects, rollout2) + + fix.expectUpdateReplicaSetAction(replicaSet1) + fix.expectUpdateRolloutAction(rollout2) + fix.expectUpdateReplicaSetAction(replicaSet1) + fix.expectPatchRolloutAction(rollout2) + fix.fakeTrafficRouting = newUnmockedFakeTrafficRoutingReconciler() + fix.fakeTrafficRouting.On("RemoveManagedRoutes", mock.Anything, mock.Anything, mock.Anything).Return(nil) + fix.run(getKey(rollout1, t)) +}