Repository: kumahq/kuma
Pull request #2414 (2021-07-22 05:19:08)

chore(*) remove the ./api/ Go submodule
### Summary

Remove the `api` submodule.

### Full changelog

N/A

### Issues resolved

This updates #2200.

### Documentation

N/A

### Testing

- [x] Unit tests
- [x] E2E tests
- [ ] Manual testing on Universal
- [ ] Manual testing on Kubernetes 

### Backwards compatibility

- [x] Add `backport-to-stable` label if the code is backwards compatible. Otherwise, list breaking changes.


codecov-commenter: # [Codecov](https://codecov.io/gh/kumahq/kuma/pull/2414?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq) Report
> Merging [#2414](https://codecov.io/gh/kumahq/kuma/pull/2414?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq) (cb6193e) into [master](https://codecov.io/gh/kumahq/kuma/commit/fa046acf1455ed8b7c61b0c930fb3a91638d0d5c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq) (fa046ac) will **increase** coverage by `0.16%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/kumahq/kuma/pull/2414/graphs/tree.svg?width=650&height=150&src=pr&token=D7Yvqs6rwV&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq)](https://codecov.io/gh/kumahq/kuma/pull/2414?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq)

```diff
@@            Coverage Diff             @@
##           master    #2414      +/-   ##
==========================================
+ Coverage   52.43%   52.59%   +0.16%     
==========================================
  Files         875      877       +2     
  Lines       47833    47855      +22     
==========================================
+ Hits        25080    25170      +90     
+ Misses      20715    20638      -77     
- Partials     2038     2047       +9     
```


| [Impacted Files](https://codecov.io/gh/kumahq/kuma/pull/2414?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq) | Coverage Δ | |
|---|---|---|
| [api/mesh/v1alpha1/dataplane\_helpers.go](https://codecov.io/gh/kumahq/kuma/pull/2414/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq#diff-YXBpL21lc2gvdjFhbHBoYTEvZGF0YXBsYW5lX2hlbHBlcnMuZ28=) | `80.59% <ø> (+1.68%)` | :arrow_up: |
| [pkg/core/resources/store/customizable\_store.go](https://codecov.io/gh/kumahq/kuma/pull/2414/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq#diff-cGtnL2NvcmUvcmVzb3VyY2VzL3N0b3JlL2N1c3RvbWl6YWJsZV9zdG9yZS5nbw==) | `77.77% <0.00%> (-11.12%)` | :arrow_down: |
| [pkg/plugins/resources/memory/store.go](https://codecov.io/gh/kumahq/kuma/pull/2414/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq#diff-cGtnL3BsdWdpbnMvcmVzb3VyY2VzL21lbW9yeS9zdG9yZS5nbw==) | `77.71% <0.00%> (-4.35%)` | :arrow_down: |
| [pkg/core/resources/manager/cache.go](https://codecov.io/gh/kumahq/kuma/pull/2414/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq#diff-cGtnL2NvcmUvcmVzb3VyY2VzL21hbmFnZXIvY2FjaGUuZ28=) | `79.22% <0.00%> (-2.60%)` | :arrow_down: |
| [api/internal/util/proto/proto.go](https://codecov.io/gh/kumahq/kuma/pull/2414/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq#diff-YXBpL2ludGVybmFsL3V0aWwvcHJvdG8vcHJvdG8uZ28=) | `70.00% <0.00%> (ø)` | |
| [api/internal/util/proto/types.go](https://codecov.io/gh/kumahq/kuma/pull/2414/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq#diff-YXBpL2ludGVybmFsL3V0aWwvcHJvdG8vdHlwZXMuZ28=) | `100.00% <0.00%> (ø)` | |
| [api/observability/v1/mads.pb.go](https://codecov.io/gh/kumahq/kuma/pull/2414/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq#diff-YXBpL29ic2VydmFiaWxpdHkvdjEvbWFkcy5wYi5nbw==) | `35.56% <0.00%> (+1.03%)` | :arrow_up: |
| [pkg/mads/v1/client/client.go](https://codecov.io/gh/kumahq/kuma/pull/2414/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq#diff-cGtnL21hZHMvdjEvY2xpZW50L2NsaWVudC5nbw==) | `43.75% <0.00%> (+2.50%)` | :arrow_up: |
| [pkg/kds/client/sink.go](https://codecov.io/gh/kumahq/kuma/pull/2414/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq#diff-cGtnL2tkcy9jbGllbnQvc2luay5nbw==) | `52.27% <0.00%> (+4.54%)` | :arrow_up: |
| ... and [6 more](https://codecov.io/gh/kumahq/kuma/pull/2414/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq) | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/kumahq/kuma/pull/2414?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/kumahq/kuma/pull/2414?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq). Last update [fa046ac...cb6193e](https://codecov.io/gh/kumahq/kuma/pull/2414?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kumahq).


Patch:
diff --git a/.golangci.yml b/.golangci.yml
index 7f521a536..c4eb28722 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -36,3 +36,6 @@ issues:
     - linters:
         - staticcheck
       text: "SA1019: l.UseOriginalDst is deprecated: Do not use." # TODO What is the up-to-date alternative ?
+    - linters:
+        - staticcheck
+      text: "IsIngress is deprecated: use ZoneIngress" # It's deprecated but Kuma still needs to support it for backwards compatibility.
diff --git a/api/go.mod b/api/go.mod
deleted file mode 100644
index 062f3512b..000000000
--- a/api/go.mod
+++ /dev/null
@@ -1,22 +0,0 @@
-module github.com/kumahq/kuma/api
-
-go 1.16
-
-require (
-	github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d
-	github.com/envoyproxy/protoc-gen-validate v0.4.1
-	github.com/ghodss/yaml v1.0.0
-	github.com/golang/protobuf v1.5.2
-	github.com/kumahq/protoc-gen-kumadoc v0.1.7
-	github.com/onsi/ginkgo v1.16.2
-	github.com/onsi/gomega v1.13.0
-	github.com/pkg/errors v0.9.1
-	google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013
-	google.golang.org/grpc v1.38.0
-	google.golang.org/protobuf v1.27.0
-// When running `make generate` in this folder, one can get into errors of missing proto dependecies
-// To solve the issue, uncomment the section below and run `go mod download`
-//github.com/cncf/udpa latest
-//github.com/envoyproxy/data-plane-api latest
-//github.com/googleapis/googleapis latest
-)
diff --git a/api/go.sum b/api/go.sum
deleted file mode 100644
index 5c6f5dfc2..000000000
--- a/api/go.sum
+++ /dev/null
@@ -1,185 +0,0 @@
-cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
-github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
-github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
-github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-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.9-0.20210217033140-668b12f5399d h1:QyzYnTnPE15SQyUeqU6qLbWxMkwyAyu+vGksa0b7j00=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
-github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v0.4.1 h1:7dLaJvASGRD7X49jSCSXXHwKPm0ZN9r9kJD+p+vS7dM=
-github.com/envoyproxy/protoc-gen-validate v0.4.1/go.mod h1:E+IEazqdaWv3FrnGtZIu3b9fPFMK8AzeTTrk9SfVwWs=
-github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
-github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
-github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
-github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
-github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
-github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
-github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
-github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
-github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
-github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE=
-github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
-github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
-github.com/kumahq/protoc-gen-kumadoc v0.1.7 h1:WgwGa7QgVbj2QVzRU5hQaMxSJ29WppDHVczo3FUIc84=
-github.com/kumahq/protoc-gen-kumadoc v0.1.7/go.mod h1:F+c9RjgKlv1Q3UEoPJCtMJw8Fd+X5PfG5jlkTSfZOMA=
-github.com/lyft/protoc-gen-star v0.5.1/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU=
-github.com/lyft/protoc-gen-star v0.5.2/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU=
-github.com/mitchellh/copystructure v1.1.1/go.mod h1:EBArHfARyrSWO/+Wyr9zwEkc6XMFB9XyNgFNmRkZZU4=
-github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
-github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
-github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
-github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
-github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
-github.com/onsi/ginkgo v1.16.2 h1:HFB2fbVIlhIfCfOW81bZFbiC/RvnpXSdhbF2/DJr134=
-github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E=
-github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
-github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.13.0 h1:7lLHu94wT9Ij0o6EWWclhu0aOh32VxhkwEJvzuWPeak=
-github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY=
-github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
-github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
-github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
-golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
-golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
-golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-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=
-golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0=
-golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
-golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c=
-golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
-golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
-golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-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=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
-google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
-google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0=
-google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
-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=
-google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
-google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
-google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
-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.27.0 h1:KhgSLlr/moiqjv0qUsSnLvdUL7NH7PHW8aZGn7Jpjko=
-google.golang.org/protobuf v1.27.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
-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=
-honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/api/mesh/v1alpha1/dataplane_helpers.go b/api/mesh/v1alpha1/dataplane_helpers.go
index 8fa86e50d..2da9500d6 100644
--- a/api/mesh/v1alpha1/dataplane_helpers.go
+++ b/api/mesh/v1alpha1/dataplane_helpers.go
@@ -394,7 +394,7 @@ func (d *Dataplane) GetIdentifyingService() string {
 // IsIngress returns true if this Dataplane specifies an ingress
 // configuration.
 //
-// Deprecated in favor of ZoneIngress.
+// Deprecated: use ZoneIngress instead.
 func (d *Dataplane) IsIngress() bool {
 	if d.GetNetworking() == nil {
 		return false
diff --git a/app/kuma-ui/pkg/resources/data/css/app.ba88165d.css b/app/kuma-ui/pkg/resources/data/css/app.e3a402b2.css
similarity index 65%
rename from app/kuma-ui/pkg/resources/data/css/app.ba88165d.css
rename to app/kuma-ui/pkg/resources/data/css/app.e3a402b2.css
index 8ad1b7684..9a67d9cae 100644
--- a/app/kuma-ui/pkg/resources/data/css/app.ba88165d.css
+++ b/app/kuma-ui/pkg/resources/data/css/app.e3a402b2.css
@@ -1,3 +1,3 @@
 .status[data-v-56071258]{font-size:var(--type-sm);color:var(--gray-3);letter-spacing:0;line-height:20px}.status__dot[data-v-56071258]{--status-color:var(--red-600);display:inline-block;width:8px;height:8px;border-radius:100%;margin-right:6px;background-color:var(--status-color)}.status__dot.is-active[data-v-56071258]{--status-color:var(--green-500)}.upgrade-check .k-alert.k-alert[data-v-548c3348]{padding:var(--spacing-xxs) var(--spacing-xs)}.alert-content[data-v-548c3348]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:var(--type-sm)}.alert-content>[data-v-548c3348]:first-of-type{margin-right:var(--spacing-sm)}.alert-content .k-button[data-v-548c3348]{text-decoration:none}.alert-content .k-button[data-v-548c3348]:after{display:none}.warning-button[data-v-548c3348]{--KButtonPrimaryBase:#f2a230;--KButtonPrimaryHover:#f2a230;--KButtonPrimaryActive:#f2a230}.alert-content[data-v-0c7749f3]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:var(--type-sm)}.alert-content>[data-v-0c7749f3]:first-of-type{margin-right:var(--spacing-sm)}.alert-content .k-button[data-v-0c7749f3]{text-decoration:none}.alert-content .k-button[data-v-0c7749f3]:after{display:none}.success-button[data-v-0c7749f3]{--KButtonPrimaryBase:#19a654;--KButtonPrimaryHover:#19a654;--KButtonPrimaryActive:#19a654}.main-header[data-v-74be839c]{position:fixed;z-index:1030;top:0;left:0;width:100%;height:var(--topbar-height);border-bottom:1px solid var(--black-10);background-color:#fff}.main-header--simple[data-v-74be839c]{border-bottom:0;background:none}.logo img[data-v-74be839c]{display:block;width:auto;height:auto;max-height:var(--logo-max-height)}.upgrade-check-wrapper[data-v-74be839c]{margin-left:auto}.status-badge[data-v-74be839c]{--KBadgeWidth:auto;--KBadgePaddingX:var(--spacing-sm)}.app-status[data-v-74be839c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.app-status .kpop-control[data-v-74be839c]{max-height:27px}.app-status .kpop-control[data-v-74be839c]:after{display:none}@media screen and (min-width:1024px){.app-status--desktop[data-v-74be839c]{display:block}.app-status--mobile[data-v-74be839c]{display:none}}@media screen and (max-width:1023px){.app-status--desktop[data-v-74be839c]{display:none}.app-status--mobile[data-v-74be839c]{display:block}}@media screen and (min-width:990px){.status-badge[data-v-74be839c]{margin-left:var(--spacing-sm)}}@media screen and (max-width:989px){.status-badge[data-v-74be839c]{margin-top:var(--spacing-sm)}}@media screen and (max-width:599px){.upgrade-check-wrapper[data-v-74be839c]{display:none}}.loading-container[data-v-024cc085]{display:-webkit-box;display:-ms-flexbox;display:flex;max-width:350px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.loading-container .progress[data-v-024cc085]{margin-top:1rem;width:130%;background-color:#e6e6e6}.loading-container .progress .progress-bar[data-v-024cc085]{height:5px;background-color:var(--LoaderProgressBarBG)}.full-screen[data-v-9cbb746e]{background:#fff;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:50000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}
 
-/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box;border-width:0;border-style:solid;border-color:#e2e8f0}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.border{border-width:1px}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.flex-shrink{-ms-flex-negative:1;flex-shrink:1}.font-semibold{font-weight:600}.text-sm{font-size:.875rem}.my-0{margin-top:0;margin-bottom:0}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mt-8{margin-top:2rem}.ml-auto{margin-left:auto}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.relative{position:relative}.resize{resize:both}.uppercase{text-transform:uppercase}.no-underline{text-decoration:none}.tracking-widest{letter-spacing:.1em}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:768px){.md\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.md\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.md\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.md\:mr-2{margin-right:.5rem}.md\:ml-auto{margin-left:auto}.md\:py-0{padding-top:0;padding-bottom:0}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:w-1\/2{width:50%}}@media (min-width:1280px){.xl\:flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.xl\:w-auto{width:auto}.xl\:w-1\/3{width:33.333333%}}:root{--base-font-family:Roboto,-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif;--base-font-size-root:62.5%;--base-font-size:15px;--font-weight-light:400;--font-weight-bold:700;--gray-1:#faf5f9;--gray-2:#dbbbd5;--gray-3:rgba(0,0,0,0.45);--gray-4:#ebebeb;--gray-5:#f7f9fa;--gray-6:#fdfdfd;--gray-7:#f3f5f7;--blue-1:#2d64b3;--blue-2:#3d88f2;--blue-3:rgba(61,136,242,0.07);--blue-4:#1155cb;--black-1:rgba(0,0,0,0.75);--green-1:#1b9844;--logo-coral:#ee485d;--logo-teal:#00cdde;--logo-mint:#00e8c2;--logo-navy:#172350;--logo-green:#3db664;--logo-purple:#290b53;--logo-pink:#ff5d8c;--brand-color-1:var(--logo-coral);--brand-color-2:var(--logo-teal);--brand-color-3:var(--logo-mint);--brand-color-4:var(--logo-navy);--brand-color-5:var(--logo-green);--brand-color-6:var(--logo-purple);--brand-color-7:var(--logo-pink);--topbar-height:60px;--logo-max-height:36px;--global-content-max-width:100rem;--sidebar-width:240px;--sidebar-width-closed:63px;--sidebar-bg-color:var(--gray-6);--sidebarOpenWidth:180px;--sidebarCollapsedWidth:55px;--subnavWidth:210px;--subnavHorizontalMargin:1rem;--sidebarBackground:var(--white);--headerHeight:var(--topbar-height);--transition:cubic-bezier(1.0,0.5,0.8,1.0);--transitionTiming:0.1s;--core-theme-color:#290b53;--core-theme-color-light:rgba(41,11,83,0.75);--core-theme-color-lighter:rgba(41,11,83,0.08);--core-theme-color-dark:#000;--core-theme-color-darker:#000;--KButtonPrimaryBase:var(--core-theme-color);--KButtonPrimaryHover:var(--core-theme-color-light);--KButtonPrimaryActive:var(--core-theme-color-light);--KRadioPrimary:var(--core-theme-color);--KInputFocus:var(--core-theme-color);--SidebarIconColor:var(--core-theme-color);--SidebarLinkColor:var(--core-theme-color-darker);--SidebarLinkBGColor:var(--core-theme-color-lighter);--SidebarTitleColor:var(--core-theme-color-light);--LinkColorBase:var(--core-theme-color);--LinkColorHover:var(--core-theme-color-light);--MetricsCardBGColorHover:var(--core-theme-color-lighter);--WizardTabBGColor:var(--core-theme-color);--WizardTabTextColor:#fff;--KTabsActiveColor:var(--core-theme-color);--DataOverviewTableLinkColor:var(--core-theme-color);--MeshSelectorTitleColor:var(--core-theme-color-light);--MeshSelectorInputTextColor:var(--core-theme-color);--MeshSelectorInputBorderColor:var(--core-theme-color-lighter);--MeshSelectorInputBorderColorFocus:var(--core-theme-color-light);--LoaderProgressBarBG:var(--core-theme-color-light);--KEmptyStateContentWidth:85%}.kutil-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.kutil-img-full{width:100%}.kutil-img-fluid,.kutil-img-full{max-width:100%;height:auto}.kutil-clear-text{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.kutil-quotify{quotes:"“" "”" "‘" "’"}.kutil-quotify:before{content:open-quote}.kutil-quotify:after{content:close-quote}.kutil-sticky{position:-webkit-sticky;position:sticky;top:0}.kutil-sticky:after,.kutil-sticky:before{content:"";display:table}.arrow-link{text-decoration:none;color:var(--blue-4)}.arrow-link,.k-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-button{font-weight:400!important}.arrow-link:after,.k-button:after{display:inline-block;content:"›";margin-left:5px}.capitalize{display:inline-block;text-transform:capitalize}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-uppercase{text-transform:uppercase}.text-italic{font-style:italic}.font-normal{font-weight:400}.font-light{font-weight:100}.font-semibold{font-weight:500}.font-bold{font-weight:700}.badge{display:inline-block;padding:.25rem .4rem;font-size:75%;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.top-border{border-top:1px solid var(--black-10)}.bottom-border{border-bottom:1px solid var(--black-10)}.text-muted{color:var(--black-45)!important}.text-danger{color:var(--red-500)!important}.h-100{height:100%}.h-screen{min-height:100vh}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Thin.ad538a69.woff2) format("woff2"),url(../fonts/Roboto-Thin.03fb3a93.woff) format("woff");font-weight:100;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-ThinItalic.5b4a33e1.woff2) format("woff2"),url(../fonts/Roboto-ThinItalic.4ced2a97.woff) format("woff");font-weight:100;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Light.d26871e8.woff2) format("woff2"),url(../fonts/Roboto-Light.c8405cfa.woff) format("woff");font-weight:300;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-LightItalic.e8eaae90.woff2) format("woff2"),url(../fonts/Roboto-LightItalic.f6dd13d5.woff) format("woff");font-weight:300;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Regular.73f0a88b.woff2) format("woff2"),url(../fonts/Roboto-Regular.878ad715.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Italic.4357beb8.woff2) format("woff2"),url(../fonts/Roboto-Italic.6521f388.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Medium.90d16760.woff2) format("woff2"),url(../fonts/Roboto-Medium.7b225d4d.woff) format("woff");font-weight:500;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-MediumItalic.13ec0eb5.woff2) format("woff2"),url(../fonts/Roboto-MediumItalic.5df7f053.woff) format("woff");font-weight:500;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Bold.b52fac2b.woff2) format("woff2"),url(../fonts/Roboto-Bold.eb43b4c3.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-BoldItalic.94008e69.woff2) format("woff2"),url(../fonts/Roboto-BoldItalic.563c4bd6.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Black.59eb3601.woff2) format("woff2"),url(../fonts/Roboto-Black.8f766bb9.woff) format("woff");font-weight:900;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-BlackItalic.f75569f8.woff2) format("woff2"),url(../fonts/Roboto-BlackItalic.83b2c7d0.woff) format("woff");font-weight:900;font-style:italic}@font-face{font-family:Roboto Mono;src:url(../fonts/RobotoMono-Regular.a48ac416.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Roboto Mono;src:url(../fonts/RobotoMono-Medium.5a45b286.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:Roboto Mono;src:url(../fonts/RobotoMono-Bold.c0c4a337.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(../fonts/MaterialIcons-Regular.e79bfd88.eot);src:local("Material Icons"),local("MaterialIcons-Regular"),url(../fonts/MaterialIcons-Regular.570eb838.woff2) format("woff2"),url(../fonts/MaterialIcons-Regular.012cf6a1.woff) format("woff"),url(../fonts/MaterialIcons-Regular.a37b0c01.ttf) format("truetype")}body{padding-top:var(--topbar-height);font-family:var(--base-font-family)}.title-3x{font-size:var(--type-xxxl)}.title-2x{font-size:var(--type-xxl)}.title-1x{font-size:var(--type-xl)}a:link,a:visited{color:var(--LinkColorBase);text-decoration:underline}a:active,a:focus,a:hover{color:var(--LinkColorHover)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:3px;border:1px solid rgba(23,130,207,.35);font-size:16px;color:#1155cb;line-height:20px;padding:10px 16px 10px 13px;background-color:#fff;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMSAxbDQgNCA0LTQiIHN0cm9rZT0iIzE3ODJDRiIgc3Ryb2tlLXdpZHRoPSIxLjUiIGZpbGw9Im5vbmUiLz48L3N2Zz4=);background-position:calc(100% - 13px) 50%;background-repeat:no-repeat}.k-button,[type=button],button{-webkit-transition:none!important;transition:none!important}.code-sample{font-family:var(--font-family-mono)}.form-container{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%;padding-right:15px;padding-left:15px;margin:0 auto}@media (max-width:1200px){.form-container{-webkit-box-flex:0;-ms-flex:0 0 70%;flex:0 0 70%;max-width:70%}}@media (max-width:860px){.form-container{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}}.vue-form-generator .form-control{border:1px solid rgba(0,0,0,.12);-webkit-box-shadow:none;box-shadow:none;color:rgba(0,0,0,.7)}.form-group,.vue-form-generator .form-group{margin-bottom:1.5rem}.form-group:last-child,.vue-form-generator .form-group:last-child{margin-bottom:2rem}.vue-form-generator .field-advanced{margin-top:-.5rem;margin-bottom:.5rem}.vue-form-generator .field-advanced .form-group:last-child{margin-bottom:1rem}.top-border{padding-top:1.5rem;border-top:1px solid rgba(0,0,0,.08)}.bottom-border{padding-bottom:1.5rem;border-bottom:1px solid rgba(0,0,0,.08)}.form-control{font-size:15px;color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.12);border-radius:3px;border-width:1px}.form-control:focus{outline:none;border:1px solid #80caff}.form-control:disabled{background-color:#f7f7f7;opacity:.75}.form-control.has-error{border:1px solid #ff8280}.vue-form-generator .form-group.hide-label>label{display:none}.vue-form-generator .form-group label{font-weight:500}.form-group label{width:100%}.form-group label small{float:right;font-size:14px;font-style:italic;font-weight:400;color:rgba(0,0,0,.5)}.form-group.required>label:after{display:none}.form-group.optional>label,.form-group.semi-optional>label{position:relative;width:100%}.form-group.optional>label:after,.form-group.semi-optional>label:after{position:absolute;display:block;top:0;right:0;font-size:14px;font-style:italic;font-weight:400;color:rgba(0,0,0,.5)}.form-group.optional>label:after{content:"Optional"}.form-group.semi-optional>label:after{content:"Semi-Optional"}.vue-form-generator span.help .icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+PHBhdGggZmlsbD0iIzAwODZFNiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNiAxMUE1IDUgMCAxMTYuMDAxLjk5OSA1IDUgMCAwMTYgMTFNNiAwYTYgNiAwIDEwMCAxMkE2IDYgMCAwMDYgMG0wIDNhMiAyIDAgMDAtMiAyaDFhMSAxIDAgMTExIDEgMSAxIDAgMDAtMSAxaDFhMiAyIDAgMTAwLTR6TTUgOWgyVjhINXYxeiIvPjwvc3ZnPg==);width:.75rem;height:.75rem}.vue-form-generator span.help .helpText{left:-108px;width:224px;padding:.5rem .75rem;color:rgba(0,0,0,.75);font-weight:400;font-size:14px;text-align:left;border:1px solid #d6d6d6;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 0 4px 0 rgba(0,0,0,.12);box-shadow:0 0 4px 0 rgba(0,0,0,.12);z-index:900}.vue-form-generator span.help .helpText:after,.vue-form-generator span.help .helpText:before{position:absolute;top:100%;left:50%;height:0;width:0;border:solid transparent;pointer-events:none;content:" "}.vue-form-generator span.help .helpText:before{border-top-color:#d6d6d6;border-width:13px;margin-left:-13px}.vue-form-generator span.help .helpText:after{border-top-color:#fff;border-width:12px;margin-left:-12px}.hint{font-size:small;margin-top:5px;margin-bottom:10px;opacity:.6}.option-field{padding-left:1.5rem;width:100%}.option-field .form-group:last-child{margin-bottom:0}.custom-control-indicator{background-color:rgba(0,0,0,.12)}.custom-control-input:checked~.custom-control-indicator{background-color:#3295fc}.custom-control-input:focus~.custom-control-indicator{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #3295fc;box-shadow:0 0 0 1px #fff,0 0 0 3px #3295fc}.form-group label{font-size:14px;font-weight:500;color:#262626;margin:0 0 8px 0}.form-check-input,.form-control .list-row input[type=checkbox],.form-group .field-wrap input[type=checkbox]{appearance:none;-moz-appearance:none;-webkit-appearance:none;position:relative;vertical-align:middle;display:inline-block;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-check-input:focus,.form-control .list-row input[type=checkbox]:focus,.form-group .field-wrap input[type=checkbox]:focus{outline:none}.form-check-input:before,.form-control .list-row input[type=checkbox]:before,.form-group .field-wrap input[type=checkbox]:before{content:"";display:inline-block;height:16px;width:16px;border:1px solid #bfbfbf;border-radius:2px;margin-right:5px;background:#fff}.form-check-input:checked:before,.form-control .list-row input[type=checkbox]:checked:before,.form-group .field-wrap input[type=checkbox]:checked:before{background-color:#3295fc;border-color:#3295fc}.form-check-input:checked:after,.form-control .list-row input[type=checkbox]:checked:after,.form-group .field-wrap input[type=checkbox]:checked:after{content:"";position:absolute;top:4px;left:4px;display:inline-block;height:6px;width:9px;color:#fff;border-left:2px solid;border-bottom:2px solid;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.form-check-input::-ms-check,.form-control .list-row input[type=checkbox]::-ms-check,.form-group .field-wrap input[type=checkbox]::-ms-check{display:inline-block;height:16px;width:16px;border:1px solid #bfbfbf;border-radius:2px;margin-right:5px}.form-check-input:checked::-ms-check,.form-control .list-row input[type=checkbox]:checked::-ms-check,.form-group .field-wrap input[type=checkbox]:checked::-ms-check{color:#fff;background-color:#3295fc}.form-group.required input[type=checkbox],.form-group [required=required]{-webkit-box-shadow:none;box-shadow:none}.form-control input[type=checkbox],.form-control label{vertical-align:middle;line-height:1rem}.form-inline .form-check-input{margin-top:.25rem}.vue-form-generator .form-group.field-checkbox label{margin-top:-5px}.vue-form-generator .field-switch .field-wrap input[type=checkbox]{position:absolute}.vue-form-generator .field-switch .field-wrap label{width:42px;height:20px;margin:0}.vue-form-generator .field-switch input:checked~.label{background:#2196f3;-webkit-box-shadow:none;box-shadow:none}.vue-form-generator .field-switch .label{background:#ccc}.vue-form-generator .field-switch .label:after,.vue-form-generator .field-switch .label:before{color:rgba(0,0,0,.7);text-shadow:none;margin-left:42px;font-size:14px;left:18px;font-weight:400;text-transform:none;font-family:Roboto;width:-webkit-max-content;width:-moz-max-content;width:max-content}.vue-form-generator .field-switch .handle{width:17px;height:17px}.vue-form-generator .field-switch input:checked~.handle{left:calc(100% - 18px)}.vue-form-generator .field-switch .handle:before{background:none;-webkit-box-shadow:none;box-shadow:none}.entity-status{letter-spacing:0;line-height:20px;color:var(--green-400)}.entity-status,.entity-total-updates{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.entity-total-updates{gap:2px;pointer-events:auto!important}.entity-status.is-offline{color:var(--red-600)}.entity-status.is-degraded{color:#ff8040}.entity-status.is-degraded .entity-status__dot{background-color:#ff8040}.entity-status.is-offline .entity-status__dot{background-color:var(--red-600)}.entity-status__dot{display:inline-block;width:8px;height:8px;border-radius:100%;margin-right:6px;background-color:var(--green-400);-ms-flex-negative:0;flex-shrink:0}.kong-icon--centered{display:block;margin:0 auto 10px auto;text-align:center}@media screen and (min-width:1024px){.k-card--small{max-width:65%}}.empty-state-content p{width:100%;max-width:var(--KEmptyStateContentWidth)!important}.empty-state-wrapper{padding:2rem 0!important}.k-tabs .tab-container{outline:0!important}.k-popover{z-index:1031!important}.k-popover .k-badge{display:inline}.help-icon{--i:22px;margin:0 8px}.help-icon,.help-icon a{display:inline-block;width:var(--i)}.help-icon a{height:var(--i);line-height:var(--i);border-radius:100%;color:#fff;text-decoration:none;text-align:center;font-size:12px;background-color:var(--gray-2);cursor:pointer}.custom-control-icon{display:inline-block;margin-right:5px;font-size:var(--type-lg);line-height:0;max-height:18px}.external-link-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);font-family:var(--font-family-sans);font-size:1rem;font-weight:400;line-height:1.25;text-decoration:none;vertical-align:middle;border:1px solid transparent;border-radius:3px;cursor:pointer;color:#fff!important;background-color:var(--KButtonPrimaryBase);text-decoration:none!important}.external-link-btn:after{display:inline-block;content:"\203A";margin-left:5px}.external-link-btn:hover{background-color:#0089eb}.main-content{padding:44px;-webkit-transition:var(--transitionTiming) margin var(--transition);transition:var(--transitionTiming) margin var(--transition)}.page{max-width:76rem;margin:0 auto}.main-content-container{max-width:var(--global-content-max-width);margin:0 auto}.welcome{max-width:640px;margin-left:auto;margin-right:auto}.fade-enter-active,.fade-leave-active{-webkit-transition:opacity 0 linear;transition:opacity 0 linear}.fade-enter,.fade-leave-to{opacity:0}
\ No newline at end of file
+/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box;border-width:0;border-style:solid;border-color:#e2e8f0}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.border{border-width:1px}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-grow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.flex-shrink{-ms-flex-negative:1;flex-shrink:1}.font-semibold{font-weight:600}.text-sm{font-size:.875rem}.my-0{margin-top:0;margin-bottom:0}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mt-8{margin-top:2rem}.ml-auto{margin-left:auto}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.relative{position:relative}.resize{resize:both}.uppercase{text-transform:uppercase}.no-underline{text-decoration:none}.tracking-widest{letter-spacing:.1em}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:768px){.md\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.md\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.md\:flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.md\:mr-2{margin-right:.5rem}.md\:ml-auto{margin-left:auto}.md\:py-0{padding-top:0;padding-bottom:0}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:w-1\/2{width:50%}}@media (min-width:1280px){.xl\:flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.xl\:w-auto{width:auto}.xl\:w-1\/3{width:33.333333%}}:root{--base-font-family:Roboto,-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif;--base-font-size-root:62.5%;--base-font-size:15px;--font-weight-light:400;--font-weight-bold:700;--gray-1:#faf5f9;--gray-2:#dbbbd5;--gray-3:rgba(0,0,0,0.45);--gray-4:#ebebeb;--gray-5:#f7f9fa;--gray-6:#fdfdfd;--gray-7:#f3f5f7;--blue-1:#2d64b3;--blue-2:#3d88f2;--blue-3:rgba(61,136,242,0.07);--blue-4:#1155cb;--black-1:rgba(0,0,0,0.75);--green-1:#1b9844;--logo-coral:#ee485d;--logo-teal:#00cdde;--logo-mint:#00e8c2;--logo-navy:#172350;--logo-green:#3db664;--logo-purple:#290b53;--logo-pink:#ff5d8c;--brand-color-1:var(--logo-coral);--brand-color-2:var(--logo-teal);--brand-color-3:var(--logo-mint);--brand-color-4:var(--logo-navy);--brand-color-5:var(--logo-green);--brand-color-6:var(--logo-purple);--brand-color-7:var(--logo-pink);--topbar-height:60px;--logo-max-height:36px;--global-content-max-width:100rem;--sidebar-width:240px;--sidebar-width-closed:63px;--sidebar-bg-color:var(--gray-6);--sidebarOpenWidth:180px;--sidebarCollapsedWidth:55px;--subnavWidth:210px;--subnavHorizontalMargin:1rem;--sidebarBackground:var(--white);--headerHeight:var(--topbar-height);--transition:cubic-bezier(1.0,0.5,0.8,1.0);--transitionTiming:0.1s;--core-theme-color:#290b53;--core-theme-color-light:rgba(41,11,83,0.75);--core-theme-color-lighter:rgba(41,11,83,0.08);--core-theme-color-dark:#000;--core-theme-color-darker:#000;--KButtonPrimaryBase:var(--core-theme-color);--KButtonPrimaryHover:var(--core-theme-color-light);--KButtonPrimaryActive:var(--core-theme-color-light);--KRadioPrimary:var(--core-theme-color);--KInputFocus:var(--core-theme-color);--SidebarIconColor:var(--core-theme-color);--SidebarLinkColor:var(--core-theme-color-darker);--SidebarLinkBGColor:var(--core-theme-color-lighter);--SidebarTitleColor:var(--core-theme-color-light);--LinkColorBase:var(--core-theme-color);--LinkColorHover:var(--core-theme-color-light);--MetricsCardBGColorHover:var(--core-theme-color-lighter);--WizardTabBGColor:var(--core-theme-color);--WizardTabTextColor:#fff;--KTabsActiveColor:var(--core-theme-color);--DataOverviewTableLinkColor:var(--core-theme-color);--MeshSelectorTitleColor:var(--core-theme-color-light);--MeshSelectorInputTextColor:var(--core-theme-color);--MeshSelectorInputBorderColor:var(--core-theme-color-lighter);--MeshSelectorInputBorderColorFocus:var(--core-theme-color-light);--LoaderProgressBarBG:var(--core-theme-color-light);--KEmptyStateContentWidth:85%}.kutil-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.kutil-img-full{width:100%}.kutil-img-fluid,.kutil-img-full{max-width:100%;height:auto}.kutil-clear-text{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.kutil-quotify{quotes:"“" "”" "‘" "’"}.kutil-quotify:before{content:open-quote}.kutil-quotify:after{content:close-quote}.kutil-sticky{position:-webkit-sticky;position:sticky;top:0}.kutil-sticky:after,.kutil-sticky:before{content:"";display:table}.arrow-link{text-decoration:none;color:var(--blue-4)}.arrow-link,.k-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-button{font-weight:400!important}.arrow-link:after,.k-button:after{display:inline-block;content:"›";margin-left:5px}.capitalize{display:inline-block;text-transform:capitalize}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-uppercase{text-transform:uppercase}.text-italic{font-style:italic}.font-normal{font-weight:400}.font-light{font-weight:100}.font-semibold{font-weight:500}.font-bold{font-weight:700}.badge{display:inline-block;padding:.25rem .4rem;font-size:75%;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.top-border{border-top:1px solid var(--black-10)}.bottom-border{border-bottom:1px solid var(--black-10)}.text-muted{color:var(--black-45)!important}.text-danger{color:var(--red-500)!important}.h-100{height:100%}.h-screen{min-height:100vh}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Thin.ad538a69.woff2) format("woff2"),url(../fonts/Roboto-Thin.03fb3a93.woff) format("woff");font-weight:100;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-ThinItalic.5b4a33e1.woff2) format("woff2"),url(../fonts/Roboto-ThinItalic.4ced2a97.woff) format("woff");font-weight:100;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Light.d26871e8.woff2) format("woff2"),url(../fonts/Roboto-Light.c8405cfa.woff) format("woff");font-weight:300;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-LightItalic.e8eaae90.woff2) format("woff2"),url(../fonts/Roboto-LightItalic.f6dd13d5.woff) format("woff");font-weight:300;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Regular.73f0a88b.woff2) format("woff2"),url(../fonts/Roboto-Regular.878ad715.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Italic.4357beb8.woff2) format("woff2"),url(../fonts/Roboto-Italic.6521f388.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Medium.90d16760.woff2) format("woff2"),url(../fonts/Roboto-Medium.7b225d4d.woff) format("woff");font-weight:500;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-MediumItalic.13ec0eb5.woff2) format("woff2"),url(../fonts/Roboto-MediumItalic.5df7f053.woff) format("woff");font-weight:500;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Bold.b52fac2b.woff2) format("woff2"),url(../fonts/Roboto-Bold.eb43b4c3.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-BoldItalic.94008e69.woff2) format("woff2"),url(../fonts/Roboto-BoldItalic.563c4bd6.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Black.59eb3601.woff2) format("woff2"),url(../fonts/Roboto-Black.8f766bb9.woff) format("woff");font-weight:900;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-BlackItalic.f75569f8.woff2) format("woff2"),url(../fonts/Roboto-BlackItalic.83b2c7d0.woff) format("woff");font-weight:900;font-style:italic}@font-face{font-family:Roboto Mono;src:url(../fonts/RobotoMono-Regular.a48ac416.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Roboto Mono;src:url(../fonts/RobotoMono-Medium.5a45b286.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:Roboto Mono;src:url(../fonts/RobotoMono-Bold.c0c4a337.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(../fonts/MaterialIcons-Regular.e79bfd88.eot);src:local("Material Icons"),local("MaterialIcons-Regular"),url(../fonts/MaterialIcons-Regular.570eb838.woff2) format("woff2"),url(../fonts/MaterialIcons-Regular.012cf6a1.woff) format("woff"),url(../fonts/MaterialIcons-Regular.a37b0c01.ttf) format("truetype")}body{padding-top:var(--topbar-height);font-family:var(--base-font-family)}[type=button],[type=reset],[type=submit],button{-webkit-appearance:none}.title-3x{font-size:var(--type-xxxl)}.title-2x{font-size:var(--type-xxl)}.title-1x{font-size:var(--type-xl)}a:link,a:visited{color:var(--LinkColorBase);text-decoration:underline}a:active,a:focus,a:hover{color:var(--LinkColorHover)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:3px;border:1px solid rgba(23,130,207,.35);font-size:16px;color:#1155cb;line-height:20px;padding:10px 16px 10px 13px;background-color:#fff;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMSAxbDQgNCA0LTQiIHN0cm9rZT0iIzE3ODJDRiIgc3Ryb2tlLXdpZHRoPSIxLjUiIGZpbGw9Im5vbmUiLz48L3N2Zz4=);background-position:calc(100% - 13px) 50%;background-repeat:no-repeat}.k-button,[type=button],button{-webkit-transition:none!important;transition:none!important}.code-sample{font-family:var(--font-family-mono)}.form-container{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%;padding-right:15px;padding-left:15px;margin:0 auto}@media (max-width:1200px){.form-container{-webkit-box-flex:0;-ms-flex:0 0 70%;flex:0 0 70%;max-width:70%}}@media (max-width:860px){.form-container{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}}.vue-form-generator .form-control{border:1px solid rgba(0,0,0,.12);-webkit-box-shadow:none;box-shadow:none;color:rgba(0,0,0,.7)}.form-group,.vue-form-generator .form-group{margin-bottom:1.5rem}.form-group:last-child,.vue-form-generator .form-group:last-child{margin-bottom:2rem}.vue-form-generator .field-advanced{margin-top:-.5rem;margin-bottom:.5rem}.vue-form-generator .field-advanced .form-group:last-child{margin-bottom:1rem}.top-border{padding-top:1.5rem;border-top:1px solid rgba(0,0,0,.08)}.bottom-border{padding-bottom:1.5rem;border-bottom:1px solid rgba(0,0,0,.08)}.form-control{font-size:15px;color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.12);border-radius:3px;border-width:1px}.form-control:focus{outline:none;border:1px solid #80caff}.form-control:disabled{background-color:#f7f7f7;opacity:.75}.form-control.has-error{border:1px solid #ff8280}.vue-form-generator .form-group.hide-label>label{display:none}.vue-form-generator .form-group label{font-weight:500}.form-group label{width:100%}.form-group label small{float:right;font-size:14px;font-style:italic;font-weight:400;color:rgba(0,0,0,.5)}.form-group.required>label:after{display:none}.form-group.optional>label,.form-group.semi-optional>label{position:relative;width:100%}.form-group.optional>label:after,.form-group.semi-optional>label:after{position:absolute;display:block;top:0;right:0;font-size:14px;font-style:italic;font-weight:400;color:rgba(0,0,0,.5)}.form-group.optional>label:after{content:"Optional"}.form-group.semi-optional>label:after{content:"Semi-Optional"}.vue-form-generator span.help .icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+PHBhdGggZmlsbD0iIzAwODZFNiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNiAxMUE1IDUgMCAxMTYuMDAxLjk5OSA1IDUgMCAwMTYgMTFNNiAwYTYgNiAwIDEwMCAxMkE2IDYgMCAwMDYgMG0wIDNhMiAyIDAgMDAtMiAyaDFhMSAxIDAgMTExIDEgMSAxIDAgMDAtMSAxaDFhMiAyIDAgMTAwLTR6TTUgOWgyVjhINXYxeiIvPjwvc3ZnPg==);width:.75rem;height:.75rem}.vue-form-generator span.help .helpText{left:-108px;width:224px;padding:.5rem .75rem;color:rgba(0,0,0,.75);font-weight:400;font-size:14px;text-align:left;border:1px solid #d6d6d6;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 0 4px 0 rgba(0,0,0,.12);box-shadow:0 0 4px 0 rgba(0,0,0,.12);z-index:900}.vue-form-generator span.help .helpText:after,.vue-form-generator span.help .helpText:before{position:absolute;top:100%;left:50%;height:0;width:0;border:solid transparent;pointer-events:none;content:" "}.vue-form-generator span.help .helpText:before{border-top-color:#d6d6d6;border-width:13px;margin-left:-13px}.vue-form-generator span.help .helpText:after{border-top-color:#fff;border-width:12px;margin-left:-12px}.hint{font-size:small;margin-top:5px;margin-bottom:10px;opacity:.6}.option-field{padding-left:1.5rem;width:100%}.option-field .form-group:last-child{margin-bottom:0}.custom-control-indicator{background-color:rgba(0,0,0,.12)}.custom-control-input:checked~.custom-control-indicator{background-color:#3295fc}.custom-control-input:focus~.custom-control-indicator{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #3295fc;box-shadow:0 0 0 1px #fff,0 0 0 3px #3295fc}.form-group label{font-size:14px;font-weight:500;color:#262626;margin:0 0 8px 0}.form-check-input,.form-control .list-row input[type=checkbox],.form-group .field-wrap input[type=checkbox]{appearance:none;-moz-appearance:none;-webkit-appearance:none;position:relative;vertical-align:middle;display:inline-block;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-check-input:focus,.form-control .list-row input[type=checkbox]:focus,.form-group .field-wrap input[type=checkbox]:focus{outline:none}.form-check-input:before,.form-control .list-row input[type=checkbox]:before,.form-group .field-wrap input[type=checkbox]:before{content:"";display:inline-block;height:16px;width:16px;border:1px solid #bfbfbf;border-radius:2px;margin-right:5px;background:#fff}.form-check-input:checked:before,.form-control .list-row input[type=checkbox]:checked:before,.form-group .field-wrap input[type=checkbox]:checked:before{background-color:#3295fc;border-color:#3295fc}.form-check-input:checked:after,.form-control .list-row input[type=checkbox]:checked:after,.form-group .field-wrap input[type=checkbox]:checked:after{content:"";position:absolute;top:4px;left:4px;display:inline-block;height:6px;width:9px;color:#fff;border-left:2px solid;border-bottom:2px solid;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.form-check-input::-ms-check,.form-control .list-row input[type=checkbox]::-ms-check,.form-group .field-wrap input[type=checkbox]::-ms-check{display:inline-block;height:16px;width:16px;border:1px solid #bfbfbf;border-radius:2px;margin-right:5px}.form-check-input:checked::-ms-check,.form-control .list-row input[type=checkbox]:checked::-ms-check,.form-group .field-wrap input[type=checkbox]:checked::-ms-check{color:#fff;background-color:#3295fc}.form-group.required input[type=checkbox],.form-group [required=required]{-webkit-box-shadow:none;box-shadow:none}.form-control input[type=checkbox],.form-control label{vertical-align:middle;line-height:1rem}.form-inline .form-check-input{margin-top:.25rem}.vue-form-generator .form-group.field-checkbox label{margin-top:-5px}.vue-form-generator .field-switch .field-wrap input[type=checkbox]{position:absolute}.vue-form-generator .field-switch .field-wrap label{width:42px;height:20px;margin:0}.vue-form-generator .field-switch input:checked~.label{background:#2196f3;-webkit-box-shadow:none;box-shadow:none}.vue-form-generator .field-switch .label{background:#ccc}.vue-form-generator .field-switch .label:after,.vue-form-generator .field-switch .label:before{color:rgba(0,0,0,.7);text-shadow:none;margin-left:42px;font-size:14px;left:18px;font-weight:400;text-transform:none;font-family:Roboto;width:-webkit-max-content;width:-moz-max-content;width:max-content}.vue-form-generator .field-switch .handle{width:17px;height:17px}.vue-form-generator .field-switch input:checked~.handle{left:calc(100% - 18px)}.vue-form-generator .field-switch .handle:before{background:none;-webkit-box-shadow:none;box-shadow:none}.entity-status{letter-spacing:0;line-height:20px;color:var(--green-400)}.entity-status,.entity-total-updates{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.entity-total-updates{gap:2px;pointer-events:auto!important}.entity-status.is-offline{color:var(--red-600)}.entity-status.is-degraded{color:#ff8040}.entity-status.is-degraded .entity-status__dot{background-color:#ff8040}.entity-status.is-offline .entity-status__dot{background-color:var(--red-600)}.entity-status__dot{display:inline-block;width:8px;height:8px;border-radius:100%;margin-right:6px;background-color:var(--green-400);-ms-flex-negative:0;flex-shrink:0}.kong-icon--centered{display:block;margin:0 auto 10px auto;text-align:center}@media screen and (min-width:1024px){.k-card--small{max-width:65%}}.empty-state-content p{width:100%;max-width:var(--KEmptyStateContentWidth)!important}.empty-state-wrapper{padding:2rem 0!important}.k-tabs .tab-container{outline:0!important}.k-popover{z-index:1031!important}.k-popover .k-badge{display:inline}.help-icon{--i:22px;margin:0 8px}.help-icon,.help-icon a{display:inline-block;width:var(--i)}.help-icon a{height:var(--i);line-height:var(--i);border-radius:100%;color:#fff;text-decoration:none;text-align:center;font-size:12px;background-color:var(--gray-2);cursor:pointer}.custom-control-icon{display:inline-block;margin-right:5px;font-size:var(--type-lg);line-height:0;max-height:18px}.external-link-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);font-family:var(--font-family-sans);font-size:1rem;font-weight:400;line-height:1.25;text-decoration:none;vertical-align:middle;border:1px solid transparent;border-radius:3px;cursor:pointer;color:#fff!important;background-color:var(--KButtonPrimaryBase);text-decoration:none!important}.external-link-btn:after{display:inline-block;content:"\203A";margin-left:5px}.external-link-btn:hover{background-color:#0089eb}.main-content{padding:44px;-webkit-transition:var(--transitionTiming) margin var(--transition);transition:var(--transitionTiming) margin var(--transition)}.page{max-width:76rem;margin:0 auto}.main-content-container{max-width:var(--global-content-max-width);margin:0 auto}.welcome{max-width:640px;margin-left:auto;margin-right:auto}.fade-enter-active,.fade-leave-active{-webkit-transition:opacity 0 linear;transition:opacity 0 linear}.fade-enter,.fade-leave-to{opacity:0}
\ No newline at end of file
diff --git a/app/kuma-ui/pkg/resources/data/index.html b/app/kuma-ui/pkg/resources/data/index.html
index 3267b2b42..6a6d20546 100644
--- a/app/kuma-ui/pkg/resources/data/index.html
+++ b/app/kuma-ui/pkg/resources/data/index.html
@@ -1,1 +1,1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.png"><title>Kuma Manager</title><link href="css/circuit-breakers~dataplanes~dataplanes-gateway~dataplanes-standard~diagnostics~fault-injections~heal~d19abb4a.f64db730.css" rel="prefetch"><link href="css/circuit-breakers~dataplanes~dataplanes-gateway~dataplanes-standard~fault-injections~health-checks~me~68bd0342.9a83e651.css" rel="prefetch"><link href="css/dataplanes~dataplanes-gateway~dataplanes-standard.82e28a0b.css" rel="prefetch"><link href="css/diagnostics.433e2612.css" rel="prefetch"><link href="css/global-overview.5d06a342.css" rel="prefetch"><link href="css/meshes.5b9b5f28.css" rel="prefetch"><link href="css/onboarding-complete.cf73973d.css" rel="prefetch"><link href="css/onboarding-get-started.d50882ac.css" rel="prefetch"><link href="css/shell.643cf4c5.css" rel="prefetch"><link href="css/traffic-permissions.cc702109.css" rel="prefetch"><link href="css/wizard-dataplane-kubernetes.e438dd69.css" rel="prefetch"><link href="css/wizard-dataplane-kubernetes~wizard-dataplane-universal~wizard-mesh.23737d03.css" rel="prefetch"><link href="css/wizard-dataplane-universal.51a22abb.css" rel="prefetch"><link href="css/zoneingresses.d3f3cf9c.css" rel="prefetch"><link href="css/zones.7b616202.css" rel="prefetch"><link href="js/canvg.js?t=e4c83c5b" rel="prefetch"><link href="js/circuit-breakers.js?t=fa3af63d" rel="prefetch"><link href="js/circuit-breakers~dataplanes~dataplanes-gateway~dataplanes-standard~diagnostics~fault-injections~heal~d19abb4a.js?t=0831e162" rel="prefetch"><link href="js/circuit-breakers~dataplanes~dataplanes-gateway~dataplanes-standard~fault-injections~health-checks~me~68bd0342.js?t=9ba9f676" rel="prefetch"><link href="js/dataplanes-gateway.js?t=df8be9ce" rel="prefetch"><link href="js/dataplanes-standard.js?t=2f493ac5" rel="prefetch"><link href="js/dataplanes.js?t=7e478279" rel="prefetch"><link href="js/dataplanes~dataplanes-gateway~dataplanes-standard.js?t=a8437f8f" rel="prefetch"><link href="js/dataplanes~dataplanes-gateway~dataplanes-standard~zoneingresses~zones.js?t=f6b5f2af" rel="prefetch"><link href="js/diagnostics.js?t=4916ac1c" rel="prefetch"><link href="js/fault-injections.js?t=718a1372" rel="prefetch"><link href="js/global-overview.js?t=c73fce45" rel="prefetch"><link href="js/health-checks.js?t=0ff12f8b" rel="prefetch"><link href="js/meshes.js?t=2e9fd6b1" rel="prefetch"><link href="js/not-found.js?t=9f78186f" rel="prefetch"><link href="js/onboarding-complete.js?t=98dfbe1c" rel="prefetch"><link href="js/onboarding-get-started.js?t=d5b757dd" rel="prefetch"><link href="js/pdfmake.js?t=a875cb2a" rel="prefetch"><link href="js/proxy-templates.js?t=a0e8bf81" rel="prefetch"><link href="js/rate-limits.js?t=741ffe66" rel="prefetch"><link href="js/retries.js?t=9ac5e704" rel="prefetch"><link href="js/shell-empty.js?t=e6379069" rel="prefetch"><link href="js/shell.js?t=11e05f7c" rel="prefetch"><link href="js/timeouts.js?t=d636d748" rel="prefetch"><link href="js/traffic-logs.js?t=6cf0824e" rel="prefetch"><link href="js/traffic-permissions.js?t=f04be247" rel="prefetch"><link href="js/traffic-routes.js?t=12d06b41" rel="prefetch"><link href="js/traffic-traces.js?t=99649b60" rel="prefetch"><link href="js/wizard-dataplane-kubernetes.js?t=69bffe1d" rel="prefetch"><link href="js/wizard-dataplane-kubernetes~wizard-dataplane-universal~wizard-mesh.js?t=e43514ac" rel="prefetch"><link href="js/wizard-dataplane-universal.js?t=34b6b2ce" rel="prefetch"><link href="js/wizard-mesh.js?t=0a9c33b5" rel="prefetch"><link href="js/xlsx.js?t=cc99b27a" rel="prefetch"><link href="js/zoneingresses.js?t=a765e0fc" rel="prefetch"><link href="js/zones.js?t=f14fd7ec" rel="prefetch"><link href="css/app.ba88165d.css" rel="preload" as="style"><link href="css/chunk-vendors.13589a7d.css" rel="preload" as="style"><link href="js/app.542d30f3.js" rel="preload" as="script"><link href="js/chunk-vendors.js?t=434568fe" rel="preload" as="script"><link href="css/chunk-vendors.13589a7d.css" rel="stylesheet"><link href="css/app.ba88165d.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but Kuma Manager doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.js?t=434568fe"></script><script src="js/app.542d30f3.js"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.png"><title>Kuma Manager</title><link href="css/circuit-breakers~dataplanes~dataplanes-gateway~dataplanes-standard~diagnostics~fault-injections~heal~d19abb4a.f64db730.css" rel="prefetch"><link href="css/circuit-breakers~dataplanes~dataplanes-gateway~dataplanes-standard~fault-injections~health-checks~me~68bd0342.9a83e651.css" rel="prefetch"><link href="css/dataplanes~dataplanes-gateway~dataplanes-standard.82e28a0b.css" rel="prefetch"><link href="css/diagnostics.433e2612.css" rel="prefetch"><link href="css/global-overview.5d06a342.css" rel="prefetch"><link href="css/meshes.5b9b5f28.css" rel="prefetch"><link href="css/onboarding-complete.cf73973d.css" rel="prefetch"><link href="css/onboarding-get-started.d50882ac.css" rel="prefetch"><link href="css/shell.643cf4c5.css" rel="prefetch"><link href="css/traffic-permissions.cc702109.css" rel="prefetch"><link href="css/wizard-dataplane-kubernetes.e438dd69.css" rel="prefetch"><link href="css/wizard-dataplane-kubernetes~wizard-dataplane-universal~wizard-mesh.23737d03.css" rel="prefetch"><link href="css/wizard-dataplane-universal.51a22abb.css" rel="prefetch"><link href="css/zoneingresses.d3f3cf9c.css" rel="prefetch"><link href="css/zones.7b616202.css" rel="prefetch"><link href="js/canvg.js?t=e4c83c5b" rel="prefetch"><link href="js/circuit-breakers.js?t=fa3af63d" rel="prefetch"><link href="js/circuit-breakers~dataplanes~dataplanes-gateway~dataplanes-standard~diagnostics~fault-injections~heal~d19abb4a.js?t=0831e162" rel="prefetch"><link href="js/circuit-breakers~dataplanes~dataplanes-gateway~dataplanes-standard~fault-injections~health-checks~me~68bd0342.js?t=9ba9f676" rel="prefetch"><link href="js/dataplanes-gateway.js?t=df8be9ce" rel="prefetch"><link href="js/dataplanes-standard.js?t=2f493ac5" rel="prefetch"><link href="js/dataplanes.js?t=7e478279" rel="prefetch"><link href="js/dataplanes~dataplanes-gateway~dataplanes-standard.js?t=a8437f8f" rel="prefetch"><link href="js/dataplanes~dataplanes-gateway~dataplanes-standard~zoneingresses~zones.js?t=f6b5f2af" rel="prefetch"><link href="js/diagnostics.js?t=4916ac1c" rel="prefetch"><link href="js/fault-injections.js?t=718a1372" rel="prefetch"><link href="js/global-overview.js?t=c73fce45" rel="prefetch"><link href="js/health-checks.js?t=0ff12f8b" rel="prefetch"><link href="js/meshes.js?t=2e9fd6b1" rel="prefetch"><link href="js/not-found.js?t=9f78186f" rel="prefetch"><link href="js/onboarding-complete.js?t=98dfbe1c" rel="prefetch"><link href="js/onboarding-get-started.js?t=d5b757dd" rel="prefetch"><link href="js/pdfmake.js?t=a875cb2a" rel="prefetch"><link href="js/proxy-templates.js?t=a0e8bf81" rel="prefetch"><link href="js/rate-limits.js?t=741ffe66" rel="prefetch"><link href="js/retries.js?t=9ac5e704" rel="prefetch"><link href="js/shell-empty.js?t=e6379069" rel="prefetch"><link href="js/shell.js?t=11e05f7c" rel="prefetch"><link href="js/timeouts.js?t=d636d748" rel="prefetch"><link href="js/traffic-logs.js?t=6cf0824e" rel="prefetch"><link href="js/traffic-permissions.js?t=f04be247" rel="prefetch"><link href="js/traffic-routes.js?t=12d06b41" rel="prefetch"><link href="js/traffic-traces.js?t=99649b60" rel="prefetch"><link href="js/wizard-dataplane-kubernetes.js?t=69bffe1d" rel="prefetch"><link href="js/wizard-dataplane-kubernetes~wizard-dataplane-universal~wizard-mesh.js?t=e43514ac" rel="prefetch"><link href="js/wizard-dataplane-universal.js?t=34b6b2ce" rel="prefetch"><link href="js/wizard-mesh.js?t=0a9c33b5" rel="prefetch"><link href="js/xlsx.js?t=cc99b27a" rel="prefetch"><link href="js/zoneingresses.js?t=a765e0fc" rel="prefetch"><link href="js/zones.js?t=f14fd7ec" rel="prefetch"><link href="css/app.e3a402b2.css" rel="preload" as="style"><link href="css/chunk-vendors.13589a7d.css" rel="preload" as="style"><link href="js/app.542d30f3.js" rel="preload" as="script"><link href="js/chunk-vendors.js?t=434568fe" rel="preload" as="script"><link href="css/chunk-vendors.13589a7d.css" rel="stylesheet"><link href="css/app.e3a402b2.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but Kuma Manager doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.js?t=434568fe"></script><script src="js/app.542d30f3.js"></script></body></html>
\ No newline at end of file
diff --git a/go.mod b/go.mod
index d4949ade1..730a02515 100644
--- a/go.mod
+++ b/go.mod
@@ -25,8 +25,8 @@ require (
 	github.com/hoisie/mustache v0.0.0-20160804235033-6375acf62c69
 	github.com/iancoleman/orderedmap v0.2.0
 	github.com/kelseyhightower/envconfig v1.4.0
-	github.com/kumahq/kuma/api v0.0.0-00010101000000-000000000000
 	github.com/kumahq/kuma/pkg/transparentproxy/istio v0.0.0-00010101000000-000000000000
+	github.com/kumahq/protoc-gen-kumadoc v0.1.7
 	github.com/lib/pq v1.10.2
 	github.com/miekg/dns v1.1.42
 	github.com/onsi/ginkgo v1.16.4
@@ -65,8 +65,6 @@ require (
 )
 
 replace (
-	github.com/kumahq/kuma/api => ./api
 	github.com/kumahq/kuma/pkg/transparentproxy/istio => ./pkg/transparentproxy/istio
-
 	github.com/prometheus/prometheus => ./vendored/github.com/prometheus/prometheus
 )
diff --git a/go.sum b/go.sum
index bacb98fd1..02b4ddd85 100644
--- a/go.sum
+++ b/go.sum
@@ -1862,7 +1862,6 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
 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.27.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
 google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0/go.mod h1:OdE7CF6DbADk7lN8LIKRzRJTTZXIjtWgA5THM5lhBAw=
diff --git a/pkg/xds/bootstrap/template_v3.go b/pkg/xds/bootstrap/template_v3.go
index 7fa262d49..b79a51cea 100644
--- a/pkg/xds/bootstrap/template_v3.go
+++ b/pkg/xds/bootstrap/template_v3.go
@@ -116,7 +116,10 @@ static_resources:
     upstream_connection_options:
       # configure a TCP keep-alive to detect and reconnect to the admin
       # server in the event of a TCP socket half open connection
-      tcp_keepalive: {}
+      tcp_keepalive:
+        keepalive_probes: 3
+        keepalive_time: 10
+        keepalive_interval: 10
     load_assignment:
       cluster_name: access_log_sink
       endpoints:
@@ -133,7 +136,10 @@ static_resources:
     upstream_connection_options:
       # configure a TCP keep-alive to detect and reconnect to the admin
       # server in the event of a TCP socket half open connection
-      tcp_keepalive: {}
+      tcp_keepalive:
+        keepalive_probes: 3
+        keepalive_time: 10
+        keepalive_interval: 10
     load_assignment:
       cluster_name: ads_cluster
       endpoints:


Test patch:
diff --git a/api/mesh/v1alpha1/dataplane_helpers_test.go b/api/mesh/v1alpha1/dataplane_helpers_test.go
index 06374de1b..85cdd7213 100644
--- a/api/mesh/v1alpha1/dataplane_helpers_test.go
+++ b/api/mesh/v1alpha1/dataplane_helpers_test.go
@@ -193,7 +193,7 @@ var _ = Describe("Dataplane_Networking_Outbound", func() {
 	}
 	DescribeTable("MatchTags()",
 		func(given testCase) {
-			//given
+			// given
 			outbound := Dataplane_Networking_Outbound{
 				Service: given.serviceTag,
 			}
@@ -456,7 +456,7 @@ var _ = Describe("TagSelector", func() {
 				// when
 				match := TagSelector(given.tags).Matches(dpTags)
 
-				//then
+				// then
 				Expect(match).To(Equal(given.match))
 			},
 			Entry("should match 0 tags", testCase{
diff --git a/api/mesh/v1alpha1/dataplane_test.go b/api/mesh/v1alpha1/dataplane_test.go
index 5d6bde453..2329f8b7d 100644
--- a/api/mesh/v1alpha1/dataplane_test.go
+++ b/api/mesh/v1alpha1/dataplane_test.go
@@ -80,7 +80,7 @@ var _ = Describe("Dataplane", func() {
 				// given
 				var pretty bytes.Buffer
 				// when
-				json.Indent(&pretty, actual, "", "  ")
+				Expect(json.Indent(&pretty, actual, "", "  ")).To(Succeed())
 				// and
 				Expect(pretty.String()).To(Equal(given.expected))
 			},
diff --git a/pkg/mads/server/server_test.go b/pkg/mads/server/server_test.go
index 021d87361..51484d537 100644
--- a/pkg/mads/server/server_test.go
+++ b/pkg/mads/server/server_test.go
@@ -5,6 +5,8 @@ import (
 	"fmt"
 	"net/http"
 
+	"github.com/kumahq/kuma/pkg/test"
+
 	envoy_core "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
 	v3 "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3"
 	"github.com/golang/protobuf/jsonpb"
@@ -12,8 +14,6 @@ import (
 	. "github.com/onsi/gomega"
 	"github.com/prometheus/common/config"
 
-	"github.com/kumahq/kuma/pkg/util/net"
-
 	kuma_cp "github.com/kumahq/kuma/pkg/config/app/kuma-cp"
 	"github.com/kumahq/kuma/pkg/config/mads"
 	"github.com/kumahq/kuma/pkg/core/resources/manager"
@@ -67,7 +67,7 @@ var _ = Describe("MADS Server", func() {
 			metrics: m,
 		}
 
-		port, err = net.PickTCPPort("127.0.0.1", 10000, 20000)
+		port, err = test.FindFreePort("127.0.0.1")
 		Expect(err).ToNot(HaveOccurred())
 
 		rt.config.MonitoringAssignmentServer.Port = port
diff --git a/pkg/xds/bootstrap/testdata/bootstrap.k8s.golden.yaml b/pkg/xds/bootstrap/testdata/bootstrap.k8s.golden.yaml
index 6e99130c3..2d6613d4b 100644
--- a/pkg/xds/bootstrap/testdata/bootstrap.k8s.golden.yaml
+++ b/pkg/xds/bootstrap/testdata/bootstrap.k8s.golden.yaml
@@ -60,7 +60,10 @@ staticResources:
     name: access_log_sink
     type: STATIC
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
   - connectTimeout: 1s
     http2ProtocolOptions: {}
     loadAssignment:
@@ -88,7 +91,10 @@ staticResources:
         sni: localhost
     type: STRICT_DNS
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
 statsConfig:
   statsTags:
   - regex: ^grpc\.((.+)\.)
diff --git a/pkg/xds/bootstrap/testdata/bootstrap.overridden.golden.yaml b/pkg/xds/bootstrap/testdata/bootstrap.overridden.golden.yaml
index 7a01a5354..8d1ab7c5b 100644
--- a/pkg/xds/bootstrap/testdata/bootstrap.overridden.golden.yaml
+++ b/pkg/xds/bootstrap/testdata/bootstrap.overridden.golden.yaml
@@ -67,7 +67,10 @@ staticResources:
     name: access_log_sink
     type: STATIC
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
   - connectTimeout: 1s
     http2ProtocolOptions: {}
     loadAssignment:
@@ -95,7 +98,10 @@ staticResources:
         sni: localhost
     type: STRICT_DNS
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
 statsConfig:
   statsTags:
   - regex: ^grpc\.((.+)\.)
diff --git a/pkg/xds/bootstrap/testdata/bootstrap.universal.golden.yaml b/pkg/xds/bootstrap/testdata/bootstrap.universal.golden.yaml
index d64783b65..cd095c74a 100644
--- a/pkg/xds/bootstrap/testdata/bootstrap.universal.golden.yaml
+++ b/pkg/xds/bootstrap/testdata/bootstrap.universal.golden.yaml
@@ -60,7 +60,10 @@ staticResources:
     name: access_log_sink
     type: STATIC
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
   - connectTimeout: 1s
     http2ProtocolOptions: {}
     loadAssignment:
@@ -88,7 +91,10 @@ staticResources:
         sni: localhost
     type: STRICT_DNS
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
 statsConfig:
   statsTags:
   - regex: ^grpc\.((.+)\.)
diff --git a/pkg/xds/bootstrap/testdata/generator.custom-config-minimal-request.golden.yaml b/pkg/xds/bootstrap/testdata/generator.custom-config-minimal-request.golden.yaml
index ceee99e20..22acd0280 100644
--- a/pkg/xds/bootstrap/testdata/generator.custom-config-minimal-request.golden.yaml
+++ b/pkg/xds/bootstrap/testdata/generator.custom-config-minimal-request.golden.yaml
@@ -60,7 +60,10 @@ staticResources:
     name: access_log_sink
     type: STATIC
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
   - connectTimeout: 2s
     http2ProtocolOptions: {}
     loadAssignment:
@@ -88,7 +91,10 @@ staticResources:
         sni: localhost
     type: STRICT_DNS
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
 statsConfig:
   statsTags:
   - regex: ^grpc\.((.+)\.)
diff --git a/pkg/xds/bootstrap/testdata/generator.custom-config.golden.yaml b/pkg/xds/bootstrap/testdata/generator.custom-config.golden.yaml
index cd56c4c84..fb8f5709f 100644
--- a/pkg/xds/bootstrap/testdata/generator.custom-config.golden.yaml
+++ b/pkg/xds/bootstrap/testdata/generator.custom-config.golden.yaml
@@ -74,7 +74,10 @@ staticResources:
     name: access_log_sink
     type: STATIC
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
   - connectTimeout: 2s
     http2ProtocolOptions: {}
     loadAssignment:
@@ -102,7 +105,10 @@ staticResources:
         sni: localhost
     type: STRICT_DNS
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
 statsConfig:
   statsTags:
   - regex: ^grpc\.((.+)\.)
diff --git a/pkg/xds/bootstrap/testdata/generator.default-config-minimal-request.golden.yaml b/pkg/xds/bootstrap/testdata/generator.default-config-minimal-request.golden.yaml
index 6324d5b8f..7950d50ff 100644
--- a/pkg/xds/bootstrap/testdata/generator.default-config-minimal-request.golden.yaml
+++ b/pkg/xds/bootstrap/testdata/generator.default-config-minimal-request.golden.yaml
@@ -53,7 +53,10 @@ staticResources:
     name: access_log_sink
     type: STATIC
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
   - connectTimeout: 1s
     http2ProtocolOptions: {}
     loadAssignment:
@@ -81,7 +84,10 @@ staticResources:
         sni: localhost
     type: STRICT_DNS
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
 statsConfig:
   statsTags:
   - regex: ^grpc\.((.+)\.)
diff --git a/pkg/xds/bootstrap/testdata/generator.default-config.golden.yaml b/pkg/xds/bootstrap/testdata/generator.default-config.golden.yaml
index 746680dc8..653a9a6b0 100644
--- a/pkg/xds/bootstrap/testdata/generator.default-config.golden.yaml
+++ b/pkg/xds/bootstrap/testdata/generator.default-config.golden.yaml
@@ -69,7 +69,10 @@ staticResources:
     name: access_log_sink
     type: STATIC
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
   - connectTimeout: 1s
     http2ProtocolOptions: {}
     loadAssignment:
@@ -97,7 +100,10 @@ staticResources:
         sni: localhost
     type: STRICT_DNS
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
 statsConfig:
   statsTags:
   - regex: ^grpc\.((.+)\.)
diff --git a/pkg/xds/bootstrap/testdata/generator.default-config.kubernetes.golden.yaml b/pkg/xds/bootstrap/testdata/generator.default-config.kubernetes.golden.yaml
index 5495efa1b..580188947 100644
--- a/pkg/xds/bootstrap/testdata/generator.default-config.kubernetes.golden.yaml
+++ b/pkg/xds/bootstrap/testdata/generator.default-config.kubernetes.golden.yaml
@@ -57,7 +57,10 @@ staticResources:
     name: access_log_sink
     type: STATIC
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
   - connectTimeout: 1s
     http2ProtocolOptions: {}
     loadAssignment:
@@ -85,7 +88,10 @@ staticResources:
         sni: localhost
     type: STRICT_DNS
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
 statsConfig:
   statsTags:
   - regex: ^grpc\.((.+)\.)
diff --git a/pkg/xds/bootstrap/testdata/generator.default-config.kubernetes.ipv6.golden.yaml b/pkg/xds/bootstrap/testdata/generator.default-config.kubernetes.ipv6.golden.yaml
index c8dd2fde5..6753a1bfa 100644
--- a/pkg/xds/bootstrap/testdata/generator.default-config.kubernetes.ipv6.golden.yaml
+++ b/pkg/xds/bootstrap/testdata/generator.default-config.kubernetes.ipv6.golden.yaml
@@ -57,7 +57,10 @@ staticResources:
     name: access_log_sink
     type: STATIC
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
   - connectTimeout: 1s
     http2ProtocolOptions: {}
     loadAssignment:
@@ -85,7 +88,10 @@ staticResources:
         sni: fd00:a123::1
     type: STATIC
     upstreamConnectionOptions:
-      tcpKeepalive: {}
+      tcpKeepalive:
+        keepaliveInterval: 10
+        keepaliveProbes: 3
+        keepaliveTime: 10
 statsConfig:
   statsTags:
   - regex: ^grpc\.((.+)\.)