NE-2747: Add external-dns-operator v1.3.6 bundle to all FBC catalogs#501
Conversation
📝 WalkthroughWalkthroughThis PR rolls out Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 5 | ❌ 10❌ Failed checks (10 inconclusive)
✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 9
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@catalog/v4.12/catalog.yaml`:
- Line 1098: The ClusterRoleBinding at line 1098 currently grants the
external-dns ClusterRole to groups (system:serviceaccounts:external-dns and
system:serviceaccounts:external-dns-operator) that include all service accounts
in those namespaces, violating the least privilege principle. Replace these
group-based subjects with specific ServiceAccount subjects pointing to the
individual service accounts that actually need the external-dns cluster
permissions. Change each group subject to a ServiceAccount subject with the
appropriate kind ("ServiceAccount"), name (the actual service account name), and
namespace values.
- Line 1080: The base64-encoded CSV data at line 1080 contains deployment
manifests that lack required pod runtime controls. Instead of directly patching
the encoded payload, locate the source CSV or deployment manifests in the
operator's repository (particularly the deployment specs for the
external-dns-operator and kube-rbac-proxy containers), then add resource limits
(cpu, memory) to every container, define liveness probes alongside the existing
readiness probes, and add readOnlyRootFilesystem: true to the securityContext of
each container. After making these changes to the source manifests, regenerate
and rebuild the catalog bundle to update this encoded data rather than modifying
it directly.
In `@catalog/v4.13/catalog.yaml`:
- Around line 1076-1110: Locate the source ClusterServiceVersion manifest file
(not the base64-encoded version in catalog.yaml) and apply the following
security hardening fixes: For the external-dns-operator container in the
deployment spec, add `readOnlyRootFilesystem: true` to the securityContext, add
resource limits (matching the pattern shown for kube-rbac-proxy with cpu and
memory requests), and add a livenessProbe (referencing the existing health-check
port and /livez or similar path). For the kube-rbac-proxy container, add
`readOnlyRootFilesystem: true` to its securityContext, add resource limits, and
add both readinessProbe and livenessProbe (using the https port and /livez type
paths). Additionally, create a new NetworkPolicy manifest in the bundle
directory following Kubernetes security best practices to restrict traffic to
the operator namespace and related services. After making these changes to the
source manifests, regenerate the catalog using your build tooling to produce the
updated base64-encoded bundle, rather than manually editing the encoded payload.
In `@catalog/v4.14/catalog.yaml`:
- Around line 1078-1080: The operator deployment specification is missing
critical security and reliability configurations. Locate the source
ClusterServiceVersion (CSV) manifest that defines the deployment for
external-dns-operator (not the generated catalog.yaml), and update both the
external-dns-operator and kube-rbac-proxy container specifications to add
resource.limits (matching or exceeding the requests of 100m cpu/30Mi memory for
the operator and 100m cpu/20Mi memory for the proxy), add livenessProbe to both
containers with appropriate endpoint paths and timing parameters, ensure
readinessProbe is present on both containers, and add
securityContext.readOnlyRootFilesystem: true to all containers. After making
these changes to the source CSV manifest, regenerate the catalog bundle/OLM data
to reflect the updated deployment specification.
In `@catalog/v4.15/catalog.yaml`:
- Line 1077: The ClusterRole RBAC objects at lines 1092-1095 are granting
permissions to the wrong API group and resource names compared to the CRD
defined at line 1077. The CRD serves
`externaldnses.externaldns.olm.openshift.io`, but the RBAC viewer and editor
roles are granting access to `externaldns` resource with incorrect API groups
(including references to `operator.openshift.io`). Regenerate the encoded RBAC
ClusterRoles to properly reference the correct API group
`externaldns.olm.openshift.io` and the correct resource name `externaldnses` so
that role bindings will authorize access to the actual ExternalDNS resources
defined by the CRD.
- Line 1080: The base64-encoded cluster service version manifest in the catalog
file is missing required pod hardening configuration. Decode the base64 data in
the `alm-examples` annotation to locate the Deployment specification for the
external-dns-operator and kube-rbac-proxy containers. Add the missing pod
hardening fields: include `readOnlyRootFilesystem: true` in the securityContext
for both containers, add `resources.limits` for CPU and memory on every
container (not just requests), add liveness probes to the external-dns-operator
container, and add a readiness probe to the kube-rbac-proxy container. After
making these updates to the source manifests, re-encode the updated manifest
back to base64 and replace the existing base64-encoded data in the catalog YAML
file.
In `@catalog/v4.16/catalog.yaml`:
- Line 1080: The catalog entry contains a base64-encoded CSV with an embedded
deployment that is missing required liveness and readiness probes. Locate the
source operator bundle/CSV file (not this generated catalog file) and add a
liveness probe to the external-dns-operator container (which currently has only
a readiness probe) and add both liveness and readiness probes to the
kube-rbac-proxy sidecar container (which currently has no probes). After making
these changes to the source bundle/CSV manifest, regenerate the catalog YAML
file to update the base64-encoded data field at this location with the new probe
definitions.
- Line 1080: The CSV data in the catalog file contains deployment specifications
for two containers (external-dns-operator and kube-rbac-proxy) that currently
have only resources.requests defined but lack resources.limits. Decode the
base64-encoded data field at line 1080, locate the spec.install.spec.deployments
array, and add calibrated resources.limits (CPU and memory) to both container
specifications alongside their existing resources.requests. Set appropriate
limits such as 500m CPU and 150Mi memory for external-dns-operator, and 200m CPU
and 100Mi memory for kube-rbac-proxy. After adding the limits, re-encode the
modified manifest back to base64 and update the data field with the new encoded
value to ensure Kubernetes resource governance is properly enforced.
- Line 1080: The base64-encoded data field at line 1080 contains an embedded
ClusterServiceVersion manifest with a deployment specification. The deployment
has two containers named "external-dns-operator" and "kube-rbac-proxy", each
with a securityContext that omits readOnlyRootFilesystem. Update the source CSV
file in the bundle to add readOnlyRootFilesystem: true to both container
security contexts (alongside the existing allowPrivilegeEscalation: false,
runAsNonRoot: true, and capabilities settings), then regenerate the catalog from
that updated source so the encoded manifest in this field reflects the hardened
configuration.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: 928915ec-e463-4d1e-95ff-1fc9701d8c6d
📒 Files selected for processing (22)
catalog/v4.12/catalog-template.yamlcatalog/v4.12/catalog.yamlcatalog/v4.13/catalog-template.yamlcatalog/v4.13/catalog.yamlcatalog/v4.14/catalog-template.yamlcatalog/v4.14/catalog.yamlcatalog/v4.15/catalog-template.yamlcatalog/v4.15/catalog.yamlcatalog/v4.16/catalog-template.yamlcatalog/v4.16/catalog.yamlcatalog/v4.17/catalog-template.yamlcatalog/v4.17/catalog.yamlcatalog/v4.18/catalog-template.yamlcatalog/v4.18/catalog.yamlcatalog/v4.19/catalog-template.yamlcatalog/v4.19/catalog.yamlcatalog/v4.20/catalog-template.yamlcatalog/v4.20/catalog.yamlcatalog/v4.21/catalog-template.yamlcatalog/v4.21/catalog.yamlcatalog/v4.22/catalog-template.yamlcatalog/v4.22/catalog.yaml
| data: eyJhcGlWZXJzaW9uIjoiYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEiLCJraW5kIjoiQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsiY29udHJvbGxlci1nZW4ua3ViZWJ1aWxkZXIuaW8vdmVyc2lvbiI6InYwLjE4LjAifSwiY3JlYXRpb25UaW1lc3RhbXAiOm51bGwsIm5hbWUiOiJleHRlcm5hbGRuc2VzLmV4dGVybmFsZG5zLm9sbS5vcGVuc2hpZnQuaW8ifSwic3BlYyI6eyJncm91cCI6ImV4dGVybmFsZG5zLm9sbS5vcGVuc2hpZnQuaW8iLCJuYW1lcyI6eyJraW5kIjoiRXh0ZXJuYWxETlMiLCJsaXN0S2luZCI6IkV4dGVybmFsRE5TTGlzdCIsInBsdXJhbCI6ImV4dGVybmFsZG5zZXMiLCJzaW5ndWxhciI6ImV4dGVybmFsZG5zIn0sInNjb3BlIjoiQ2x1c3RlciIsInZlcnNpb25zIjpbeyJuYW1lIjoidjFhbHBoYTEiLCJzY2hlbWEiOnsib3BlbkFQSVYzU2NoZW1hIjp7ImRlc2NyaXB0aW9uIjoiRXh0ZXJuYWxETlMgZGVzY3JpYmVzIGEgbWFuYWdlZCBFeHRlcm5hbEROUyBjb250cm9sbGVyIGluc3RhbmNlIGZvciBhIGNsdXN0ZXIuXG5UaGUgY29udHJvbGxlciBpcyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgZXh0ZXJuYWwgRE5TIHJlY29yZHMgaW4gc3VwcG9ydGVkXG5ETlMgcHJvdmlkZXJzIGJhc2VkIG9mZiBvZiBpbnN0YW5jZXMgb2Ygc2VsZWN0IEt1YmVybmV0ZXMgcmVzb3VyY2VzLiIsInByb3BlcnRpZXMiOnsiYXBpVmVyc2lvbiI6eyJkZXNjcmlwdGlvbiI6IkFQSVZlcnNpb24gZGVmaW5lcyB0aGUgdmVyc2lvbmVkIHNjaGVtYSBvZiB0aGlzIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC5cblNlcnZlcnMgc2hvdWxkIGNvbnZlcnQgcmVjb2duaXplZCBzY2hlbWFzIHRvIHRoZSBsYXRlc3QgaW50ZXJuYWwgdmFsdWUsIGFuZFxubWF5IHJlamVjdCB1bnJlY29nbml6ZWQgdmFsdWVzLlxuTW9yZSBpbmZvOiBodHRwczovL2dpdC5rOHMuaW8vY29tbXVuaXR5L2NvbnRyaWJ1dG9ycy9kZXZlbC9zaWctYXJjaGl0ZWN0dXJlL2FwaS1jb252ZW50aW9ucy5tZCNyZXNvdXJjZXMiLCJ0eXBlIjoic3RyaW5nIn0sImtpbmQiOnsiZGVzY3JpcHRpb24iOiJLaW5kIGlzIGEgc3RyaW5nIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgUkVTVCByZXNvdXJjZSB0aGlzIG9iamVjdCByZXByZXNlbnRzLlxuU2VydmVycyBtYXkgaW5mZXIgdGhpcyBmcm9tIHRoZSBlbmRwb2ludCB0aGUgY2xpZW50IHN1Ym1pdHMgcmVxdWVzdHMgdG8uXG5DYW5ub3QgYmUgdXBkYXRlZC5cbkluIENhbWVsQ2FzZS5cbk1vcmUgaW5mbzogaHR0cHM6Ly9naXQuazhzLmlvL2NvbW11bml0eS9jb250cmlidXRvcnMvZGV2ZWwvc2lnLWFyY2hpdGVjdHVyZS9hcGktY29udmVudGlvbnMubWQjdHlwZXMta2luZHMiLCJ0eXBlIjoic3RyaW5nIn0sIm1ldGFkYXRhIjp7InR5cGUiOiJvYmplY3QifSwic3BlYyI6eyJkZXNjcmlwdGlvbiI6InNwZWMgaXMgdGhlIHNwZWNpZmljYXRpb24gb2YgdGhlIGRlc2lyZWQgYmVoYXZpb3Igb2YgdGhlIEV4dGVybmFsRE5TLiIsInByb3BlcnRpZXMiOnsiZG9tYWlucyI6eyJkZXNjcmlwdGlvbiI6IkRvbWFpbnMgc3BlY2lmaWVzIHdoaWNoIGRvbWFpbnMgdGhhdCBFeHRlcm5hbEROUyBzaG91bGRcbmNyZWF0ZSBETlMgcmVjb3JkcyBmb3IuIE11bHRpcGxlIGRvbWFpbiB2YWx1ZXNcbmNhbiBiZSBzcGVjaWZpZWQgc3VjaCB0aGF0IHN1YmRvbWFpbnMgb2YgYW4gaW5jbHVkZWQgZG9tYWluXG5jYW4gZWZmZWN0aXZlbHkgYmUgaWdub3JlZCB1c2luZyB0aGUgXCJJbmNsdWRlXCIgYW5kIFwiRXhjbHVkZVwiXG5kb21haW4gZmlsdGVyIG9wdGlvbnMuXG5cbkFuIGVtcHR5IGxpc3Qgb2YgZG9tYWlucyBtZWFucyBFeHRlcm5hbEROUyB3aWxsIGNyZWF0ZVxuRE5TIHJlY29yZHMgZm9yIGFueSBpbmNsdWRlZCBzb3VyY2UgcmVzb3VyY2UgcmVnYXJkbGVzc1xub2YgdGhlIHJlc291cmNlJ3MgZGVzaXJlZCBob3N0bmFtZS5cblxuUG9wdWxhdGluZyBEb21haW5zIHdpdGggb25seSBleGNsdWRlZCBvcHRpb25zIG1lYW5zIEV4dGVybmFsRE5TXG53aWxsIGNyZWF0ZSBETlMgcmVjb3JkcyBmb3IgYW55IGluY2x1ZGVkIHNvdXJjZSByZXNvdXJjZSB0aGF0IGRvIG5vdFxubWF0Y2ggdGhlIHByb3ZpZGVkIGV4Y2x1ZGVkIGRvbWFpbiBvcHRpb25zLlxuXG5FeGNsdWRpbmcgRE5TIHJlY29yZHMgdGhhdCB3ZXJlIHByZXZpb3VzIGluY2x1ZGVkIHZpYSBhIHJlc291cmNlIHVwZGF0ZVxud2lsbCAqbm90KiByZXN1bHQgaW4gdGhlIG9yaWdpbmFsIEROUyByZWNvcmRzIGJlaW5nIGRlbGV0ZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJFeHRlcm5hbEROU0RvbWFpbiBkZXNjcmliZXMgaG93IHNldHMgb2YgaW5jbHVkZWRcbm9yIGV4Y2x1ZGVkIGRvbWFpbnMgYXJlIHRvIGJlIGNvbnN0cnVjdGVkLiIsInByb3BlcnRpZXMiOnsiZmlsdGVyVHlwZSI6eyJkZXNjcmlwdGlvbiI6IkZpbHRlclR5cGUgbWFya3MgdGhlIE5hbWUgb3IgUGF0dGVybiBmaWVsZFxuYXMgYW4gaW5jbHVkZWQgb3IgZXhjbHVkZWQgc2V0IG9mIGRvbWFpbnMuXG5cbkluIHRoZSBldmVudCBvZiBjb250cmFkaWN0aW5nIGRvbWFpbiBvcHRpb25zLFxucHJlZmVyZW5jZSBpcyBnaXZlbiB0byBleGNsdWRlZCBkb21haW5zLlxuXG5UaGlzIGZpZWxkIGFjY2VwdHMgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiBcIkluY2x1ZGVcIjogSW5jbHVkZSB0aGUgZG9tYWluIHNldCBzcGVjaWZpZWRcbiBieSBuYW1lIG9yIHBhdHRlcm4uXG5cbiBcIkV4Y2x1ZGVcIjogRXhjbHVkZSB0aGUgZG9tYWluIHNldCBzcGVjaWZpZWRcbiBieSBuYW1lIG9yIHBhdHRlcm4uIiwiZW51bSI6WyJJbmNsdWRlIiwiRXhjbHVkZSJdLCJ0eXBlIjoic3RyaW5nIn0sIm1hdGNoVHlwZSI6eyJkZXNjcmlwdGlvbiI6Ik1hdGNoVHlwZSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgbWF0Y2ggdG8gYmUgcGVyZm9ybWVkXG5ieSBFeHRlcm5hbEROUyB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvIHB1Ymxpc2ggRE5TXG5yZWNvcmRzIGZvciBhIGdpdmVuIHNvdXJjZSByZXNvdXJjZSBiYXNlZCBvbiB0aGUgcmVzb3VyY2Unc1xucmVxdWVzdGVkIGhvc3RuYW1lLlxuXG5UaGlzIGZpZWxkIGFjY2VwdHMgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiBcIkV4YWN0XCI6IEV4cGxpY2l0bHkgbWF0Y2ggdGhlIGZ1bGwgZG9tYWluIHN0cmluZ1xuICBzcGVjaWZpZWQgdmlhIHRoZSBOYW1lIGZpZWxkLCBpbmNsdWRpbmcgYW55IHN1YmRvbWFpbnNcbiAgb2YgTmFtZS5cblxuIFwiUGF0dGVyblwiOiBNYXRjaCBwb3RlbnRpYWwgZG9tYWlucyBhZ2FpbnN0XG4gdGhlIHByb3ZpZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHN0cmluZy4iLCJlbnVtIjpbIkV4YWN0IiwiUGF0dGVybiJdLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIHNpbmdsZSBkb21haW5cbnZhbHVlLiBTdWJkb21haW5zIGFyZSBpbmNsdWRlZC5cblxuZS5nLiBteS1hcHAubXktY2x1c3Rlci1kb21haW4uY29tXG53b3VsZCBhbHNvIGluY2x1ZGVcbmZvby5teS1hcHAubXktY2x1c3Rlci1kb21haW4uY29tIiwidHlwZSI6InN0cmluZyJ9LCJwYXR0ZXJuIjp7ImRlc2NyaXB0aW9uIjoiUGF0dGVybiBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvXG5tYXRjaCBhIHNldCBvZiBkb21haW5zLiBBbnkgcHJvdmlkZWRcbnJlZ3VsYXIgZXhwcmVzc2lvbnMgc2hvdWxkIGZvbGxvdyB0aGUgc3ludGF4XG51c2VkIGJ5IHRoZSBnbyByZWdleHAgcGFja2FnZSAoUkUyKS5cblNlZSBodHRwczovL2dvbGFuZy5vcmcvcGtnL3JlZ2V4cC8gZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiZmlsdGVyVHlwZSIsIm1hdGNoVHlwZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9LCJwcm92aWRlciI6eyJkZXNjcmlwdGlvbiI6IlByb3ZpZGVyIHJlZmVycyB0byB0aGUgRE5TIHByb3ZpZGVyIHRoYXQgRXh0ZXJuYWxETlNcbnNob3VsZCBwdWJsaXNoIHJlY29yZHMgdG8uIE5vdGUgdGhhdCBlYWNoIEV4dGVybmFsRE5TXG5pcyB0aWVkIHRvIGEgc2luZ2xlIHByb3ZpZGVyLiIsInByb3BlcnRpZXMiOnsiYXdzIjp7ImRlc2NyaXB0aW9uIjoiQVdTIGRlc2NyaWJlcyBwcm92aWRlciBjb25maWd1cmF0aW9uIG9wdGlvbnNcbnNwZWNpZmljIHRvIEFXUyAoUm91dGUgNTMpLiIsInByb3BlcnRpZXMiOnsiY3JlZGVudGlhbHMiOnsiZGVzY3JpcHRpb24iOiJDcmVkZW50aWFscyBpcyBhIHJlZmVyZW5jZSB0byBhIHNlY3JldCBjb250YWluaW5nXG50aGUgc2hhcmVkIGNyZWRlbnRpYWxzIGZpbGUgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jbGkvbGF0ZXN0L3VzZXJndWlkZS9jbGktY29uZmlndXJlLWZpbGVzLmh0bWwpXG51bmRlciBgY3JlZGVudGlhbHNgIGtleSBvciBmb2xsb3dpbmcga2V5cyAod2l0aCBjb3JyZXNwb25kaW5nIHZhbHVlcyk6XG5cbiogYXdzX2FjY2Vzc19rZXlfaWRcbiogYXdzX3NlY3JldF9hY2Nlc3Nfa2V5XG5cblNlZVxuaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMtc2lncy9leHRlcm5hbC1kbnMvYmxvYi9tYXN0ZXIvZG9jcy90dXRvcmlhbHMvYXdzLm1kXG5mb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJjcmVkZW50aWFscyJdLCJ0eXBlIjoib2JqZWN0In0sImF6dXJlIjp7ImRlc2NyaXB0aW9uIjoiQXp1cmUgZGVzY3JpYmVzIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuc3BlY2lmaWMgdG8gQXp1cmUgRE5TLiIsInByb3BlcnRpZXMiOnsiY29uZmlnRmlsZSI6eyJkZXNjcmlwdGlvbiI6IkNvbmZpZ0ZpbGUgaXMgYSByZWZlcmVuY2UgdG8gYSBzZWNyZXQgY29udGFpbmluZ1xudGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byB1c2UgdGhlIEF6dXJlIHByb3ZpZGVyLlxuVGhlIHNlY3JldCByZWZlcmVuY2VkIGJ5IENvbmZpZ0ZpbGUgc2hvdWxkIGNvbnRhaW5cbmEga2V5IG5hbWVkIGBhenVyZS5qc29uYCBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmc6XG5cbntcbiAgXCJ0ZW5hbnRJZFwiOiBcIjEyM1wiLFxuICBcInN1YnNjcmlwdGlvbklkXCI6IFwiNDU2XCIsXG4gIFwicmVzb3VyY2VHcm91cFwiOiBcIk15RG5zUmVzb3VyY2VHcm91cFwiLFxuICBcImFhZENsaWVudElkXCI6IFwiNzg5XCIsXG4gIFwiYWFkQ2xpZW50U2VjcmV0XCI6IFwiMTIzXCJcbn1cblxuU2VlXG5odHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1zaWdzL2V4dGVybmFsLWRucy9ibG9iL21hc3Rlci9kb2NzL3R1dG9yaWFscy9henVyZS5tZFxuZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGtleS92YWx1ZXMgYW5kIGhvdyB0byBvYnRhaW4gdGhlbS4iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJjb25maWdGaWxlIl0sInR5cGUiOiJvYmplY3QifSwiYmx1ZUNhdCI6eyJkZXNjcmlwdGlvbiI6IkJsdWVDYXQgZGVzY3JpYmVzIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuc3BlY2lmaWMgdG8gQmx1ZUNhdCBETlMuIiwicHJvcGVydGllcyI6eyJjb25maWdGaWxlIjp7ImRlc2NyaXB0aW9uIjoiQ29uZmlnRmlsZSBpcyBhIHJlZmVyZW5jZSB0byBhIHNlY3JldCBjb250YWluaW5nXG50aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIHVzZSB0aGUgQmx1ZUNhdCBwcm92aWRlci5cblRoZSBzZWNyZXQgcmVmZXJlbmNlZCBieSBDb25maWdGaWxlIHNob3VsZCBjb250YWluXG5hbiBvYmplY3QgbmFtZWQgYGJsdWVjYXQuanNvbmAgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nOlxuXG57XG4gIFwiZ2F0ZXdheUhvc3RcIjogXCJodHRwczovL2JsdWVjYXRndy5leGFtcGxlLmNvbVwiLFxuICBcImdhdGV3YXlVc2VybmFtZVwiOiBcInVzZXJcIixcbiAgXCJnYXRld2F5UGFzc3dvcmRcIjogXCJwYXNzXCIsXG4gIFwiZG5zQ29uZmlndXJhdGlvblwiOiBcIkV4YW1wbGVcIixcbiAgXCJkbnNWaWV3XCI6IFwiSW50ZXJuYWxcIixcbiAgXCJyb290Wm9uZVwiOiBcImV4YW1wbGUuY29tXCIsXG4gIFwic2tpcFRMU1ZlcmlmeVwiOiBmYWxzZVxufVxuXG5TZWVcbmh0dHBzOi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzLXNpZ3MvZXh0ZXJuYWwtZG5zL2Jsb2IvbWFzdGVyL2RvY3MvdHV0b3JpYWxzL2JsdWVjYXQubWRcbmZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiB2YWx1ZXMgYW5kIGhvdyB0byBvYnRhaW4gdGhlbS4iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJjb25maWdGaWxlIl0sInR5cGUiOiJvYmplY3QifSwiZ2NwIjp7ImRlc2NyaXB0aW9uIjoiR0NQIGRlc2NyaWJlcyBwcm92aWRlciBjb25maWd1cmF0aW9uIG9wdGlvbnNcbnNwZWNpZmljIHRvIEdDUCAoR29vZ2xlIEROUykuIiwicHJvcGVydGllcyI6eyJjcmVkZW50aWFscyI6eyJkZXNjcmlwdGlvbiI6IkNyZWRlbnRpYWxzIGlzIGEgcmVmZXJlbmNlIHRvIGEgc2VjcmV0IGNvbnRhaW5pbmdcbnRoZSBuZWNlc3NhcnkgR0NQIHNlcnZpY2UgYWNjb3VudCBrZXlzLlxuVGhlIHNlY3JldCByZWZlcmVuY2VkIGJ5IENyZWRlbnRpYWxzIHNob3VsZFxuY29udGFpbiBhIGtleSBuYW1lZCBgZ2NwLWNyZWRlbnRpYWxzLmpzb25gXG5wcmVzdW1hYmx5IGdlbmVyYXRlZCBieSB0aGUgZ2Nsb3VkIENMSS4iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sInByb2plY3QiOnsiZGVzY3JpcHRpb24iOiJQcm9qZWN0IGlzIHRoZSBHQ1AgcHJvamVjdCB0byB1c2UgZm9yXG5jcmVhdGluZyBETlMgcmVjb3Jkcy4gVGhpcyBmaWVsZCBpcyBub3QgbmVjZXNzYXJ5XG53aGVuIHJ1bm5pbmcgb24gR0NQIGFzIGV4dGVybmFsRE5TIGF1dG8tZGV0ZWN0c1xudGhlIEdDUCBwcm9qZWN0IHRvIHVzZSB3aGVuIHJ1bm5pbmcgb24gR0NQLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImNyZWRlbnRpYWxzIl0sInR5cGUiOiJvYmplY3QifSwiaW5mb2Jsb3giOnsiZGVzY3JpcHRpb24iOiJJbmZvYmxveCBkZXNjcmliZXMgcHJvdmlkZXIgY29uZmlndXJhdGlvbiBvcHRpb25zXG5zcGVjaWZpYyB0byBJbmZvYmxveCBETlMuIiwicHJvcGVydGllcyI6eyJjcmVkZW50aWFscyI6eyJkZXNjcmlwdGlvbiI6IkNyZWRlbnRpYWxzIGlzIGEgcmVmZXJlbmNlIHRvIGEgc2VjcmV0IGNvbnRhaW5pbmdcbnRoZSBmb2xsb3dpbmcga2V5cyAod2l0aCBwcm9wZXIgY29ycmVzcG9uZGluZyB2YWx1ZXMpOlxuXG4qIEVYVEVSTkFMX0ROU19JTkZPQkxPWF9XQVBJX1VTRVJOQU1FXG4qIEVYVEVSTkFMX0ROU19JTkZPQkxPWF9XQVBJX1BBU1NXT1JEXG5cblNlZVxuaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMtc2lncy9leHRlcm5hbC1kbnMvYmxvYi9tYXN0ZXIvZG9jcy90dXRvcmlhbHMvaW5mb2Jsb3gubWRcbmZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIiwicHJvcGVydGllcyI6eyJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbIm5hbWUiXSwidHlwZSI6Im9iamVjdCJ9LCJncmlkSG9zdCI6eyJkZXNjcmlwdGlvbiI6IkdyaWRIb3N0IGlzIHRoZSBJUCBvZiB0aGUgSW5mb2Jsb3ggR3JpZCBob3N0LiIsInR5cGUiOiJzdHJpbmcifSwid2FwaVBvcnQiOnsiZGVzY3JpcHRpb24iOiJXQVBJUG9ydCBpcyB0aGUgcG9ydCBmb3IgdGhlIEluZm9ibG94IFdBUEkuIiwidHlwZSI6ImludGVnZXIifSwid2FwaVZlcnNpb24iOnsiZGVzY3JpcHRpb24iOiJXQVBJVmVyc2lvbiBpcyB0aGUgdmVyc2lvbiBvZiB0aGUgSW5mb2Jsb3ggV0FQSS4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJjcmVkZW50aWFscyIsImdyaWRIb3N0Iiwid2FwaVBvcnQiLCJ3YXBpVmVyc2lvbiJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJUeXBlIGRlc2NyaWJlcyB3aGljaCBETlMgcHJvdmlkZXJcbkV4dGVybmFsRE5TIHNob3VsZCBwdWJsaXNoIHJlY29yZHMgdG8uXG5UaGUgZm9sbG93aW5nIEROUyBwcm92aWRlcnMgYXJlIHN1cHBvcnRlZDpcblxuICogQVdTIChSb3V0ZSA1MylcbiAqIEdDUCAoR29vZ2xlIEROUylcbiAqIEF6dXJlXG4gKiBCbHVlQ2F0XG4gKiBJbmZvYmxveCIsImVudW0iOlsiQVdTIiwiR0NQIiwiQXp1cmUiLCJCbHVlQ2F0IiwiSW5mb2Jsb3giXSwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidHlwZSJdLCJ0eXBlIjoib2JqZWN0In0sInNvdXJjZSI6eyJkZXNjcmlwdGlvbiI6IlNvdXJjZSBkZXNjcmliZXMgd2hpY2ggc291cmNlIHJlc291cmNlXG5FeHRlcm5hbEROUyB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gY3JlYXRlXG5ETlMgcmVjb3JkcyBmb3IuXG5cbk11bHRpcGxlIEV4dGVybmFsRE5TIENScyBtdXN0IGJlXG5jcmVhdGVkIGlmIG11bHRpcGxlIEV4dGVybmFsRE5TIHNvdXJjZSByZXNvdXJjZXNcbmFyZSBkZXNpcmVkLiIsInByb3BlcnRpZXMiOnsiZnFkblRlbXBsYXRlIjp7ImRlc2NyaXB0aW9uIjoiRlFETlRlbXBsYXRlIHNldHMgYSB0ZW1wbGF0ZWQgc3RyaW5nIHRoYXQncyB1c2VkIHRvIGdlbmVyYXRlIEROUyBuYW1lc1xuZnJvbSBzb3VyY2VzIHRoYXQgZG9uJ3QgZGVmaW5lIGEgaG9zdG5hbWUgdGhlbXNlbHZlcy5cbk11bHRpcGxlIGdsb2JhbCBGUUROIHRlbXBsYXRlcyBhcmUgcG9zc2libGUuXG5cblRoaXMgZmllbGQgbXVzdCBiZSBzcGVjaWZpZWQgd2l0aCBhIG5vbmVtcHR5IHZhbHVlIGlmIHRoZSBzb3VyY2UgdHlwZVxuaXMgU2VydmljZSBvciBDUkQgYW5kIEhvc3RuYW1lQW5ub3RhdGlvblBvbGljeSBpcyBzZXQgdG8gSWdub3JlLiAgVGhlXG5maWVsZCB2YWx1ZSBtYXkgYmUgb21pdHRlZCBvciBlbXB0eSBpZiBIb3N0bmFtZUFubm90YXRpb25Qb2xpY3kgaXNcbnNldCB0byBBbGxvdyBvciBpZiB0aGUgc291cmNlIHR5cGUgaXMgT3BlblNoaWZ0Um91dGUuXG5cblByb3ZpZGVkIHRlbXBsYXRlcyBzaG91bGQgZm9sbG93IHRoZSBzeW50YXggZGVmaW5lZCBmb3IgdGV4dC90ZW1wbGF0ZSBHbyBwYWNrYWdlLFxuc2VlIGh0dHBzOi8vcGtnLmdvLmRldi90ZXh0L3RlbXBsYXRlLlxuQW5ub3RhdGlvbnMgaW5zaWRlIHRoZSB0ZW1wbGF0ZSBjb3JyZXNwb25kIHRvIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBzb3VyY2UgcmVzb3VyY2Ugb2JqZWN0IChlLmcuIEt1YmVybmV0ZXMgc2VydmljZSwgT3BlblNoaWZ0IHJvdXRlKS5cbkV4YW1wbGU6IFwie3suTmFtZX19LmV4YW1wbGUuY29tXCIgd291bGQgYmUgZXhwYW5kZWQgdG8gXCJteXNlcnZpY2UuZXhhbXBsZS5jb21cIiBmb3Igc2VydmljZSBzb3VyY2UiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSJ9LCJob3N0bmFtZUFubm90YXRpb24iOnsiZGVmYXVsdCI6Iklnbm9yZSIsImRlc2NyaXB0aW9uIjoiSG9zdG5hbWVBbm5vdGF0aW9uUG9saWN5IHNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCBFeHRlcm5hbEROU1xuc2hvdWxkIGlnbm9yZSB0aGUgXCJleHRlcm5hbC1kbnMuYWxwaGEua3ViZXJuZXRlcy5pby9ob3N0bmFtZVwiXG5hbm5vdGF0aW9uLCB3aGljaCBvdmVycmlkZXMgRE5TIGhvc3RuYW1lcyBvbiBhIGdpdmVuIHNvdXJjZSByZXNvdXJjZS5cblxuVGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIGFjY2VwdGVkOlxuXG4gXCJJZ25vcmVcIjogSWdub3JlIGFueSBob3N0bmFtZSBhbm5vdGF0aW9uIG92ZXJyaWRlcy5cbiBcIkFsbG93XCI6IEFsbG93IGFsbCBob3N0bmFtZSBhbm5vdGF0aW9uIG92ZXJyaWRlcy5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIEV4dGVybmFsRE5TIGlzIFwiSWdub3JlXCIuXG5cbk5vdGUgdGhhdCBieSBzZXR0aW5nIGEgSG9zdG5hbWVBbm5vdGF0aW9uUG9saWN5IG9mIFwiQWxsb3dcIixcbm1heSBncmFudCBwcml2aWxlZ2VkIEROUyBwZXJtaXNzaW9ucyB0byB1bmRlci1wcml2aWxlZ2VkIGNsdXN0ZXJcbnVzZXJzLiIsImVudW0iOlsiSWdub3JlIiwiQWxsb3ciXSwidHlwZSI6InN0cmluZyJ9LCJsYWJlbEZpbHRlciI6eyJkZXNjcmlwdGlvbiI6IkxhYmVsRmlsdGVyIHNwZWNpZmllcyBhIGxhYmVsIHNlbGVjdG9yIGZvciBmaWx0ZXJpbmcgdGhlIG9iamVjdHMgZm9yXG53aGljaCBFeHRlcm5hbEROUyBwdWJsaXNoZXMgcmVjb3Jkcy4gVGhlIGZpbHRlciB1c2VzIGxhYmVsIHNlbGVjdG9yXG5zZW1hbnRpY3MgYWdhaW5zdCBvYmplY3QgbGFiZWxzLiAgU3BlY2lmeWluZyBhIG51bGwgb3IgZW1wdHkgbGFiZWxcbnNlbGVjdG9yIGNhdXNlcyBFeHRlcm5hbEROUyB0byBwdWJsaXNoIHJlY29yZHMgZm9yIGFsbCBvYmplY3RzIG9mIHRoZVxuc291cmNlIHR5cGUgcmVzb3VyY2UuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJvcGVuc2hpZnRSb3V0ZU9wdGlvbnMiOnsiZGVzY3JpcHRpb24iOiJPcGVuU2hpZnRSb3V0ZSBkZXNjcmliZXMgc291cmNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzcGVjaWZpYyB0byB0aGVcbnJvdXRlcy5yb3V0ZS5vcGVuc2hpZnQuaW8gcmVzb3VyY2UuIiwicHJvcGVydGllcyI6eyJyb3V0ZXJOYW1lIjp7ImRlc2NyaXB0aW9uIjoiUm91dGVyTmFtZSBpcyB0aGUgbmFtZSBvZiBhIHJvdXRlciAoQUtBIGluZ3Jlc3MgY29udHJvbGxlcikgYXNcbnJlcG9ydGVkIGluIFJvdXRlLnN0YXR1cy5pbmdyZXNzW10ucm91dGVyTmFtZS4gIEV4dGVybmFsLWRucyB3aWxsIHVzZVxudGhlIGNhbm9uaWNhbCBob3N0bmFtZSBvZiB0aGUgcm91dGVyIGlkZW50aWZpZWQgYnkgdGhpcyBuYW1lIHdoZW5cbnB1Ymxpc2hpbmcgcmVjb3JkcyBmb3IgYSBnaXZlbiByb3V0ZS4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJyb3V0ZXJOYW1lIl0sInR5cGUiOiJvYmplY3QifSwic2VydmljZSI6eyJkZXNjcmlwdGlvbiI6IlNlcnZpY2UgZGVzY3JpYmVzIHNvdXJjZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgc3BlY2lmaWNcbnRvIHRoZSBzZXJ2aWNlIHNvdXJjZSByZXNvdXJjZS4iLCJwcm9wZXJ0aWVzIjp7InNlcnZpY2VUeXBlIjp7ImRlZmF1bHQiOlsiTG9hZEJhbGFuY2VyIl0sImRlc2NyaXB0aW9uIjoiU2VydmljZVR5cGUgZGV0ZXJtaW5lcyB3aGF0IHR5cGVzIG9mIFNlcnZpY2UgcmVzb3VyY2VzXG5hcmUgd2F0Y2hlZCBieSBFeHRlcm5hbEROUy4gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmVcbmF2YWlsYWJsZSBvcHRpb25zOlxuXG4gXCJOb2RlUG9ydFwiXG4gXCJFeHRlcm5hbE5hbWVcIlxuIFwiTG9hZEJhbGFuY2VyXCJcbiBcIkNsdXN0ZXJJUFwiXG5cbk9uZSBvciBtb3JlIFNlcnZpY2UgdHlwZXMgY2FuIGJlIHNwZWNpZmllZCwgaWYgZGVzaXJlZC5cblxuTm90ZSB0aGF0IHVzaW5nIHRoZSBcIkNsdXN0ZXJJUFwiIHNlcnZpY2UgdHlwZSB3aWxsIGVuYWJsZVxudGhlIEV4dGVybmFsRE5TIFwiLS1wdWJsaXNoLWludGVybmFsLXNlcnZpY2VzXCIgZmxhZyxcbndoaWNoIGFsbG93cyBFeHRlcm5hbEROUyB0byBwdWJsaXNoIEROUyByZWNvcmRzXG5mb3IgQ2x1c3RlcklQIHNlcnZpY2VzLlxuXG5JZiBubyBzZXJ2aWNlIHR5cGVzIGFyZSBwcm92aWRlZCwgRXh0ZXJuYWxETlMgd2lsbCBiZVxuY29uZmlndXJlZCB0byBjcmVhdGUgRE5TIHJlY29yZHMgZm9yIExvYWRCYWxhbmNlciBzZXJ2aWNlc1xub25seSBieSBkZWZhdWx0LiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiU2VydmljZSBUeXBlIHN0cmluZyBkZXNjcmliZXMgaW5ncmVzcyBtZXRob2RzIGZvciBhIHNlcnZpY2UiLCJ0eXBlIjoic3RyaW5nIn0sIm1pbkl0ZW1zIjoxLCJ0eXBlIjoiYXJyYXkifX0sInJlcXVpcmVkIjpbInNlcnZpY2VUeXBlIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgc3BlY2lmaWVzIGFuIEV4dGVybmFsRE5TIHNvdXJjZSByZXNvdXJjZVxudG8gY3JlYXRlIEROUyByZWNvcmRzIGZvci4iLCJlbnVtIjpbIk9wZW5TaGlmdFJvdXRlIiwiU2VydmljZSIsIkNSRCJdLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0eXBlIl0sInR5cGUiOiJvYmplY3QifSwiem9uZXMiOnsiZGVzY3JpcHRpb24iOiJab25lcyBkZXNjcmliZXMgd2hpY2ggRE5TIFpvbmUgSURzXG5FeHRlcm5hbEROUyBzaG91bGQgcHVibGlzaCByZWNvcmRzIHRvLlxuXG5VcGRhdGluZyB0aGlzIGZpZWxkIGFmdGVyIGNyZWF0aW9uXG53aWxsIGNhdXNlIGFsbCBETlMgcmVjb3JkcyBpbiB0aGUgcHJldmlvdXNcbnpvbmUocykgdG8gYmUgbGVmdCBiZWhpbmQuXG5cbkFuIGVtcHR5IGxpc3Qgb2Ygem9uZXMgbWVhbnMgdGhhdCB0aGUgRXh0ZXJuYWxETlMgd2lsbFxucHVibGlzaCB0byBhbGwgem9uZXMgKGkuZSBwdWJsaWMgYW5kIHByaXZhdGUpLCB1bmxlc3MgdGhlXG5vcGVyYXRvciBydW5zIG9uIGEgcGxhdGZvcm0gb24gd2hpY2ggdGhlIG9wZXJhdG9yIGNhblxubG9va3VwIGEgZGVmYXVsdCBzZXQgb2Ygem9uZXMgZS5nIG9uIE9wZW5TaGlmdCB3aXRoIGl0cyBjbHVzdGVyXG5ETlMgY29uZmlnIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJtYXhJdGVtcyI6MTAsInR5cGUiOiJhcnJheSJ9fSwicmVxdWlyZWQiOlsicHJvdmlkZXIiLCJzb3VyY2UiXSwidHlwZSI6Im9iamVjdCJ9LCJzdGF0dXMiOnsiZGVzY3JpcHRpb24iOiJzdGF0dXMgaXMgdGhlIG1vc3QgcmVjZW50bHkgb2JzZXJ2ZWQgc3RhdHVzIG9mIHRoZSBFeHRlcm5hbEROUy4iLCJwcm9wZXJ0aWVzIjp7ImNvbmRpdGlvbnMiOnsiZGVzY3JpcHRpb24iOiJDb25kaXRpb25zIGlzIGEgbGlzdCBvZiBvcGVyYXRvci1zcGVjaWZpYyBjb25kaXRpb25zXG5hbmQgdGhlaXIgc3RhdHVzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQ29uZGl0aW9uIGNvbnRhaW5zIGRldGFpbHMgZm9yIG9uZSBhc3BlY3Qgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpcyBBUEkgUmVzb3VyY2UuIiwicHJvcGVydGllcyI6eyJsYXN0VHJhbnNpdGlvblRpbWUiOnsiZGVzY3JpcHRpb24iOiJsYXN0VHJhbnNpdGlvblRpbWUgaXMgdGhlIGxhc3QgdGltZSB0aGUgY29uZGl0aW9uIHRyYW5zaXRpb25lZCBmcm9tIG9uZSBzdGF0dXMgdG8gYW5vdGhlci5cblRoaXMgc2hvdWxkIGJlIHdoZW4gdGhlIHVuZGVybHlpbmcgY29uZGl0aW9uIGNoYW5nZWQuICBJZiB0aGF0IGlzIG5vdCBrbm93biwgdGhlbiB1c2luZyB0aGUgdGltZSB3aGVuIHRoZSBBUEkgZmllbGQgY2hhbmdlZCBpcyBhY2NlcHRhYmxlLiIsImZvcm1hdCI6ImRhdGUtdGltZSIsInR5cGUiOiJzdHJpbmcifSwibWVzc2FnZSI6eyJkZXNjcmlwdGlvbiI6Im1lc3NhZ2UgaXMgYSBodW1hbiByZWFkYWJsZSBtZXNzYWdlIGluZGljYXRpbmcgZGV0YWlscyBhYm91dCB0aGUgdHJhbnNpdGlvbi5cblRoaXMgbWF5IGJlIGFuIGVtcHR5IHN0cmluZy4iLCJtYXhMZW5ndGgiOjMyNzY4LCJ0eXBlIjoic3RyaW5nIn0sIm9ic2VydmVkR2VuZXJhdGlvbiI6eyJkZXNjcmlwdGlvbiI6Im9ic2VydmVkR2VuZXJhdGlvbiByZXByZXNlbnRzIHRoZSAubWV0YWRhdGEuZ2VuZXJhdGlvbiB0aGF0IHRoZSBjb25kaXRpb24gd2FzIHNldCBiYXNlZCB1cG9uLlxuRm9yIGluc3RhbmNlLCBpZiAubWV0YWRhdGEuZ2VuZXJhdGlvbiBpcyBjdXJyZW50bHkgMTIsIGJ1dCB0aGUgLnN0YXR1cy5jb25kaXRpb25zW3hdLm9ic2VydmVkR2VuZXJhdGlvbiBpcyA5LCB0aGUgY29uZGl0aW9uIGlzIG91dCBvZiBkYXRlXG53aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGluc3RhbmNlLiIsImZvcm1hdCI6ImludDY0IiwibWluaW11bSI6MCwidHlwZSI6ImludGVnZXIifSwicmVhc29uIjp7ImRlc2NyaXB0aW9uIjoicmVhc29uIGNvbnRhaW5zIGEgcHJvZ3JhbW1hdGljIGlkZW50aWZpZXIgaW5kaWNhdGluZyB0aGUgcmVhc29uIGZvciB0aGUgY29uZGl0aW9uJ3MgbGFzdCB0cmFuc2l0aW9uLlxuUHJvZHVjZXJzIG9mIHNwZWNpZmljIGNvbmRpdGlvbiB0eXBlcyBtYXkgZGVmaW5lIGV4cGVjdGVkIHZhbHVlcyBhbmQgbWVhbmluZ3MgZm9yIHRoaXMgZmllbGQsXG5hbmQgd2hldGhlciB0aGUgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGEgZ3VhcmFudGVlZCBBUEkuXG5UaGUgdmFsdWUgc2hvdWxkIGJlIGEgQ2FtZWxDYXNlIHN0cmluZy5cblRoaXMgZmllbGQgbWF5IG5vdCBiZSBlbXB0eS4iLCJtYXhMZW5ndGgiOjEwMjQsIm1pbkxlbmd0aCI6MSwicGF0dGVybiI6Il5bQS1aYS16XShbQS1aYS16MC05Xyw6XSpbQS1aYS16MC05X10pPyQiLCJ0eXBlIjoic3RyaW5nIn0sInN0YXR1cyI6eyJkZXNjcmlwdGlvbiI6InN0YXR1cyBvZiB0aGUgY29uZGl0aW9uLCBvbmUgb2YgVHJ1ZSwgRmFsc2UsIFVua25vd24uIiwiZW51bSI6WyJUcnVlIiwiRmFsc2UiLCJVbmtub3duIl0sInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6InR5cGUgb2YgY29uZGl0aW9uIGluIENhbWVsQ2FzZSBvciBpbiBmb28uZXhhbXBsZS5jb20vQ2FtZWxDYXNlLiIsIm1heExlbmd0aCI6MzE2LCJwYXR0ZXJuIjoiXihbYS16MC05XShbLWEtejAtOV0qW2EtejAtOV0pPyhcXC5bYS16MC05XShbLWEtejAtOV0qW2EtejAtOV0pPykqLyk/KChbQS1aYS16MC05XVstQS1aYS16MC05Xy5dKik/W0EtWmEtejAtOV0pJCIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImxhc3RUcmFuc2l0aW9uVGltZSIsIm1lc3NhZ2UiLCJyZWFzb24iLCJzdGF0dXMiLCJ0eXBlIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In0sIm9ic2VydmVkR2VuZXJhdGlvbiI6eyJkZXNjcmlwdGlvbiI6Ik9ic2VydmVkR2VuZXJhdGlvbiBpcyB0aGUgbW9zdCByZWNlbnQgZ2VuZXJhdGlvbiBvYnNlcnZlZC4iLCJmb3JtYXQiOiJpbnQ2NCIsInR5cGUiOiJpbnRlZ2VyIn0sInpvbmVzIjp7ImRlc2NyaXB0aW9uIjoiWm9uZXMgaXMgdGhlIGNvbmZpZ3VyZWQgem9uZXMgaW4gdXNlIGJ5IEV4dGVybmFsRE5TLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5In19LCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJzcGVjIl0sInR5cGUiOiJvYmplY3QifX0sInNlcnZlZCI6dHJ1ZSwic3RvcmFnZSI6ZmFsc2UsInN1YnJlc291cmNlcyI6eyJzdGF0dXMiOnt9fX0seyJuYW1lIjoidjFiZXRhMSIsInNjaGVtYSI6eyJvcGVuQVBJVjNTY2hlbWEiOnsiZGVzY3JpcHRpb24iOiJFeHRlcm5hbEROUyBkZXNjcmliZXMgYSBtYW5hZ2VkIEV4dGVybmFsRE5TIGNvbnRyb2xsZXIgaW5zdGFuY2UgZm9yIGEgY2x1c3Rlci5cblRoZSBjb250cm9sbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBleHRlcm5hbCBETlMgcmVjb3JkcyBpbiBzdXBwb3J0ZWRcbkROUyBwcm92aWRlcnMgYmFzZWQgb2ZmIG9mIGluc3RhbmNlcyBvZiBzZWxlY3QgS3ViZXJuZXRlcyByZXNvdXJjZXMuIiwicHJvcGVydGllcyI6eyJhcGlWZXJzaW9uIjp7ImRlc2NyaXB0aW9uIjoiQVBJVmVyc2lvbiBkZWZpbmVzIHRoZSB2ZXJzaW9uZWQgc2NoZW1hIG9mIHRoaXMgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LlxuU2VydmVycyBzaG91bGQgY29udmVydCByZWNvZ25pemVkIHNjaGVtYXMgdG8gdGhlIGxhdGVzdCBpbnRlcm5hbCB2YWx1ZSwgYW5kXG5tYXkgcmVqZWN0IHVucmVjb2duaXplZCB2YWx1ZXMuXG5Nb3JlIGluZm86IGh0dHBzOi8vZ2l0Lms4cy5pby9jb21tdW5pdHkvY29udHJpYnV0b3JzL2RldmVsL3NpZy1hcmNoaXRlY3R1cmUvYXBpLWNvbnZlbnRpb25zLm1kI3Jlc291cmNlcyIsInR5cGUiOiJzdHJpbmcifSwia2luZCI6eyJkZXNjcmlwdGlvbiI6IktpbmQgaXMgYSBzdHJpbmcgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBSRVNUIHJlc291cmNlIHRoaXMgb2JqZWN0IHJlcHJlc2VudHMuXG5TZXJ2ZXJzIG1heSBpbmZlciB0aGlzIGZyb20gdGhlIGVuZHBvaW50IHRoZSBjbGllbnQgc3VibWl0cyByZXF1ZXN0cyB0by5cbkNhbm5vdCBiZSB1cGRhdGVkLlxuSW4gQ2FtZWxDYXNlLlxuTW9yZSBpbmZvOiBodHRwczovL2dpdC5rOHMuaW8vY29tbXVuaXR5L2NvbnRyaWJ1dG9ycy9kZXZlbC9zaWctYXJjaGl0ZWN0dXJlL2FwaS1jb252ZW50aW9ucy5tZCN0eXBlcy1raW5kcyIsInR5cGUiOiJzdHJpbmcifSwibWV0YWRhdGEiOnsidHlwZSI6Im9iamVjdCJ9LCJzcGVjIjp7ImRlc2NyaXB0aW9uIjoic3BlYyBpcyB0aGUgc3BlY2lmaWNhdGlvbiBvZiB0aGUgZGVzaXJlZCBiZWhhdmlvciBvZiB0aGUgRXh0ZXJuYWxETlMuIiwicHJvcGVydGllcyI6eyJkb21haW5zIjp7ImRlc2NyaXB0aW9uIjoiRG9tYWlucyBzcGVjaWZpZXMgd2hpY2ggZG9tYWlucyB0aGF0IEV4dGVybmFsRE5TIHNob3VsZFxuY3JlYXRlIEROUyByZWNvcmRzIGZvci4gTXVsdGlwbGUgZG9tYWluIHZhbHVlc1xuY2FuIGJlIHNwZWNpZmllZCBzdWNoIHRoYXQgc3ViZG9tYWlucyBvZiBhbiBpbmNsdWRlZCBkb21haW5cbmNhbiBlZmZlY3RpdmVseSBiZSBpZ25vcmVkIHVzaW5nIHRoZSBcIkluY2x1ZGVcIiBhbmQgXCJFeGNsdWRlXCJcbmRvbWFpbiBmaWx0ZXIgb3B0aW9ucy5cblxuQW4gZW1wdHkgbGlzdCBvZiBkb21haW5zIG1lYW5zIEV4dGVybmFsRE5TIHdpbGwgY3JlYXRlXG5ETlMgcmVjb3JkcyBmb3IgYW55IGluY2x1ZGVkIHNvdXJjZSByZXNvdXJjZSByZWdhcmRsZXNzXG5vZiB0aGUgcmVzb3VyY2UncyBkZXNpcmVkIGhvc3RuYW1lLlxuXG5Qb3B1bGF0aW5nIERvbWFpbnMgd2l0aCBvbmx5IGV4Y2x1ZGVkIG9wdGlvbnMgbWVhbnMgRXh0ZXJuYWxETlNcbndpbGwgY3JlYXRlIEROUyByZWNvcmRzIGZvciBhbnkgaW5jbHVkZWQgc291cmNlIHJlc291cmNlIHRoYXQgZG8gbm90XG5tYXRjaCB0aGUgcHJvdmlkZWQgZXhjbHVkZWQgZG9tYWluIG9wdGlvbnMuXG5cbkV4Y2x1ZGluZyBETlMgcmVjb3JkcyB0aGF0IHdlcmUgcHJldmlvdXMgaW5jbHVkZWQgdmlhIGEgcmVzb3VyY2UgdXBkYXRlXG53aWxsICpub3QqIHJlc3VsdCBpbiB0aGUgb3JpZ2luYWwgRE5TIHJlY29yZHMgYmVpbmcgZGVsZXRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkV4dGVybmFsRE5TRG9tYWluIGRlc2NyaWJlcyBob3cgc2V0cyBvZiBpbmNsdWRlZFxub3IgZXhjbHVkZWQgZG9tYWlucyBhcmUgdG8gYmUgY29uc3RydWN0ZWQuIiwicHJvcGVydGllcyI6eyJmaWx0ZXJUeXBlIjp7ImRlc2NyaXB0aW9uIjoiRmlsdGVyVHlwZSBtYXJrcyB0aGUgTmFtZSBvciBQYXR0ZXJuIGZpZWxkXG5hcyBhbiBpbmNsdWRlZCBvciBleGNsdWRlZCBzZXQgb2YgZG9tYWlucy5cblxuSW4gdGhlIGV2ZW50IG9mIGNvbnRyYWRpY3RpbmcgZG9tYWluIG9wdGlvbnMsXG5wcmVmZXJlbmNlIGlzIGdpdmVuIHRvIGV4Y2x1ZGVkIGRvbWFpbnMuXG5cblRoaXMgZmllbGQgYWNjZXB0cyB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuIFwiSW5jbHVkZVwiOiBJbmNsdWRlIHRoZSBkb21haW4gc2V0IHNwZWNpZmllZFxuIGJ5IG5hbWUgb3IgcGF0dGVybi5cblxuIFwiRXhjbHVkZVwiOiBFeGNsdWRlIHRoZSBkb21haW4gc2V0IHNwZWNpZmllZFxuIGJ5IG5hbWUgb3IgcGF0dGVybi4iLCJlbnVtIjpbIkluY2x1ZGUiLCJFeGNsdWRlIl0sInR5cGUiOiJzdHJpbmcifSwibWF0Y2hUeXBlIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hUeXBlIHNwZWNpZmllcyB0aGUgdHlwZSBvZiBtYXRjaCB0byBiZSBwZXJmb3JtZWRcbmJ5IEV4dGVybmFsRE5TIHdoZW4gZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3QgdG8gcHVibGlzaCBETlNcbnJlY29yZHMgZm9yIGEgZ2l2ZW4gc291cmNlIHJlc291cmNlIGJhc2VkIG9uIHRoZSByZXNvdXJjZSdzXG5yZXF1ZXN0ZWQgaG9zdG5hbWUuXG5cblRoaXMgZmllbGQgYWNjZXB0cyB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuIFwiRXhhY3RcIjogRXhwbGljaXRseSBtYXRjaCB0aGUgZnVsbCBkb21haW4gc3RyaW5nXG4gIHNwZWNpZmllZCB2aWEgdGhlIE5hbWUgZmllbGQsIGluY2x1ZGluZyBhbnkgc3ViZG9tYWluc1xuICBvZiBOYW1lLlxuXG4gXCJQYXR0ZXJuXCI6IE1hdGNoIHBvdGVudGlhbCBkb21haW5zIGFnYWluc3RcbiB0aGUgcHJvdmlkZWQgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gc3RyaW5nLiIsImVudW0iOlsiRXhhY3QiLCJQYXR0ZXJuIl0sInR5cGUiOiJzdHJpbmcifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgc2luZ2xlIGRvbWFpblxudmFsdWUuIFN1YmRvbWFpbnMgYXJlIGluY2x1ZGVkLlxuXG5lLmcuIG15LWFwcC5teS1jbHVzdGVyLWRvbWFpbi5jb21cbndvdWxkIGFsc28gaW5jbHVkZVxuZm9vLm15LWFwcC5teS1jbHVzdGVyLWRvbWFpbi5jb20iLCJ0eXBlIjoic3RyaW5nIn0sInBhdHRlcm4iOnsiZGVzY3JpcHRpb24iOiJQYXR0ZXJuIGlzIGEgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG9cbm1hdGNoIGEgc2V0IG9mIGRvbWFpbnMuIEFueSBwcm92aWRlZFxucmVndWxhciBleHByZXNzaW9ucyBzaG91bGQgZm9sbG93IHRoZSBzeW50YXhcbnVzZWQgYnkgdGhlIGdvIHJlZ2V4cCBwYWNrYWdlIChSRTIpLlxuU2VlIGh0dHBzOi8vZ29sYW5nLm9yZy9wa2cvcmVnZXhwLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJmaWx0ZXJUeXBlIiwibWF0Y2hUeXBlIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In0sInByb3ZpZGVyIjp7ImRlc2NyaXB0aW9uIjoiUHJvdmlkZXIgcmVmZXJzIHRvIHRoZSBETlMgcHJvdmlkZXIgdGhhdCBFeHRlcm5hbEROU1xuc2hvdWxkIHB1Ymxpc2ggcmVjb3JkcyB0by4gTm90ZSB0aGF0IGVhY2ggRXh0ZXJuYWxETlNcbmlzIHRpZWQgdG8gYSBzaW5nbGUgcHJvdmlkZXIuIiwicHJvcGVydGllcyI6eyJhd3MiOnsiZGVzY3JpcHRpb24iOiJBV1MgZGVzY3JpYmVzIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuc3BlY2lmaWMgdG8gQVdTIChSb3V0ZSA1MykuIiwicHJvcGVydGllcyI6eyJhc3N1bWVSb2xlIjp7ImRlc2NyaXB0aW9uIjoiYXNzdW1lUm9sZSBpcyBhIHJlZmVyZW5jZSB0byB0aGUgSUFNIHJvbGUgdGhhdFxuRXh0ZXJuYWxETlMgd2lsbCBiZSBhc3N1bWluZyBpbiBvcmRlciB0byBwZXJmb3JtXG5hbnkgRE5TIHVwZGF0ZXMuIiwicHJvcGVydGllcyI6eyJhcm4iOnsiZGVzY3JpcHRpb24iOiJhcm4gaXMgYW4gSUFNIHJvbGUgQVJOIHRoYXQgdGhlIEV4dGVybmFsRE5TXG5vcGVyYXRvciB3aWxsIGFzc3VtZSB3aGVuIG1ha2luZyBETlMgdXBkYXRlcy4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJhcm4iXSwidHlwZSI6Im9iamVjdCJ9LCJjcmVkZW50aWFscyI6eyJkZWZhdWx0Ijp7Im5hbWUiOiIifSwiZGVzY3JpcHRpb24iOiJDcmVkZW50aWFscyBpcyBhIHJlZmVyZW5jZSB0byBhIHNlY3JldCBjb250YWluaW5nXG50aGUgZm9sbG93aW5nIGtleXMgKHdpdGggY29ycmVzcG9uZGluZyB2YWx1ZXMpOlxuXG4qIGF3c19hY2Nlc3Nfa2V5X2lkXG4qIGF3c19zZWNyZXRfYWNjZXNzX2tleSIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJuYW1lIl0sInR5cGUiOiJvYmplY3QifX0sInJlcXVpcmVkIjpbImNyZWRlbnRpYWxzIl0sInR5cGUiOiJvYmplY3QifSwiYXp1cmUiOnsiZGVzY3JpcHRpb24iOiJBenVyZSBkZXNjcmliZXMgcHJvdmlkZXIgY29uZmlndXJhdGlvbiBvcHRpb25zXG5zcGVjaWZpYyB0byBBenVyZSBETlMuIiwicHJvcGVydGllcyI6eyJjb25maWdGaWxlIjp7ImRlc2NyaXB0aW9uIjoiQ29uZmlnRmlsZSBpcyBhIHJlZmVyZW5jZSB0byBhIHNlY3JldCBjb250YWluaW5nXG50aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIHVzZSB0aGUgQXp1cmUgcHJvdmlkZXIuXG5UaGUgc2VjcmV0IHJlZmVyZW5jZWQgYnkgQ29uZmlnRmlsZSBzaG91bGQgY29udGFpblxuYSBrZXkgbmFtZWQgYGF6dXJlLmpzb25gIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZzpcblxue1xuICBcInRlbmFudElkXCI6IFwiMTIzXCIsXG4gIFwic3Vic2NyaXB0aW9uSWRcIjogXCI0NTZcIixcbiAgXCJyZXNvdXJjZUdyb3VwXCI6IFwiTXlEbnNSZXNvdXJjZUdyb3VwXCIsXG4gIFwiYWFkQ2xpZW50SWRcIjogXCI3ODlcIixcbiAgXCJhYWRDbGllbnRTZWNyZXRcIjogXCIxMjNcIlxufVxuXG5TZWVcbmh0dHBzOi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzLXNpZ3MvZXh0ZXJuYWwtZG5zL2Jsb2IvMjI2ZGJiOTMxZjdhMjAxOTgxMGIzNzAzYWVjMDk2YzRlYTRmNDBlYS9kb2NzL3R1dG9yaWFscy9henVyZS5tZCNjb25maWd1cmF0aW9uLWZpbGVcbmZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBrZXkvdmFsdWVzIGFuZCBob3cgdG8gb2J0YWluIHRoZW0uIiwicHJvcGVydGllcyI6eyJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbIm5hbWUiXSwidHlwZSI6Im9iamVjdCJ9fSwicmVxdWlyZWQiOlsiY29uZmlnRmlsZSJdLCJ0eXBlIjoib2JqZWN0In0sImJsdWVDYXQiOnsiZGVzY3JpcHRpb24iOiJCbHVlQ2F0IGRlc2NyaWJlcyBwcm92aWRlciBjb25maWd1cmF0aW9uIG9wdGlvbnNcbnNwZWNpZmljIHRvIEJsdWVDYXQgRE5TLiIsInByb3BlcnRpZXMiOnsiY29uZmlnRmlsZSI6eyJkZXNjcmlwdGlvbiI6IkNvbmZpZ0ZpbGUgaXMgYSByZWZlcmVuY2UgdG8gYSBzZWNyZXQgY29udGFpbmluZ1xudGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byB1c2UgdGhlIEJsdWVDYXQgcHJvdmlkZXIuXG5UaGUgc2VjcmV0IHJlZmVyZW5jZWQgYnkgQ29uZmlnRmlsZSBzaG91bGQgY29udGFpblxuYW4gb2JqZWN0IG5hbWVkIGBibHVlY2F0Lmpzb25gIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZzpcblxue1xuICBcImdhdGV3YXlIb3N0XCI6IFwiaHR0cHM6Ly9ibHVlY2F0Z3cuZXhhbXBsZS5jb21cIixcbiAgXCJnYXRld2F5VXNlcm5hbWVcIjogXCJ1c2VyXCIsXG4gIFwiZ2F0ZXdheVBhc3N3b3JkXCI6IFwicGFzc1wiLFxuICBcImRuc0NvbmZpZ3VyYXRpb25cIjogXCJFeGFtcGxlXCIsXG4gIFwiZG5zVmlld1wiOiBcIkludGVybmFsXCIsXG4gIFwicm9vdFpvbmVcIjogXCJleGFtcGxlLmNvbVwiLFxuICBcInNraXBUTFNWZXJpZnlcIjogZmFsc2Vcbn1cblxuU2VlXG5odHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1zaWdzL2V4dGVybmFsLWRucy9ibG9iLzIyNmRiYjkzMWY3YTIwMTk4MTBiMzcwM2FlYzA5NmM0ZWE0ZjQwZWEvZG9jcy90dXRvcmlhbHMvYmx1ZWNhdC5tZCN1c2luZy1qc29uLWNvbmZpZ3VyYXRpb24tZmlsZVxuZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIHZhbHVlcyBhbmQgaG93IHRvIG9idGFpbiB0aGVtLiIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJuYW1lIl0sInR5cGUiOiJvYmplY3QifX0sInJlcXVpcmVkIjpbImNvbmZpZ0ZpbGUiXSwidHlwZSI6Im9iamVjdCJ9LCJnY3AiOnsiZGVzY3JpcHRpb24iOiJHQ1AgZGVzY3JpYmVzIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuc3BlY2lmaWMgdG8gR0NQIChHb29nbGUgRE5TKS4iLCJwcm9wZXJ0aWVzIjp7ImNyZWRlbnRpYWxzIjp7ImRlc2NyaXB0aW9uIjoiQ3JlZGVudGlhbHMgaXMgYSByZWZlcmVuY2UgdG8gYSBzZWNyZXQgY29udGFpbmluZ1xudGhlIG5lY2Vzc2FyeSBHQ1Agc2VydmljZSBhY2NvdW50IGtleXMuXG5UaGUgc2VjcmV0IHJlZmVyZW5jZWQgYnkgQ3JlZGVudGlhbHMgc2hvdWxkXG5jb250YWluIGEga2V5IG5hbWVkIGBnY3AtY3JlZGVudGlhbHMuanNvbmBcbnByZXN1bWFibHkgZ2VuZXJhdGVkIGJ5IHRoZSBnY2xvdWQgQ0xJLiIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJuYW1lIl0sInR5cGUiOiJvYmplY3QifSwicHJvamVjdCI6eyJkZXNjcmlwdGlvbiI6IlByb2plY3QgaXMgdGhlIEdDUCBwcm9qZWN0IHRvIHVzZSBmb3JcbmNyZWF0aW5nIEROUyByZWNvcmRzLiBUaGlzIGZpZWxkIGlzIG5vdCBuZWNlc3NhcnlcbndoZW4gcnVubmluZyBvbiBHQ1AgYXMgZXh0ZXJuYWxETlMgYXV0by1kZXRlY3RzXG50aGUgR0NQIHByb2plY3QgdG8gdXNlIHdoZW4gcnVubmluZyBvbiBHQ1AuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiY3JlZGVudGlhbHMiXSwidHlwZSI6Im9iamVjdCJ9LCJpbmZvYmxveCI6eyJkZXNjcmlwdGlvbiI6IkluZm9ibG94IGRlc2NyaWJlcyBwcm92aWRlciBjb25maWd1cmF0aW9uIG9wdGlvbnNcbnNwZWNpZmljIHRvIEluZm9ibG94IEROUy4iLCJwcm9wZXJ0aWVzIjp7ImNyZWRlbnRpYWxzIjp7ImRlc2NyaXB0aW9uIjoiQ3JlZGVudGlhbHMgaXMgYSByZWZlcmVuY2UgdG8gYSBzZWNyZXQgY29udGFpbmluZ1xudGhlIGZvbGxvd2luZyBrZXlzICh3aXRoIHByb3BlciBjb3JyZXNwb25kaW5nIHZhbHVlcyk6XG5cbiogRVhURVJOQUxfRE5TX0lORk9CTE9YX1dBUElfVVNFUk5BTUVcbiogRVhURVJOQUxfRE5TX0lORk9CTE9YX1dBUElfUEFTU1dPUkQiLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sImdyaWRIb3N0Ijp7ImRlc2NyaXB0aW9uIjoiR3JpZEhvc3QgaXMgdGhlIElQIG9mIHRoZSBJbmZvYmxveCBHcmlkIGhvc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ3YXBpUG9ydCI6eyJkZXNjcmlwdGlvbiI6IldBUElQb3J0IGlzIHRoZSBwb3J0IGZvciB0aGUgSW5mb2Jsb3ggV0FQSS4iLCJ0eXBlIjoiaW50ZWdlciJ9LCJ3YXBpVmVyc2lvbiI6eyJkZXNjcmlwdGlvbiI6IldBUElWZXJzaW9uIGlzIHRoZSB2ZXJzaW9uIG9mIHRoZSBJbmZvYmxveCBXQVBJLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImNyZWRlbnRpYWxzIiwiZ3JpZEhvc3QiLCJ3YXBpUG9ydCIsIndhcGlWZXJzaW9uIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgZGVzY3JpYmVzIHdoaWNoIEROUyBwcm92aWRlclxuRXh0ZXJuYWxETlMgc2hvdWxkIHB1Ymxpc2ggcmVjb3JkcyB0by5cblRoZSBmb2xsb3dpbmcgRE5TIHByb3ZpZGVycyBhcmUgc3VwcG9ydGVkOlxuXG4gKiBBV1MgKFJvdXRlIDUzKVxuICogR0NQIChHb29nbGUgRE5TKVxuICogQXp1cmVcbiAqIEJsdWVDYXRcbiAqIEluZm9ibG94IiwiZW51bSI6WyJBV1MiLCJHQ1AiLCJBenVyZSIsIkJsdWVDYXQiLCJJbmZvYmxveCJdLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0eXBlIl0sInR5cGUiOiJvYmplY3QifSwic291cmNlIjp7ImRlc2NyaXB0aW9uIjoiU291cmNlIGRlc2NyaWJlcyB3aGljaCBzb3VyY2UgcmVzb3VyY2VcbkV4dGVybmFsRE5TIHdpbGwgYmUgY29uZmlndXJlZCB0byBjcmVhdGVcbkROUyByZWNvcmRzIGZvci5cblxuTXVsdGlwbGUgRXh0ZXJuYWxETlMgQ1JzIG11c3QgYmVcbmNyZWF0ZWQgaWYgbXVsdGlwbGUgRXh0ZXJuYWxETlMgc291cmNlIHJlc291cmNlc1xuYXJlIGRlc2lyZWQuIiwicHJvcGVydGllcyI6eyJmcWRuVGVtcGxhdGUiOnsiZGVzY3JpcHRpb24iOiJGUUROVGVtcGxhdGUgc2V0cyBhIHRlbXBsYXRlZCBzdHJpbmcgdGhhdCdzIHVzZWQgdG8gZ2VuZXJhdGUgRE5TIG5hbWVzXG5mcm9tIHNvdXJjZXMgdGhhdCBkb24ndCBkZWZpbmUgYSBob3N0bmFtZSB0aGVtc2VsdmVzLlxuTXVsdGlwbGUgZ2xvYmFsIEZRRE4gdGVtcGxhdGVzIGFyZSBwb3NzaWJsZS5cblxuVGhpcyBmaWVsZCBtdXN0IGJlIHNwZWNpZmllZCB3aXRoIGEgbm9uZW1wdHkgdmFsdWUgaWYgdGhlIHNvdXJjZSB0eXBlXG5pcyBTZXJ2aWNlIG9yIENSRCBhbmQgSG9zdG5hbWVBbm5vdGF0aW9uUG9saWN5IGlzIHNldCB0byBJZ25vcmUuICBUaGVcbmZpZWxkIHZhbHVlIG1heSBiZSBvbWl0dGVkIG9yIGVtcHR5IGlmIEhvc3RuYW1lQW5ub3RhdGlvblBvbGljeSBpc1xuc2V0IHRvIEFsbG93IG9yIGlmIHRoZSBzb3VyY2UgdHlwZSBpcyBPcGVuU2hpZnRSb3V0ZS5cblxuUHJvdmlkZWQgdGVtcGxhdGVzIHNob3VsZCBmb2xsb3cgdGhlIHN5bnRheCBkZWZpbmVkIGZvciB0ZXh0L3RlbXBsYXRlIEdvIHBhY2thZ2UsXG5zZWUgaHR0cHM6Ly9wa2cuZ28uZGV2L3RleHQvdGVtcGxhdGUuXG5Bbm5vdGF0aW9ucyBpbnNpZGUgdGhlIHRlbXBsYXRlIGNvcnJlc3BvbmQgdG8gdGhlIGRlZmluaXRpb24gb2YgdGhlIHNvdXJjZSByZXNvdXJjZSBvYmplY3QgKGUuZy4gS3ViZXJuZXRlcyBzZXJ2aWNlLCBPcGVuU2hpZnQgcm91dGUpLlxuRXhhbXBsZTogXCJ7ey5OYW1lfX0uZXhhbXBsZS5jb21cIiB3b3VsZCBiZSBleHBhbmRlZCB0byBcIm15c2VydmljZS5leGFtcGxlLmNvbVwiIGZvciBzZXJ2aWNlIHNvdXJjZSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5In0sImhvc3RuYW1lQW5ub3RhdGlvbiI6eyJkZWZhdWx0IjoiSWdub3JlIiwiZGVzY3JpcHRpb24iOiJIb3N0bmFtZUFubm90YXRpb25Qb2xpY3kgc3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IEV4dGVybmFsRE5TXG5zaG91bGQgaWdub3JlIHRoZSBcImV4dGVybmFsLWRucy5hbHBoYS5rdWJlcm5ldGVzLmlvL2hvc3RuYW1lXCJcbmFubm90YXRpb24sIHdoaWNoIG92ZXJyaWRlcyBETlMgaG9zdG5hbWVzIG9uIGEgZ2l2ZW4gc291cmNlIHJlc291cmNlLlxuXG5UaGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgYWNjZXB0ZWQ6XG5cbiBcIklnbm9yZVwiOiBJZ25vcmUgYW55IGhvc3RuYW1lIGFubm90YXRpb24gb3ZlcnJpZGVzLlxuIFwiQWxsb3dcIjogQWxsb3cgYWxsIGhvc3RuYW1lIGFubm90YXRpb24gb3ZlcnJpZGVzLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgRXh0ZXJuYWxETlMgaXMgXCJJZ25vcmVcIi5cblxuTm90ZSB0aGF0IGJ5IHNldHRpbmcgYSBIb3N0bmFtZUFubm90YXRpb25Qb2xpY3kgb2YgXCJBbGxvd1wiLFxubWF5IGdyYW50IHByaXZpbGVnZWQgRE5TIHBlcm1pc3Npb25zIHRvIHVuZGVyLXByaXZpbGVnZWQgY2x1c3RlclxudXNlcnMuIiwiZW51bSI6WyJJZ25vcmUiLCJBbGxvdyJdLCJ0eXBlIjoic3RyaW5nIn0sImxhYmVsRmlsdGVyIjp7ImRlc2NyaXB0aW9uIjoiTGFiZWxGaWx0ZXIgc3BlY2lmaWVzIGEgbGFiZWwgc2VsZWN0b3IgZm9yIGZpbHRlcmluZyB0aGUgb2JqZWN0cyBmb3JcbndoaWNoIEV4dGVybmFsRE5TIHB1Ymxpc2hlcyByZWNvcmRzLiBUaGUgZmlsdGVyIHVzZXMgbGFiZWwgc2VsZWN0b3JcbnNlbWFudGljcyBhZ2FpbnN0IG9iamVjdCBsYWJlbHMuICBTcGVjaWZ5aW5nIGEgbnVsbCBvciBlbXB0eSBsYWJlbFxuc2VsZWN0b3IgY2F1c2VzIEV4dGVybmFsRE5TIHRvIHB1Ymxpc2ggcmVjb3JkcyBmb3IgYWxsIG9iamVjdHMgb2YgdGhlXG5zb3VyY2UgdHlwZSByZXNvdXJjZS4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm9wZW5zaGlmdFJvdXRlT3B0aW9ucyI6eyJkZXNjcmlwdGlvbiI6Ik9wZW5TaGlmdFJvdXRlIGRlc2NyaWJlcyBzb3VyY2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHNwZWNpZmljIHRvIHRoZVxucm91dGVzLnJvdXRlLm9wZW5zaGlmdC5pbyByZXNvdXJjZS4iLCJwcm9wZXJ0aWVzIjp7InJvdXRlck5hbWUiOnsiZGVzY3JpcHRpb24iOiJSb3V0ZXJOYW1lIGlzIHRoZSBuYW1lIG9mIGEgcm91dGVyIChBS0EgaW5ncmVzcyBjb250cm9sbGVyKSBhc1xucmVwb3J0ZWQgaW4gUm91dGUuc3RhdHVzLmluZ3Jlc3NbXS5yb3V0ZXJOYW1lLiAgRXh0ZXJuYWwtZG5zIHdpbGwgdXNlXG50aGUgY2Fub25pY2FsIGhvc3RuYW1lIG9mIHRoZSByb3V0ZXIgaWRlbnRpZmllZCBieSB0aGlzIG5hbWUgd2hlblxucHVibGlzaGluZyByZWNvcmRzIGZvciBhIGdpdmVuIHJvdXRlLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInJvdXRlck5hbWUiXSwidHlwZSI6Im9iamVjdCJ9LCJzZXJ2aWNlIjp7ImRlc2NyaXB0aW9uIjoiU2VydmljZSBkZXNjcmliZXMgc291cmNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzcGVjaWZpY1xudG8gdGhlIHNlcnZpY2Ugc291cmNlIHJlc291cmNlLiIsInByb3BlcnRpZXMiOnsic2VydmljZVR5cGUiOnsiZGVmYXVsdCI6WyJMb2FkQmFsYW5jZXIiXSwiZGVzY3JpcHRpb24iOiJTZXJ2aWNlVHlwZSBkZXRlcm1pbmVzIHdoYXQgdHlwZXMgb2YgU2VydmljZSByZXNvdXJjZXNcbmFyZSB3YXRjaGVkIGJ5IEV4dGVybmFsRE5TLiBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZVxuYXZhaWxhYmxlIG9wdGlvbnM6XG5cbiBcIk5vZGVQb3J0XCJcbiBcIkV4dGVybmFsTmFtZVwiXG4gXCJMb2FkQmFsYW5jZXJcIlxuIFwiQ2x1c3RlcklQXCJcblxuT25lIG9yIG1vcmUgU2VydmljZSB0eXBlcyBjYW4gYmUgc3BlY2lmaWVkLCBpZiBkZXNpcmVkLlxuXG5Ob3RlIHRoYXQgdXNpbmcgdGhlIFwiQ2x1c3RlcklQXCIgc2VydmljZSB0eXBlIHdpbGwgZW5hYmxlXG50aGUgRXh0ZXJuYWxETlMgXCItLXB1Ymxpc2gtaW50ZXJuYWwtc2VydmljZXNcIiBmbGFnLFxud2hpY2ggYWxsb3dzIEV4dGVybmFsRE5TIHRvIHB1Ymxpc2ggRE5TIHJlY29yZHNcbmZvciBDbHVzdGVySVAgc2VydmljZXMuXG5cbklmIG5vIHNlcnZpY2UgdHlwZXMgYXJlIHByb3ZpZGVkLCBFeHRlcm5hbEROUyB3aWxsIGJlXG5jb25maWd1cmVkIHRvIGNyZWF0ZSBETlMgcmVjb3JkcyBmb3IgTG9hZEJhbGFuY2VyIHNlcnZpY2VzXG5vbmx5IGJ5IGRlZmF1bHQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJTZXJ2aWNlIFR5cGUgc3RyaW5nIGRlc2NyaWJlcyBpbmdyZXNzIG1ldGhvZHMgZm9yIGEgc2VydmljZSIsInR5cGUiOiJzdHJpbmcifSwibWluSXRlbXMiOjEsInR5cGUiOiJhcnJheSJ9fSwicmVxdWlyZWQiOlsic2VydmljZVR5cGUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoiVHlwZSBzcGVjaWZpZXMgYW4gRXh0ZXJuYWxETlMgc291cmNlIHJlc291cmNlXG50byBjcmVhdGUgRE5TIHJlY29yZHMgZm9yLiIsImVudW0iOlsiT3BlblNoaWZ0Um91dGUiLCJTZXJ2aWNlIiwiQ1JEIl0sInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9LCJ6b25lcyI6eyJkZXNjcmlwdGlvbiI6IlpvbmVzIGRlc2NyaWJlcyB3aGljaCBETlMgWm9uZSBJRHNcbkV4dGVybmFsRE5TIHNob3VsZCBwdWJsaXNoIHJlY29yZHMgdG8uXG5cblVwZGF0aW5nIHRoaXMgZmllbGQgYWZ0ZXIgY3JlYXRpb25cbndpbGwgY2F1c2UgYWxsIEROUyByZWNvcmRzIGluIHRoZSBwcmV2aW91c1xuem9uZShzKSB0byBiZSBsZWZ0IGJlaGluZC5cblxuQW4gZW1wdHkgbGlzdCBvZiB6b25lcyBtZWFucyB0aGF0IHRoZSBFeHRlcm5hbEROUyB3aWxsXG5wdWJsaXNoIHRvIGFsbCB6b25lcyAoaS5lIHB1YmxpYyBhbmQgcHJpdmF0ZSksIHVubGVzcyB0aGVcbm9wZXJhdG9yIHJ1bnMgb24gYSBwbGF0Zm9ybSBvbiB3aGljaCB0aGUgb3BlcmF0b3IgY2FuXG5sb29rdXAgYSBkZWZhdWx0IHNldCBvZiB6b25lcyBlLmcgb24gT3BlblNoaWZ0IHdpdGggaXRzIGNsdXN0ZXJcbkROUyBjb25maWciLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sIm1heEl0ZW1zIjoxMCwidHlwZSI6ImFycmF5In19LCJyZXF1aXJlZCI6WyJwcm92aWRlciIsInNvdXJjZSJdLCJ0eXBlIjoib2JqZWN0In0sInN0YXR1cyI6eyJkZXNjcmlwdGlvbiI6InN0YXR1cyBpcyB0aGUgbW9zdCByZWNlbnRseSBvYnNlcnZlZCBzdGF0dXMgb2YgdGhlIEV4dGVybmFsRE5TLiIsInByb3BlcnRpZXMiOnsiY29uZGl0aW9ucyI6eyJkZXNjcmlwdGlvbiI6IkNvbmRpdGlvbnMgaXMgYSBsaXN0IG9mIG9wZXJhdG9yLXNwZWNpZmljIGNvbmRpdGlvbnNcbmFuZCB0aGVpciBzdGF0dXMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJDb25kaXRpb24gY29udGFpbnMgZGV0YWlscyBmb3Igb25lIGFzcGVjdCBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGlzIEFQSSBSZXNvdXJjZS4iLCJwcm9wZXJ0aWVzIjp7Imxhc3RUcmFuc2l0aW9uVGltZSI6eyJkZXNjcmlwdGlvbiI6Imxhc3RUcmFuc2l0aW9uVGltZSBpcyB0aGUgbGFzdCB0aW1lIHRoZSBjb25kaXRpb24gdHJhbnNpdGlvbmVkIGZyb20gb25lIHN0YXR1cyB0byBhbm90aGVyLlxuVGhpcyBzaG91bGQgYmUgd2hlbiB0aGUgdW5kZXJseWluZyBjb25kaXRpb24gY2hhbmdlZC4gIElmIHRoYXQgaXMgbm90IGtub3duLCB0aGVuIHVzaW5nIHRoZSB0aW1lIHdoZW4gdGhlIEFQSSBmaWVsZCBjaGFuZ2VkIGlzIGFjY2VwdGFibGUuIiwiZm9ybWF0IjoiZGF0ZS10aW1lIiwidHlwZSI6InN0cmluZyJ9LCJtZXNzYWdlIjp7ImRlc2NyaXB0aW9uIjoibWVzc2FnZSBpcyBhIGh1bWFuIHJlYWRhYmxlIG1lc3NhZ2UgaW5kaWNhdGluZyBkZXRhaWxzIGFib3V0IHRoZSB0cmFuc2l0aW9uLlxuVGhpcyBtYXkgYmUgYW4gZW1wdHkgc3RyaW5nLiIsIm1heExlbmd0aCI6MzI3NjgsInR5cGUiOiJzdHJpbmcifSwib2JzZXJ2ZWRHZW5lcmF0aW9uIjp7ImRlc2NyaXB0aW9uIjoib2JzZXJ2ZWRHZW5lcmF0aW9uIHJlcHJlc2VudHMgdGhlIC5tZXRhZGF0YS5nZW5lcmF0aW9uIHRoYXQgdGhlIGNvbmRpdGlvbiB3YXMgc2V0IGJhc2VkIHVwb24uXG5Gb3IgaW5zdGFuY2UsIGlmIC5tZXRhZGF0YS5nZW5lcmF0aW9uIGlzIGN1cnJlbnRseSAxMiwgYnV0IHRoZSAuc3RhdHVzLmNvbmRpdGlvbnNbeF0ub2JzZXJ2ZWRHZW5lcmF0aW9uIGlzIDksIHRoZSBjb25kaXRpb24gaXMgb3V0IG9mIGRhdGVcbndpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgaW5zdGFuY2UuIiwiZm9ybWF0IjoiaW50NjQiLCJtaW5pbXVtIjowLCJ0eXBlIjoiaW50ZWdlciJ9LCJyZWFzb24iOnsiZGVzY3JpcHRpb24iOiJyZWFzb24gY29udGFpbnMgYSBwcm9ncmFtbWF0aWMgaWRlbnRpZmllciBpbmRpY2F0aW5nIHRoZSByZWFzb24gZm9yIHRoZSBjb25kaXRpb24ncyBsYXN0IHRyYW5zaXRpb24uXG5Qcm9kdWNlcnMgb2Ygc3BlY2lmaWMgY29uZGl0aW9uIHR5cGVzIG1heSBkZWZpbmUgZXhwZWN0ZWQgdmFsdWVzIGFuZCBtZWFuaW5ncyBmb3IgdGhpcyBmaWVsZCxcbmFuZCB3aGV0aGVyIHRoZSB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgYSBndWFyYW50ZWVkIEFQSS5cblRoZSB2YWx1ZSBzaG91bGQgYmUgYSBDYW1lbENhc2Ugc3RyaW5nLlxuVGhpcyBmaWVsZCBtYXkgbm90IGJlIGVtcHR5LiIsIm1heExlbmd0aCI6MTAyNCwibWluTGVuZ3RoIjoxLCJwYXR0ZXJuIjoiXltBLVphLXpdKFtBLVphLXowLTlfLDpdKltBLVphLXowLTlfXSk/JCIsInR5cGUiOiJzdHJpbmcifSwic3RhdHVzIjp7ImRlc2NyaXB0aW9uIjoic3RhdHVzIG9mIHRoZSBjb25kaXRpb24sIG9uZSBvZiBUcnVlLCBGYWxzZSwgVW5rbm93bi4iLCJlbnVtIjpbIlRydWUiLCJGYWxzZSIsIlVua25vd24iXSwidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoidHlwZSBvZiBjb25kaXRpb24gaW4gQ2FtZWxDYXNlIG9yIGluIGZvby5leGFtcGxlLmNvbS9DYW1lbENhc2UuIiwibWF4TGVuZ3RoIjozMTYsInBhdHRlcm4iOiJeKFthLXowLTldKFstYS16MC05XSpbYS16MC05XSk/KFxcLlthLXowLTldKFstYS16MC05XSpbYS16MC05XSk/KSovKT8oKFtBLVphLXowLTldWy1BLVphLXowLTlfLl0qKT9bQS1aYS16MC05XSkkIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibGFzdFRyYW5zaXRpb25UaW1lIiwibWVzc2FnZSIsInJlYXNvbiIsInN0YXR1cyIsInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkifSwib2JzZXJ2ZWRHZW5lcmF0aW9uIjp7ImRlc2NyaXB0aW9uIjoiT2JzZXJ2ZWRHZW5lcmF0aW9uIGlzIHRoZSBtb3N0IHJlY2VudCBnZW5lcmF0aW9uIG9ic2VydmVkLiIsImZvcm1hdCI6ImludDY0IiwidHlwZSI6ImludGVnZXIifSwiem9uZXMiOnsiZGVzY3JpcHRpb24iOiJab25lcyBpcyB0aGUgY29uZmlndXJlZCB6b25lcyBpbiB1c2UgYnkgRXh0ZXJuYWxETlMuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkifX0sInR5cGUiOiJvYmplY3QifX0sInJlcXVpcmVkIjpbInNwZWMiXSwidHlwZSI6Im9iamVjdCJ9fSwic2VydmVkIjp0cnVlLCJzdG9yYWdlIjp0cnVlLCJzdWJyZXNvdXJjZXMiOnsic3RhdHVzIjp7fX19XX0sInN0YXR1cyI6eyJhY2NlcHRlZE5hbWVzIjp7ImtpbmQiOiIiLCJwbHVyYWwiOiIifSwiY29uZGl0aW9ucyI6bnVsbCwic3RvcmVkVmVyc2lvbnMiOm51bGx9fQ== | ||
| - type: olm.bundle.object | ||
| value: | ||
| data: eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjFhbHBoYTEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsiYWxtLWV4YW1wbGVzIjoiW1xuICB7XG4gICAgXCJhcGlWZXJzaW9uXCI6IFwiZXh0ZXJuYWxkbnMub2xtLm9wZW5zaGlmdC5pby92MWFscGhhMVwiLFxuICAgIFwia2luZFwiOiBcIkV4dGVybmFsRE5TXCIsXG4gICAgXCJtZXRhZGF0YVwiOiB7XG4gICAgICBcIm5hbWVcIjogXCJzYW1wbGUtYXdzXCJcbiAgICB9LFxuICAgIFwic3BlY1wiOiB7XG4gICAgICBcImRvbWFpbnNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCJmaWx0ZXJUeXBlXCI6IFwiSW5jbHVkZVwiLFxuICAgICAgICAgIFwibWF0Y2hUeXBlXCI6IFwiRXhhY3RcIixcbiAgICAgICAgICBcIm5hbWVcIjogXCJ0ZXN0ZXh0ZG5zb3BlcmF0b3IuYXBhY3NoaWZ0LnN1cHBvcnRcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgXCJwcm92aWRlclwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcIkFXU1wiXG4gICAgICB9LFxuICAgICAgXCJzb3VyY2VcIjoge1xuICAgICAgICBcIm9wZW5zaGlmdFJvdXRlT3B0aW9uc1wiOiB7XG4gICAgICAgICAgXCJyb3V0ZXJOYW1lXCI6IFwiZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiBcIk9wZW5TaGlmdFJvdXRlXCJcbiAgICAgIH0sXG4gICAgICBcInpvbmVzXCI6IFtcbiAgICAgICAgXCJaMDQwMTU1OTJRSlgzRUsxWVlZWVlcIlxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAge1xuICAgIFwiYXBpVmVyc2lvblwiOiBcImV4dGVybmFsZG5zLm9sbS5vcGVuc2hpZnQuaW8vdjFhbHBoYTFcIixcbiAgICBcImtpbmRcIjogXCJFeHRlcm5hbEROU1wiLFxuICAgIFwibWV0YWRhdGFcIjoge1xuICAgICAgXCJuYW1lXCI6IFwic2FtcGxlLWF6dXJlXCJcbiAgICB9LFxuICAgIFwic3BlY1wiOiB7XG4gICAgICBcImRvbWFpbnNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCJmaWx0ZXJUeXBlXCI6IFwiSW5jbHVkZVwiLFxuICAgICAgICAgIFwibWF0Y2hUeXBlXCI6IFwiRXhhY3RcIixcbiAgICAgICAgICBcIm5hbWVcIjogXCJ0ZXN0LWF6dXJlMS5xZS5henVyZS5kZXZjbHVzdGVyLm9wZW5zaGlmdC5jb21cIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgXCJwcm92aWRlclwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcIkF6dXJlXCJcbiAgICAgIH0sXG4gICAgICBcInNvdXJjZVwiOiB7XG4gICAgICAgIFwib3BlbnNoaWZ0Um91dGVPcHRpb25zXCI6IHtcbiAgICAgICAgICBcInJvdXRlck5hbWVcIjogXCJkZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IFwiT3BlblNoaWZ0Um91dGVcIlxuICAgICAgfSxcbiAgICAgIFwiem9uZXNcIjogW1xuICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzUzYjRmNTUxLWYwZmMtNGJlYS04Y2JhLTExMTExMTExMTExL3Jlc291cmNlR3JvdXBzL3Rlc3QtYXp1cmUxLW54a3htLXJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9kbnN6b25lcy90ZXN0LWF6dXJlMS5xZS5henVyZS5kZXZjbHVzdGVyLm9wZW5zaGlmdC5jb21cIlxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAge1xuICAgIFwiYXBpVmVyc2lvblwiOiBcImV4dGVybmFsZG5zLm9sbS5vcGVuc2hpZnQuaW8vdjFhbHBoYTFcIixcbiAgICBcImtpbmRcIjogXCJFeHRlcm5hbEROU1wiLFxuICAgIFwibWV0YWRhdGFcIjoge1xuICAgICAgXCJuYW1lXCI6IFwic2FtcGxlLWJsdWVjYXRcIlxuICAgIH0sXG4gICAgXCJzcGVjXCI6IHtcbiAgICAgIFwiZG9tYWluc1wiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBcImZpbHRlclR5cGVcIjogXCJJbmNsdWRlXCIsXG4gICAgICAgICAgXCJtYXRjaFR5cGVcIjogXCJFeGFjdFwiLFxuICAgICAgICAgIFwibmFtZVwiOiBcIm15em9uZWRvbWFpbi5jb21cIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgXCJwcm92aWRlclwiOiB7XG4gICAgICAgIFwiYmx1ZUNhdFwiOiB7XG4gICAgICAgICAgXCJjb25maWdGaWxlXCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImJsdWVjYXQtY29uZmlnXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiBcIkJsdWVDYXRcIlxuICAgICAgfSxcbiAgICAgIFwic291cmNlXCI6IHtcbiAgICAgICAgXCJvcGVuc2hpZnRSb3V0ZU9wdGlvbnNcIjoge1xuICAgICAgICAgIFwicm91dGVyTmFtZVwiOiBcImRlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjogXCJPcGVuU2hpZnRSb3V0ZVwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICB7XG4gICAgXCJhcGlWZXJzaW9uXCI6IFwiZXh0ZXJuYWxkbnMub2xtLm9wZW5zaGlmdC5pby92MWFscGhhMVwiLFxuICAgIFwia2luZFwiOiBcIkV4dGVybmFsRE5TXCIsXG4gICAgXCJtZXRhZGF0YVwiOiB7XG4gICAgICBcIm5hbWVcIjogXCJzYW1wbGUtZ2NwXCJcbiAgICB9LFxuICAgIFwic3BlY1wiOiB7XG4gICAgICBcImRvbWFpbnNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCJmaWx0ZXJUeXBlXCI6IFwiSW5jbHVkZVwiLFxuICAgICAgICAgIFwibWF0Y2hUeXBlXCI6IFwiRXhhY3RcIixcbiAgICAgICAgICBcIm5hbWVcIjogXCJ0ZXN0LWdjcDEucWUuZ2NwLmRldmNsdXN0ZXIub3BlbnNoaWZ0LmNvbVwiXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBcInByb3ZpZGVyXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwiR0NQXCJcbiAgICAgIH0sXG4gICAgICBcInNvdXJjZVwiOiB7XG4gICAgICAgIFwib3BlbnNoaWZ0Um91dGVPcHRpb25zXCI6IHtcbiAgICAgICAgICBcInJvdXRlck5hbWVcIjogXCJkZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IFwiT3BlblNoaWZ0Um91dGVcIlxuICAgICAgfSxcbiAgICAgIFwiem9uZXNcIjogW1xuICAgICAgICBcInRlc3QtZ2NwMS1xNm01di1wcml2YXRlLXpvbmVcIlxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAge1xuICAgIFwiYXBpVmVyc2lvblwiOiBcImV4dGVybmFsZG5zLm9sbS5vcGVuc2hpZnQuaW8vdjFhbHBoYTFcIixcbiAgICBcImtpbmRcIjogXCJFeHRlcm5hbEROU1wiLFxuICAgIFwibWV0YWRhdGFcIjoge1xuICAgICAgXCJuYW1lXCI6IFwic2FtcGxlLWluZm9ibG94XCJcbiAgICB9LFxuICAgIFwic3BlY1wiOiB7XG4gICAgICBcImRvbWFpbnNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCJmaWx0ZXJUeXBlXCI6IFwiSW5jbHVkZVwiLFxuICAgICAgICAgIFwibWF0Y2hUeXBlXCI6IFwiRXhhY3RcIixcbiAgICAgICAgICBcIm5hbWVcIjogXCJteXpvbmVkb21haW4uY29tXCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFwicHJvdmlkZXJcIjoge1xuICAgICAgICBcImluZm9ibG94XCI6IHtcbiAgICAgICAgICBcImNyZWRlbnRpYWxzXCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImluZm9ibG94LWNyZWRlbnRpYWxzXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ3JpZEhvc3RcIjogXCIxMDAuMTAwLjEwMC4xMDBcIixcbiAgICAgICAgICBcIndhcGlQb3J0XCI6IDQ0MyxcbiAgICAgICAgICBcIndhcGlWZXJzaW9uXCI6IFwiMi4xMi4yXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IFwiSW5mb2Jsb3hcIlxuICAgICAgfSxcbiAgICAgIFwic291cmNlXCI6IHtcbiAgICAgICAgXCJvcGVuc2hpZnRSb3V0ZU9wdGlvbnNcIjoge1xuICAgICAgICAgIFwicm91dGVyTmFtZVwiOiBcImRlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjogXCJPcGVuU2hpZnRSb3V0ZVwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICB7XG4gICAgXCJhcGlWZXJzaW9uXCI6IFwiZXh0ZXJuYWxkbnMub2xtLm9wZW5zaGlmdC5pby92MWJldGExXCIsXG4gICAgXCJraW5kXCI6IFwiRXh0ZXJuYWxETlNcIixcbiAgICBcIm1ldGFkYXRhXCI6IHtcbiAgICAgIFwibmFtZVwiOiBcInNhbXBsZS1hd3NcIlxuICAgIH0sXG4gICAgXCJzcGVjXCI6IHtcbiAgICAgIFwiZG9tYWluc1wiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBcImZpbHRlclR5cGVcIjogXCJJbmNsdWRlXCIsXG4gICAgICAgICAgXCJtYXRjaFR5cGVcIjogXCJFeGFjdFwiLFxuICAgICAgICAgIFwibmFtZVwiOiBcInRlc3RleHRkbnNvcGVyYXRvci5hcGFjc2hpZnQuc3VwcG9ydFwiXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBcInByb3ZpZGVyXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwiQVdTXCJcbiAgICAgIH0sXG4gICAgICBcInNvdXJjZVwiOiB7XG4gICAgICAgIFwib3BlbnNoaWZ0Um91dGVPcHRpb25zXCI6IHtcbiAgICAgICAgICBcInJvdXRlck5hbWVcIjogXCJkZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IFwiT3BlblNoaWZ0Um91dGVcIlxuICAgICAgfSxcbiAgICAgIFwiem9uZXNcIjogW1xuICAgICAgICBcIlowNDAxNTU5MlFKWDNFSzFZWVlZWVwiXG4gICAgICBdXG4gICAgfVxuICB9LFxuICB7XG4gICAgXCJhcGlWZXJzaW9uXCI6IFwiZXh0ZXJuYWxkbnMub2xtLm9wZW5zaGlmdC5pby92MWJldGExXCIsXG4gICAgXCJraW5kXCI6IFwiRXh0ZXJuYWxETlNcIixcbiAgICBcIm1ldGFkYXRhXCI6IHtcbiAgICAgIFwibmFtZVwiOiBcInNhbXBsZS1henVyZVwiXG4gICAgfSxcbiAgICBcInNwZWNcIjoge1xuICAgICAgXCJkb21haW5zXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiZmlsdGVyVHlwZVwiOiBcIkluY2x1ZGVcIixcbiAgICAgICAgICBcIm1hdGNoVHlwZVwiOiBcIkV4YWN0XCIsXG4gICAgICAgICAgXCJuYW1lXCI6IFwidGVzdC1henVyZTEucWUuYXp1cmUuZGV2Y2x1c3Rlci5vcGVuc2hpZnQuY29tXCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFwicHJvdmlkZXJcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJBenVyZVwiXG4gICAgICB9LFxuICAgICAgXCJzb3VyY2VcIjoge1xuICAgICAgICBcIm9wZW5zaGlmdFJvdXRlT3B0aW9uc1wiOiB7XG4gICAgICAgICAgXCJyb3V0ZXJOYW1lXCI6IFwiZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiBcIk9wZW5TaGlmdFJvdXRlXCJcbiAgICAgIH0sXG4gICAgICBcInpvbmVzXCI6IFtcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy81M2I0ZjU1MS1mMGZjLTRiZWEtOGNiYS0xMTExMTExMTExMS9yZXNvdXJjZUdyb3Vwcy90ZXN0LWF6dXJlMS1ueGt4bS1yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvZG5zem9uZXMvdGVzdC1henVyZTEucWUuYXp1cmUuZGV2Y2x1c3Rlci5vcGVuc2hpZnQuY29tXCJcbiAgICAgIF1cbiAgICB9XG4gIH0sXG4gIHtcbiAgICBcImFwaVZlcnNpb25cIjogXCJleHRlcm5hbGRucy5vbG0ub3BlbnNoaWZ0LmlvL3YxYmV0YTFcIixcbiAgICBcImtpbmRcIjogXCJFeHRlcm5hbEROU1wiLFxuICAgIFwibWV0YWRhdGFcIjoge1xuICAgICAgXCJuYW1lXCI6IFwic2FtcGxlLWF6dXJlLXByaXZhdGVcIlxuICAgIH0sXG4gICAgXCJzcGVjXCI6IHtcbiAgICAgIFwiZG9tYWluc1wiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBcImZpbHRlclR5cGVcIjogXCJJbmNsdWRlXCIsXG4gICAgICAgICAgXCJtYXRjaFR5cGVcIjogXCJFeGFjdFwiLFxuICAgICAgICAgIFwibmFtZVwiOiBcInRlc3QtYXp1cmUxLnFlLmF6dXJlLmRldmNsdXN0ZXIub3BlbnNoaWZ0LmNvbVwiXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBcInByb3ZpZGVyXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwiQXp1cmVcIlxuICAgICAgfSxcbiAgICAgIFwic291cmNlXCI6IHtcbiAgICAgICAgXCJvcGVuc2hpZnRSb3V0ZU9wdGlvbnNcIjoge1xuICAgICAgICAgIFwicm91dGVyTmFtZVwiOiBcImRlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjogXCJPcGVuU2hpZnRSb3V0ZVwiXG4gICAgICB9LFxuICAgICAgXCJ6b25lc1wiOiBbXG4gICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvNTNiNGY1NTEtZjBmYy00YmVhLThjYmEtMTExMTExMTExMTEvcmVzb3VyY2VHcm91cHMvdGVzdC1henVyZTEtbnhreG0tcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ByaXZhdGVEbnNab25lcy90ZXN0LWF6dXJlMS5xZS5henVyZS5kZXZjbHVzdGVyLm9wZW5zaGlmdC5jb21cIlxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAge1xuICAgIFwiYXBpVmVyc2lvblwiOiBcImV4dGVybmFsZG5zLm9sbS5vcGVuc2hpZnQuaW8vdjFiZXRhMVwiLFxuICAgIFwia2luZFwiOiBcIkV4dGVybmFsRE5TXCIsXG4gICAgXCJtZXRhZGF0YVwiOiB7XG4gICAgICBcIm5hbWVcIjogXCJzYW1wbGUtYmx1ZWNhdFwiXG4gICAgfSxcbiAgICBcInNwZWNcIjoge1xuICAgICAgXCJkb21haW5zXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiZmlsdGVyVHlwZVwiOiBcIkluY2x1ZGVcIixcbiAgICAgICAgICBcIm1hdGNoVHlwZVwiOiBcIkV4YWN0XCIsXG4gICAgICAgICAgXCJuYW1lXCI6IFwibXl6b25lZG9tYWluLmNvbVwiXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBcInByb3ZpZGVyXCI6IHtcbiAgICAgICAgXCJibHVlQ2F0XCI6IHtcbiAgICAgICAgICBcImNvbmZpZ0ZpbGVcIjoge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiYmx1ZWNhdC1jb25maWdcIlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IFwiQmx1ZUNhdFwiXG4gICAgICB9LFxuICAgICAgXCJzb3VyY2VcIjoge1xuICAgICAgICBcIm9wZW5zaGlmdFJvdXRlT3B0aW9uc1wiOiB7XG4gICAgICAgICAgXCJyb3V0ZXJOYW1lXCI6IFwiZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiBcIk9wZW5TaGlmdFJvdXRlXCJcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHtcbiAgICBcImFwaVZlcnNpb25cIjogXCJleHRlcm5hbGRucy5vbG0ub3BlbnNoaWZ0LmlvL3YxYmV0YTFcIixcbiAgICBcImtpbmRcIjogXCJFeHRlcm5hbEROU1wiLFxuICAgIFwibWV0YWRhdGFcIjoge1xuICAgICAgXCJuYW1lXCI6IFwic2FtcGxlLWdjcFwiXG4gICAgfSxcbiAgICBcInNwZWNcIjoge1xuICAgICAgXCJkb21haW5zXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiZmlsdGVyVHlwZVwiOiBcIkluY2x1ZGVcIixcbiAgICAgICAgICBcIm1hdGNoVHlwZVwiOiBcIkV4YWN0XCIsXG4gICAgICAgICAgXCJuYW1lXCI6IFwidGVzdC1nY3AxLnFlLmdjcC5kZXZjbHVzdGVyLm9wZW5zaGlmdC5jb21cIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgXCJwcm92aWRlclwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcIkdDUFwiXG4gICAgICB9LFxuICAgICAgXCJzb3VyY2VcIjoge1xuICAgICAgICBcIm9wZW5zaGlmdFJvdXRlT3B0aW9uc1wiOiB7XG4gICAgICAgICAgXCJyb3V0ZXJOYW1lXCI6IFwiZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiBcIk9wZW5TaGlmdFJvdXRlXCJcbiAgICAgIH0sXG4gICAgICBcInpvbmVzXCI6IFtcbiAgICAgICAgXCJ0ZXN0LWdjcDEtcTZtNXYtcHJpdmF0ZS16b25lXCJcbiAgICAgIF1cbiAgICB9XG4gIH0sXG4gIHtcbiAgICBcImFwaVZlcnNpb25cIjogXCJleHRlcm5hbGRucy5vbG0ub3BlbnNoaWZ0LmlvL3YxYmV0YTFcIixcbiAgICBcImtpbmRcIjogXCJFeHRlcm5hbEROU1wiLFxuICAgIFwibWV0YWRhdGFcIjoge1xuICAgICAgXCJuYW1lXCI6IFwic2FtcGxlLWluZm9ibG94XCJcbiAgICB9LFxuICAgIFwic3BlY1wiOiB7XG4gICAgICBcImRvbWFpbnNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCJmaWx0ZXJUeXBlXCI6IFwiSW5jbHVkZVwiLFxuICAgICAgICAgIFwibWF0Y2hUeXBlXCI6IFwiRXhhY3RcIixcbiAgICAgICAgICBcIm5hbWVcIjogXCJteXpvbmVkb21haW4uY29tXCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFwicHJvdmlkZXJcIjoge1xuICAgICAgICBcImluZm9ibG94XCI6IHtcbiAgICAgICAgICBcImNyZWRlbnRpYWxzXCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImluZm9ibG94LWNyZWRlbnRpYWxzXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ3JpZEhvc3RcIjogXCIxMDAuMTAwLjEwMC4xMDBcIixcbiAgICAgICAgICBcIndhcGlQb3J0XCI6IDQ0MyxcbiAgICAgICAgICBcIndhcGlWZXJzaW9uXCI6IFwiMi4xMi4yXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IFwiSW5mb2Jsb3hcIlxuICAgICAgfSxcbiAgICAgIFwic291cmNlXCI6IHtcbiAgICAgICAgXCJvcGVuc2hpZnRSb3V0ZU9wdGlvbnNcIjoge1xuICAgICAgICAgIFwicm91dGVyTmFtZVwiOiBcImRlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjogXCJPcGVuU2hpZnRSb3V0ZVwiXG4gICAgICB9XG4gICAgfVxuICB9XG5dIiwiY2FwYWJpbGl0aWVzIjoiQmFzaWMgSW5zdGFsbCIsImNlcnRpZmllZCI6ImZhbHNlIiwiY29udGFpbmVySW1hZ2UiOiJyZWdpc3RyeS5yZWRoYXQuaW8vZWRvL2V4dGVybmFsLWRucy1yaGVsOS1vcGVyYXRvckBzaGEyNTY6ZTEzYTJiYWQ1YTZjNWNlYTZmODVjYTYzOGJmYzZkZTk5YzMwMWU1ZGZhYTE2NDg3MzhlMzI3MmNmOTVlZDE3NyIsImNyZWF0ZWRBdCI6IjIwMjYtMDYtMTZUMTY6MzY6MjEiLCJmZWF0dXJlcy5vcGVyYXRvcnMub3BlbnNoaWZ0LmlvL2Rpc2Nvbm5lY3RlZCI6InRydWUiLCJmZWF0dXJlcy5vcGVyYXRvcnMub3BlbnNoaWZ0LmlvL2ZpcHMtY29tcGxpYW50IjoidHJ1ZSIsImZlYXR1cmVzLm9wZXJhdG9ycy5vcGVuc2hpZnQuaW8vcHJveHktYXdhcmUiOiJ0cnVlIiwiZmVhdHVyZXMub3BlcmF0b3JzLm9wZW5zaGlmdC5pby90bHMtcHJvZmlsZXMiOiJmYWxzZSIsImZlYXR1cmVzLm9wZXJhdG9ycy5vcGVuc2hpZnQuaW8vdG9rZW4tYXV0aC1hd3MiOiJmYWxzZSIsImZlYXR1cmVzLm9wZXJhdG9ycy5vcGVuc2hpZnQuaW8vdG9rZW4tYXV0aC1henVyZSI6ImZhbHNlIiwiZmVhdHVyZXMub3BlcmF0b3JzLm9wZW5zaGlmdC5pby90b2tlbi1hdXRoLWdjcCI6ImZhbHNlIiwib2xtLnNraXBSYW5nZSI6Ilx1MDAzYzEuMy42Iiwib3BlcmF0b3JmcmFtZXdvcmsuaW8vc3VnZ2VzdGVkLW5hbWVzcGFjZSI6ImV4dGVybmFsLWRucy1vcGVyYXRvciIsIm9wZXJhdG9ycy5vcGVuc2hpZnQuaW8vdmFsaWQtc3Vic2NyaXB0aW9uIjoiW1wiT3BlblNoaWZ0IEt1YmVybmV0ZXMgRW5naW5lXCIsIFwiT3BlblNoaWZ0IENvbnRhaW5lciBQbGF0Zm9ybVwiLCBcIk9wZW5TaGlmdCBQbGF0Zm9ybSBQbHVzXCJdIiwib3BlcmF0b3JzLm9wZXJhdG9yZnJhbWV3b3JrLmlvL2J1aWxkZXIiOiJvcGVyYXRvci1zZGstdjEuMTYuMCtnaXQiLCJvcGVyYXRvcnMub3BlcmF0b3JmcmFtZXdvcmsuaW8vcHJvamVjdF9sYXlvdXQiOiJnby5rdWJlYnVpbGRlci5pby92MyIsInJlcG9zaXRvcnkiOiJodHRwczovL2dpdGh1Yi5jb20vb3BlbnNoaWZ0L2V4dGVybmFsLWRucy1vcGVyYXRvciIsInN1cHBvcnQiOiJSZWQgSGF0LCBJbmMuIn0sIm5hbWUiOiJleHRlcm5hbC1kbnMtb3BlcmF0b3IudjEuMy42IiwibmFtZXNwYWNlIjoiZXh0ZXJuYWwtZG5zLW9wZXJhdG9yIn0sInNwZWMiOnsiYXBpc2VydmljZWRlZmluaXRpb25zIjp7fSwiY3VzdG9tcmVzb3VyY2VkZWZpbml0aW9ucyI6eyJvd25lZCI6W3siZGVzY3JpcHRpb24iOiJFeHRlcm5hbEROUyBkZXNjcmliZXMgYSBtYW5hZ2VkIEV4dGVybmFsRE5TIGNvbnRyb2xsZXIgaW5zdGFuY2UgZm9yIGEgY2x1c3Rlci4gVGhlIGNvbnRyb2xsZXIgaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGV4dGVybmFsIEROUyByZWNvcmRzIGluIHN1cHBvcnRlZCBETlMgcHJvdmlkZXJzIGJhc2VkIG9mZiBvZiBpbnN0YW5jZXMgb2Ygc2VsZWN0IEt1YmVybmV0ZXMgcmVzb3VyY2VzLiIsImRpc3BsYXlOYW1lIjoiRXh0ZXJuYWwgRE5TIiwia2luZCI6IkV4dGVybmFsRE5TIiwibmFtZSI6ImV4dGVybmFsZG5zZXMuZXh0ZXJuYWxkbnMub2xtLm9wZW5zaGlmdC5pbyIsInZlcnNpb24iOiJ2MWFscGhhMSJ9LHsiZGVzY3JpcHRpb24iOiJFeHRlcm5hbEROUyBkZXNjcmliZXMgYSBtYW5hZ2VkIEV4dGVybmFsRE5TIGNvbnRyb2xsZXIgaW5zdGFuY2UgZm9yIGEgY2x1c3Rlci4gVGhlIGNvbnRyb2xsZXIgaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGV4dGVybmFsIEROUyByZWNvcmRzIGluIHN1cHBvcnRlZCBETlMgcHJvdmlkZXJzIGJhc2VkIG9mZiBvZiBpbnN0YW5jZXMgb2Ygc2VsZWN0IEt1YmVybmV0ZXMgcmVzb3VyY2VzLiIsImRpc3BsYXlOYW1lIjoiRXh0ZXJuYWwgRE5TIiwia2luZCI6IkV4dGVybmFsRE5TIiwibmFtZSI6ImV4dGVybmFsZG5zZXMuZXh0ZXJuYWxkbnMub2xtLm9wZW5zaGlmdC5pbyIsInZlcnNpb24iOiJ2MWJldGExIn1dfSwiZGVzY3JpcHRpb24iOiJUaGUgRXh0ZXJuYWxETlMgT3BlcmF0b3IgZGVwbG95cyBhbmQgbWFuYWdlcyBFeHRlcm5hbEROUywgd2hpY2ggZHluYW1pY2FsbHkgbWFuYWdlcyBETlMgcmVjb3JkcyBpbiBleHRlcm5hbCBETlMgUHJvdmlkZXJzIGZvciBzcGVjaWZpYyBLdWJlcm5ldGVzIHJlc291cmNlcy5cblxuIyMgSG93IGl0IHdvcmtzXG4gRm9sbG93IHRoaXMgbGluayB0byBnZXQgYW4gaWRlYSBvZiBob3cgRXh0ZXJuYWxETlMgT3BlcmF0b3Igd29ya3M6IFtmbG93IGRpYWdyYW1dKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuc2hpZnQvZXh0ZXJuYWwtZG5zLW9wZXJhdG9yL21haW4vZG9jcy9pbWFnZXMvZXh0ZXJuYWwtZG5zLWZsb3ctb3BlbnNoaWZ0LnBuZykuIiwiZGlzcGxheU5hbWUiOiJFeHRlcm5hbEROUyBPcGVyYXRvciIsImljb24iOlt7ImJhc2U2NGRhdGEiOiJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRzRBQUFCMUNBTUFBQUNZbENTUkFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFBRnpVa2RDQUs3T0hPa0FBQU1BVUV4VVJRQUFBQ2hiZ1JkT2R5aGJnU3RkZ3g1VGV5aGJnU2hiZ1NoYmdTaGJnU0pYZmlCVmZDVlpnQ2hiZ1NoYmdTaGJnU2hiZ1NoYmdTaGJnU2hiZ1NoYmdTaGJnU2hiZ1NoYmdTaGJnU2hiZ1NoYmdTaGJnU2hiZ1NoYmdTaGJnU2hiZ1NoYmdTaGJnU2hiZ1NoYmdTaGJnU2hiZ1NoYmdTaGJnZi8vLy8vKy9pdGRnL3o5L3Z6OS9TaGJnZjMrL2lsY2docFFlU3BkZ3JyaDVQNysvK3B3YjduZzR4aFBlRlY5bkphdnd1bHhjUDcvLy92OC9OYmIzUnhTZXZiNSt2cjcrK1hvNnVyczdjYk4wYm5CeHFleXQ2M1QxN2EvdzZPdHM1NnFzUEwwOWV4eWNPUG02Sm1vcnV6dThQUDI5K2pxN0YrSmx2MzgvSU9scmtWeGtqdHFqYk83d0xMWTNHUjNnY0hJelBiMytJcWtxOURWMk5MWDJyekV5TXJaNExYYzM2ak8wL1c3dXUveDh2Zkt5bCtOblp5c3N5UllmL0R6OVhlWXNObmU0SStqcXJ2ajVxMjN2ZHJsNnZPdHJJK3V0Wkt6dWNYTHoxbUZsTFhIMU95RmhQR2twUGJDd3V2eDlPK1RrNnF6dWFYTHoyQ0dvazEzbDIyT21leC9mcDNEeUpHcXNNblAwLzcxOVlXVG1uU0VqYUhHeStEbzdaVzV2elZsaVZ5Sm1Oemc0cG0reEhhVm4rdDZlZjc1K3VsdmJzWFUyNlM2ditEazVzdlIxUHZnNElTZ3FWK0drMmFMbDI1eGZJcWdxS0sreEZwcGMzdWVwOXByYTYvRnpadTd3bTZScTZtOXpZaXBzWVNodDVhanF2Q2VuZTZLaWVKdGJZbXV0bithcEo2eXVGMXdlMytocW5lWm82U3d0bkIraDIrVG5hckF4THhvYXViczhXYUxwbzZwdmUyT2pvcURpV2w3aFpHZnBvbG9iOU5wYXRYaDU0Q2RwWFdxdXpwTVdmcisvbUNBakpHMnZGaCtqSlN0d1NwZGdpNWZoWW1sdXJyTDE3N08yZStabUtHM3lIMmNzNDZhb2RIZTVJS1BsN0hPMG1tYXFuZHZlVXh4ZjBKY2FMQm5hK1h3OHZTMHROenE3SW1Ybm5GcGM1TnhkbG1Bbm5xSmtWSjdtczdUMXF1MXVyWFUySDFxYzNpUm1zZG5hV2lGajZobGFURmloNTIweHIzZjRwTmZaWFJoYWZqUHo0TjNmdnpwNkpDT2xJcXp2MUJlYWJ6WTMyUlpZYVdMajVobGEwdHFkL3ZtNWIzUjEwOTNoZnJhMmRSMmQ2bXRzN2lPa3RXR2lOeUxpMHBCd0dZQUFBQW9kRkpPVXdCWi92ejkvYWtCQXdUOS92ME9pSmNnRnNRSEt0bGhvL2RLMFBIaHVlZzBkSDFCN1R1eGExTHJaSDBoQUFBT3VFbEVRVlJvM3UxYmQxeFQyYmFPazJRSUJBVUxPUGFPZTBMS1NRUWNURUlDSkNFaG9RdzFBZW1nZ0xTQUZGRkFtaWlnSUNKSUVSU3hvcUNPZFd4WG5aKzk5ektLZmVaTzcrWE92ZSs5ZlU2Q0U1UVVrdmordXV1Zm5OVHZyTFcrdGM3WmUzM0I0ZjVyL2N5Q1pJa1p5Y0xpM1dOWmFtSllrdDRwR0FuRnNoM2pNTXpHWnRqa21hTXMzNFEzcjJmd2wwZE5HVEdPd2FTZ3hzRGIyVXkxaExGOVJ5bXp3RTJmZ1dkUWFHUXU0dklld2lYUG8xQm9ZKzB0VlQ2YlA0NjI3OU9ZVERMQ0NOeVh1T25zcFEyUGwzT0plQWc0QmpzVDg0S1JjRU9IZmNBZ0VMbEx2a3lsQXBYbFp1MWpJQkJ3eGlqekFzTDBXQXdaenlCWUlaK2ZaME1jT3BYTnBqb0NNQWVrSnM3akVoZ2ZEQnRxdmhTaVp6NXBCSTFpN1JMWVJvVlFkTFZ6Nk9FY2NHVXgxNHJBR0c5dllhWVV3bDhaYm9ObkVwQXorMzJCWTE4ZzFZWSt6d3Awc1NiUVJrdzNSMFJoakVaT25zWWdrTWtibGtGM3dGdm02QWpjUGp1RDRKbjQwYmFtUmhROTN6RjJOSUkxc3FRV3pQbzdqUDBNdnJ4c0E1bElZSXliUEJMbGxDbGdvMmJRS0hoaytVWTJjQndZVEpWREVQa1lzU0xRN0diaWpFNGgvQjVHZnE3MXB0d0I0NmdCNkFpb0c0UFFvcGhnWkZHZzVMZWZpSkovOFZFSU5nZm9OcGpDK1dldDBhS3dHVDc0RkdJZGF3Uk1ta3ZnT1N3N2VtME8vRkRxUGk2WndKam9NTmkraG5hczBUUW1Iam56a1J0NjRnWVpqQ2c0anhYRjJLbURpU2hrMThncDQyREhJaWN1MDVPMHR5S3ErSEk1bXNMM0RTNEs5R016SWZtdGtObVJtajNFSUlNZi95UnhIbG9VVTRZYVVoUVkrU2VnNUEvYVNBZURCRk1YeFpYUFlWK2pqUitpdnlpZ2E4TnRVUExUTnMwM09HbHZwWkRlaGhYRmlFbDZJZ3JKNzRDU243c3YxUUR5NjBpaDczNG1sOERFdzZMUTRhQWxicFNLL09lQkVYRjhvNi90STZKRk1VUXJIblRjSHNZUitlSkxOeVBqcUpsQ0FHcVhvRVZoQSs5bXRFUnlDblNObVBqSm9NaXZJNks4aTJlSUJOcUVvUVBpa1hERGFBVHk4dk1RYkJZd2g4SHIvYkxQWGVDVmNDQThFczZCUnVBR0xnTnNPakNUemFLQ1ZZa0lnVGJENHEzN2JSSnVLcDVDWENJQld1TklaMnZQbEk2SWJvSjR3M0J2MUFPODF0Z3hyWUo4dEtNQm5zajM5YkhDVTVEMDl6dHprM1FWNFFhSU4vVU5QRFJ4ZUZvazBNVVJUeVc5RDFEdTJmNWNvczRRVHlGMjEwRlJzR29KbVRsMlpMLzB3UXZBT0FxeUg3QjFwU0pXTEVtSlZSMG0vSEM4VWFvNjlPRDBCdXNrRElpMHh0TWMrcmtIbldOWUJmb0NYWlQwY1JldDhmQlV3MTAvZnBLUEhVbkU3bUsrSDFVbjNpV0VNcGFrNFI3TTNIZ0tjbEZuS0lGVTRDZjJFYXZjQy83dFpxZ0NPMUpHekEydVM5SDFSWGpWcFZqVHhtaTRSOEtOWVZndnp3VTZTNEFxU0JMTnJWVEJyYmwxNHBFcThMMCtBdjRUanU2Q0IvdTRGSnQrY0RZVUpCSG82U1dWd1pJK1RpejZ6NHNIZkRWaEsva0N0dTV5QitlSVRMdCtaQm5MNUdicGc2T3FQSFB2RlFsS0R4NDhKRXVSVjJJQmxmam82WjhnZC9rOC9LalhjUEN1ZkJ5TnNRd1kwRTRVdllLRTFmbFBvOXJUaFNIUnpla3lFZCtRZmcxbUU1bEQ0UFdtRDI0U1kxN1FmRzF3c1hLTzJtOWVjY0xxcHl5V3MzTjBjbkE2eTVuRkNtbGVtdUxYZHlhVlBscVR0NEZMbWZJYURtVUtlWWtqR1BoeXF2RGEyWmlBUlUzYXZhTTV4Qm0xa0xEa1V5enNxRHdqVEk2bHJxNHB4VXVxTFhsbkVjZ1Z5OWRYMVprTThtTXRhTUJkOE5QeDA1M1E4MTdadFhSeFdCU0xGUlZkbmhGUWxSOEMzYXVRTmVXbmQ4TUdJeTI0SHQzaE9mQXZzTUZuNzFGR2E4QU5ZUkpuYTRzbGI5R3U0L0VuT2puS0hUODVoNG0yQzhzREN2d3pWNnhZNGQrNDYxUkl4cE9tZkZhN2pEKzM1OC9qMXh1VHRNRjk5QjdsZlFQaGdLVDc1SzBUWDdYcytLZXpzekE5WUhkbTVzblFHOCtlM1ZoM2NzV0t4b0QwcWloblZsSFpMeTBuYnI3MG9Kc0REb0NrMGwvMlh2NG5tck9BaHN4MXYrNWR2N1dtWnV2NkY2OXVOS3dvS0ljdnM5b2Y3djFSckpXa2c0VUQ3dDhmUk5HRXV6TkRmMTN2N2UyS21iZjMxdHZyNGh0T29YaExmLzYzOW04UEdvNHF1QllGMFFveUg3eHdjbldxY2NJTVBuZ2YrZFMvSWNQWk9VcTRLOG1NY0p3ZDZVMUZVYnN6bi8yMXBYQmw0WmFGcUJWdVdWbTRzTkQxSy8rR3FwQ3dwb3dFdHVsd1B1NDhGVG12TlNsM2RtUStPSklXc3prdU8rZHVYRnBjVGt6TzNaeTRtQU5iUDQxdnJCQUhiK3RROVdtNmdtNGNITjJYRFRqZFhzSHpZWE5lemNvNDF0RVErc0xwYmt4ZS9ZRTBDUGxOWEV4MlR0dzNPWnU5MTYrTGIwMC9GbDIrZ3c3b2xTSXZFUnU4V2NFR3dmRkVYc0c5VXI4NjJGQkUxMkI2V2pOL2RYWEtTOHZPemp1d01EczdlL09GQXhjdWJNNU9XK2w5dThFL0g3Ni8xaDJ3ZThPbGZFNUVpcnN4d1dUN2NDSUVYckNZRkFKSXkraUcwQ1BlVHRuMTM5WEhyQ3lNcS8rOVBzMjFNTzczMzc4cGROcjZMRDRBTnRCdEhqRDRJaSt2NERWOHRuRzU0NitwOC9PWkJlcFd3MTlMei96VXliVW01c09jdUkvdkxpeXB2L3V2VlhscElDNG1wdERKKzVWL0FXeWw1ZDBRTHNtUDcyYzBWWHpraTdwaDIrMXRnKzE0MStuYjNoQnUxWmFWMy8xclMwbE96WVdQMDlJK3pDbXNnZlYzNUJBYVRXRXlEL0Fpdkx6VzBFMG9CQVdrWnNRMWVLbHBoTEZFNFE1NDE5Y2ZnSEI1SDZldGpGdjFYVGFzOTYwM1ZsUXNZRVd0alFWc2FTelY1TG9UUFMwdkYvcXZXKytLZWVkZGoza0g0V3BjTjM5WGNxREcxZW5UK0czQ0N1RmFQL09VdWFpNVU1Ymh2MjRyQnJjNXV5Um5vZHE3dkMxeEgrWmhjRHZEbm9UdGxKb0xUdGJab1lLN3U2cWtwSDdMd3BJWUZPNUNTVW5KTnl1ZFZIQ0NWblBCZVQ0dHFvakdndWxhZUdIemhVSW4xLy85NjhWZkJ3cFg1bTNPZzJnb1hJZXdJbnF0dXpuZzZMMzNyN0VXUkRWMjdkM3E1TzFVVTFPemZ1L0Q3dzhmdnZydHEvWHdDU1JtelpFSG1SVUxGa1JWYzB5RmswUWtYeTM3K3VzOUxHSEZ5WmRYRHo3Y3U5N0plKy9Cc3Z4VEZhZTJSVDgvZU5zSll0MStlUEQ1eVYxVkljS2U3MlVDVHc3UGVEaTJMUDc2elZ0ZmYvVm81N0VkdFhmY2NpTjNmUC93MVRObGNsRjE5Y3VUMFdIRkIxKzllbGk2K2txdTI1MC9Nbzd0L3ZyYlc3L2QzSjZpTUJwT2t2eFQ0cTU3a1cxN0l1KzRZUy84NHc1OEluN2VubDllVkZSVmNIalBuclpVdHpucWQycjN0RjI1MTdINmlkUm9PS3BvVWNHeGYyRGtGS2l1ZTVleEc4QW55V0ZOVFFuaGFPL24rUGI3eHVyVFRSTGpjOGVya3kvRmtpRzdYRHpYdzg5RDN0SmRweENKSk1wT3BVREFWd1FIKzRRZTVoY0wrRkpCc1JydU1OOGtaa3BWY09LV3N2QlE1YUhnbHRKSFhsMWQzVDMzUFZ2S1NydTd1cnhDTDBkMEhicDZ1VXV1aGxNQ3M4Q2RLSk9HaWtLRGU1U2hWMXV1QnZmMGNubzh5MHJoMGFId2lGdWw0dUtlVWhVam04MERseUs3SDN3NHRFelpGYnFvOTlDajhQdWN5bExsWlk5RGp6aWRvUkdQeWp5RCsrRDJtQXlIVVlYbjVwdDZwZGFINmdQWHhiRit2Tng3UjFNVkNoREw1L0hnazlySTFEcDF1ZTN4TUEyT3Z6MFYxb0RidmF5MXV3dDJCN1RkWTZOUDJyYjMzT2pwK09NTy9JYnYwZWJXM1FXTjZYL2NnYWZsZTJWbnNXbHdDa0gxOXViMmdPMEpYazBod29yZGYrNXFiNjgrL2VkdkR4NjAzRHg5T3FBNW8rQjBhNVZ3VzZubjB1M3B6Um5IMXZadFRSamRNeVdkS1FsZGNsaE04cVVoQ3pwU3lsb0RxaHY4L2RFbFNVTkJRTUJMOGVGODUyMU5jR1ZYZDc5YmR0L2Q1Qll0NFZlS09WSjBwYmhtYlhtNjEvWVFkTUZWbE5GUmxTOTBaaTJva2gycjJwa0FUMFlSMnl1V2N2eE1ocU43aUtYRk11eTA2NUpiVDBXcmw1T2Q3YXJsWkZGcmRRUktFNThFVHFVczNPUUxrQ0o0VWF4Y29NN0lvcCsvRGNpSDYwbVdNRmtVQUIrY2hUK1UzWGlpZXM5UHJIVDM4blF6Q0c0bWsvaDQ0QzBqdmdlYkxsV3puSDc1cS8vNXRtbnROaGpIVXp1TG9vdTJ0VmIvdVBjWDJldGRBcDZiSjhlQTFhdHFiYTUvQjBGNTYwUkxCTSt2T0VVV0ZoYldsTHpETTBueTc1OVAvTmpiYnhrKzROcDh2NHZHMnB5RW04NndDbFFBUFp1MFBpL2pNdytwSEdYekZEd3M5cnpRbTllZngrcmJ0a1YzeFlacGJIVFlmbUI5NWhOOSt5b1I4Y2V2Sjd6NTR1SDQ0N3ZrZXZkVkZoT1o5aHB3SSswWTVGcWdaM2RkRVBCVWZUdkM1ckY1UE5WQ0lOei9oOW9VUFh2RVFCRmt4WmorOTZZWUNmYytCVG1yYjVNcXFYT1JTSVdSVk13SjcxVXRWM2tKMWVLNWV2YmNRZVE4eGtTTi9XOUxuRDFNSGcvb0dZdkVTdFZMbTE3UFlxVmNYV1M4Skw3ZTFHMUNLRFA2N1dmYWptTVN6d0ZEeHdlOW5oNXllYmloRXd3d0g4YlNYbk83RmthVFNWd01ETjNTcit6MWtNK3ROSFNjQUw1RUtCT0hhKzR2a25CVGFVeGlscUh1VWFsS09aVnFxSE81MExrM3R2WXRjRE1ZVmtFU2cvMVR5b0hCemlVaWxHbTIvUWNsRnJoUjR5aGNHRTREOFpJNEJxS3h3VVV1Z1RiNXpia0ZDVGVaUm5DNXBHTVkvOVpZMXdDYnd3WlpaRHhqd3R0RElBdmNhQm9CU2Z3UW1HRzZwU0hBeUpwbnpSaHZPeERjeUJIUXY4VVNkREpsRmtQSGNwOXg4WXh4azNBRGpFUXRjRU1uMEFqY29Dd1RKNU9hWS92RkNKNHhiVHB1d0FFczlBL0cwNHE3MkpTNXE4WnNTM0tXUmlUUTdFYmhTRnFGV1E2cXFYS3VvVnpRemlUSGpVRXVlQXB0OUZBY1NjY1kyMVk5TTZjYXlsRnRncExabUtCa0RFNm5Nazh0aDdGQ0h0Y09XaEV3Z0RKZ3BMNUJmWi9ZaDZoTjdHUEkwUHlqTHhBOGsyYVlHQWlWTW8xR3BVeVV6M3dIUGRCR1UzNXVjRkludFZDTGdIY0p6QnFjN0FFbC8xRk15RFhSbm1TNFprVWxRME5UK1BuUlFjeTFJYm5tYnpKS3B2WmFaRGZ2VXE2QktZUnhaRzljYnF6ZUNCWGtxRlJVRjNrR3BCQ05RZTBTeEJvanZ6RnFLa3dqTmhiVGlKM1hxaEhUMUZSc0lKUFZXakhqcEZzdy9KWU9xQUtPcUtjb1VOSFAvak1JZ1lrZlBkd1VKVnlmdm85TDJhOWRMUU5QaEs3VytVMHlVZWZYcDE3RXV3UzEwUWZzYTJpWXJ5eEdVQlhqRURPb0dOSFlxSXRpSUtVVGZDSDNFdHF4VVBLVHpLSFJSSXRDcmVOQ3BTeU8vWHN4N3lKRy9obTI1aE9FcW5XMWVPUUwyTmZtektKU3FZNk9WQ3FxTkhFOEY0Z01Xb2RtVUFxbllrVVJkRGIxNzNqbWJseUNxdXltT1poZFBRd2pSWEtZeUtCWUk3VFpteTZlaTR3OHYzSC92aThRTXBPQnR4bitMclRSbUg1eUdpcUxSaEFpTks0TDBackN3SnRiTnR3dm9zTWRSbnpBb0ZDWURGVDV6V1RZRFh0WFlIMUZnYk8xdDVrdzFtNjgzWWpSa3llTnhKbUgvUG9FKzMzSnNuem4veEd3c0ZSaHdFZlN1LzlEUXQ4OTR2OFhra24yZjF0MjBQRm1KYzd2QUFBQUFFbEZUa1N1UW1DQyIsIm1lZGlhdHlwZSI6ImltYWdlL3BuZyJ9XSwiaW5zdGFsbCI6eyJzcGVjIjp7ImNsdXN0ZXJQZXJtaXNzaW9ucyI6W3sicnVsZXMiOlt7ImFwaUdyb3VwcyI6WyJjbG91ZGNyZWRlbnRpYWwub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJjcmVkZW50aWFsc3JlcXVlc3RzIiwiY3JlZGVudGlhbHNyZXF1ZXN0cy9maW5hbGl6ZXJzIiwiY3JlZGVudGlhbHNyZXF1ZXN0cy9zdGF0dXMiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsiY29uZmlnLm9wZW5zaGlmdC5pbyJdLCJyZXNvdXJjZXMiOlsiaW5mcmFzdHJ1Y3R1cmVzIl0sInZlcmJzIjpbImdldCIsImxpc3QiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJleHRlcm5hbGRucy5vbG0ub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJleHRlcm5hbGRuc2VzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImV4dGVybmFsZG5zLm9sbS5vcGVuc2hpZnQuaW8iXSwicmVzb3VyY2VzIjpbImV4dGVybmFsZG5zZXMvZmluYWxpemVycyJdLCJ2ZXJicyI6WyJ1cGRhdGUiXX0seyJhcGlHcm91cHMiOlsiZXh0ZXJuYWxkbnMub2xtLm9wZW5zaGlmdC5pbyJdLCJyZXNvdXJjZXMiOlsiZXh0ZXJuYWxkbnNlcy9zdGF0dXMiXSwidmVyYnMiOlsiZ2V0IiwicGF0Y2giLCJ1cGRhdGUiXX0seyJhcGlHcm91cHMiOlsicm91dGUub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJyb3V0ZXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImF1dGhlbnRpY2F0aW9uLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsidG9rZW5yZXZpZXdzIl0sInZlcmJzIjpbImNyZWF0ZSJdfSx7ImFwaUdyb3VwcyI6WyJhdXRob3JpemF0aW9uLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsic3ViamVjdGFjY2Vzc3Jldmlld3MiXSwidmVyYnMiOlsiY3JlYXRlIl19XSwic2VydmljZUFjY291bnROYW1lIjoiZXh0ZXJuYWwtZG5zLW9wZXJhdG9yIn1dLCJkZXBsb3ltZW50cyI6W3sibmFtZSI6ImV4dGVybmFsLWRucy1vcGVyYXRvciIsInNwZWMiOnsicmVwbGljYXMiOjEsInNlbGVjdG9yIjp7Im1hdGNoTGFiZWxzIjp7Im5hbWUiOiJleHRlcm5hbC1kbnMtb3BlcmF0b3IifX0sInN0cmF0ZWd5Ijp7InJvbGxpbmdVcGRhdGUiOnsibWF4VW5hdmFpbGFibGUiOiIyNSUifSwidHlwZSI6IlJvbGxpbmdVcGRhdGUifSwidGVtcGxhdGUiOnsibWV0YWRhdGEiOnsibGFiZWxzIjp7Im5hbWUiOiJleHRlcm5hbC1kbnMtb3BlcmF0b3IifX0sInNwZWMiOnsiY29udGFpbmVycyI6W3siYXJncyI6WyItLW1ldHJpY3MtYmluZC1hZGRyZXNzPTEyNy4wLjAuMTo4MDgwIiwiLS1vcGVyYXRvci1uYW1lc3BhY2U9JChPUEVSQVRPUl9OQU1FU1BBQ0UpIiwiLS1vcGVyYW5kLW5hbWVzcGFjZT0kKE9QRVJBVE9SX05BTUVTUEFDRSkiLCItLWV4dGVybmFsZG5zLWltYWdlPSQoUkVMQVRFRF9JTUFHRV9FWFRFUk5BTF9ETlMpIiwiLS10cnVzdGVkLWNhLWNvbmZpZ21hcD0kKFRSVVNURURfQ0FfQ09ORklHTUFQX05BTUUpIiwiLS1sZWFkZXItZWxlY3QiLCItLXdlYmhvb2stZGlzYWJsZS1odHRwMiJdLCJlbnYiOlt7Im5hbWUiOiJPUEVSQVRPUl9OQU1FU1BBQ0UiLCJ2YWx1ZUZyb20iOnsiZmllbGRSZWYiOnsiZmllbGRQYXRoIjoibWV0YWRhdGEubmFtZXNwYWNlIn19fSx7Im5hbWUiOiJSRUxBVEVEX0lNQUdFX0VYVEVSTkFMX0ROUyIsInZhbHVlIjoicmVnaXN0cnkucmVkaGF0LmlvL2Vkby9leHRlcm5hbC1kbnMtcmhlbDlAc2hhMjU2OjBlZjZkZDUxODUwMTMwNjRjMzkxZWFjZDBmNTA4ZDY1ODI5ZmZhNTEyYTc4MDY2NjBkMzUzYzExM2E3YTA2OWIifSx7Im5hbWUiOiJUUlVTVEVEX0NBX0NPTkZJR01BUF9OQU1FIn1dLCJpbWFnZSI6InJlZ2lzdHJ5LnJlZGhhdC5pby9lZG8vZXh0ZXJuYWwtZG5zLXJoZWw5LW9wZXJhdG9yQHNoYTI1NjplMTNhMmJhZDVhNmM1Y2VhNmY4NWNhNjM4YmZjNmRlOTljMzAxZTVkZmFhMTY0ODczOGUzMjcyY2Y5NWVkMTc3IiwibmFtZSI6ImV4dGVybmFsLWRucy1vcGVyYXRvciIsInBvcnRzIjpbeyJjb250YWluZXJQb3J0Ijo5NDQzLCJuYW1lIjoid2ViaG9vay1zZXJ2ZXIiLCJwcm90b2NvbCI6IlRDUCJ9LHsiY29udGFpbmVyUG9ydCI6OTQ0MCwibmFtZSI6ImhlYWx0aC1jaGVjayIsInByb3RvY29sIjoiVENQIn1dLCJyZWFkaW5lc3NQcm9iZSI6eyJodHRwR2V0Ijp7InBhdGgiOiIvcmVhZHl6IiwicG9ydCI6ImhlYWx0aC1jaGVjayJ9LCJpbml0aWFsRGVsYXlTZWNvbmRzIjo1LCJwZXJpb2RTZWNvbmRzIjo1fSwicmVzb3VyY2VzIjp7InJlcXVlc3RzIjp7ImNwdSI6IjEwMG0iLCJtZW1vcnkiOiIzME1pIn19LCJzZWN1cml0eUNvbnRleHQiOnsiYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uIjpmYWxzZSwiY2FwYWJpbGl0aWVzIjp7ImRyb3AiOlsiQUxMIl19LCJwcml2aWxlZ2VkIjpmYWxzZSwicnVuQXNOb25Sb290Ijp0cnVlLCJzZWNjb21wUHJvZmlsZSI6eyJ0eXBlIjoiUnVudGltZURlZmF1bHQifX0sInRlcm1pbmF0aW9uTWVzc2FnZVBvbGljeSI6IkZhbGxiYWNrVG9Mb2dzT25FcnJvciJ9LHsiYXJncyI6WyItLXNlY3VyZS1saXN0ZW4tYWRkcmVzcz0wLjAuMC4wOjg0NDMiLCItLXVwc3RyZWFtPWh0dHA6Ly8xMjcuMC4wLjE6ODA4MC8iLCItLWxvZ3Rvc3RkZXJyPXRydWUiLCItLXY9MTAiLCItLXRscy1jZXJ0LWZpbGU9L3Zhci9ydW4vc2VjcmV0cy9zZXJ2aW5nLWNlcnQvdGxzLmNydCIsIi0tdGxzLXByaXZhdGUta2V5LWZpbGU9L3Zhci9ydW4vc2VjcmV0cy9zZXJ2aW5nLWNlcnQvdGxzLmtleSIsIi0taHR0cDItZGlzYWJsZSJdLCJpbWFnZSI6InJlZ2lzdHJ5LnJlZGhhdC5pby9vcGVuc2hpZnQ0L29zZS1rdWJlLXJiYWMtcHJveHktcmhlbDlAc2hhMjU2OjBmYzZhMTZiNzFlMjcxOWQ5ZDAxZDZkZmViODMwNzdjMzg1NjJjMDhkNjI4ZDFmMWFlMDNmYWJlM2E1YjlhOTEiLCJuYW1lIjoia3ViZS1yYmFjLXByb3h5IiwicG9ydHMiOlt7ImNvbnRhaW5lclBvcnQiOjg0NDMsIm5hbWUiOiJodHRwcyJ9XSwicmVzb3VyY2VzIjp7InJlcXVlc3RzIjp7ImNwdSI6IjEwMG0iLCJtZW1vcnkiOiIyME1pIn19LCJzZWN1cml0eUNvbnRleHQiOnsiYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uIjpmYWxzZSwiY2FwYWJpbGl0aWVzIjp7ImRyb3AiOlsiQUxMIl19LCJwcml2aWxlZ2VkIjpmYWxzZSwicnVuQXNOb25Sb290Ijp0cnVlLCJzZWNjb21wUHJvZmlsZSI6eyJ0eXBlIjoiUnVudGltZURlZmF1bHQifX0sInRlcm1pbmF0aW9uTWVzc2FnZVBvbGljeSI6IkZhbGxiYWNrVG9Mb2dzT25FcnJvciIsInZvbHVtZU1vdW50cyI6W3sibW91bnRQYXRoIjoiL3Zhci9ydW4vc2VjcmV0cy9zZXJ2aW5nLWNlcnQiLCJuYW1lIjoibWV0cmljcy1jZXJ0IiwicmVhZE9ubHkiOnRydWV9XX1dLCJzZWN1cml0eUNvbnRleHQiOnsicnVuQXNOb25Sb290Ijp0cnVlfSwic2VydmljZUFjY291bnROYW1lIjoiZXh0ZXJuYWwtZG5zLW9wZXJhdG9yIiwidm9sdW1lcyI6W3sibmFtZSI6Im1ldHJpY3MtY2VydCIsInNlY3JldCI6eyJkZWZhdWx0TW9kZSI6NDIwLCJzZWNyZXROYW1lIjoiZXh0ZXJuYWwtZG5zLW9wZXJhdG9yLW1ldHJpY3MifX1dfX19fV0sInBlcm1pc3Npb25zIjpbeyJydWxlcyI6W3siYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsiY29uZmlnbWFwcyIsInNlY3JldHMiLCJzZXJ2aWNlYWNjb3VudHMiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJwb2RzIl0sInZlcmJzIjpbImdldCIsImxpc3QiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJhcHBzIl0sInJlc291cmNlcyI6WyJkZXBsb3ltZW50cyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJnZXQiLCJsaXN0IiwicGF0Y2giLCJ1cGRhdGUiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJjb29yZGluYXRpb24uazhzLmlvIl0sInJlc291cmNlcyI6WyJsZWFzZXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIiwiY3JlYXRlIiwidXBkYXRlIiwicGF0Y2giLCJkZWxldGUiXX0seyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJldmVudHMiXSwidmVyYnMiOlsiY3JlYXRlIiwicGF0Y2giXX1dLCJzZXJ2aWNlQWNjb3VudE5hbWUiOiJleHRlcm5hbC1kbnMtb3BlcmF0b3IifV19LCJzdHJhdGVneSI6ImRlcGxveW1lbnQifSwiaW5zdGFsbE1vZGVzIjpbeyJzdXBwb3J0ZWQiOnRydWUsInR5cGUiOiJPd25OYW1lc3BhY2UifSx7InN1cHBvcnRlZCI6dHJ1ZSwidHlwZSI6IlNpbmdsZU5hbWVzcGFjZSJ9LHsic3VwcG9ydGVkIjpmYWxzZSwidHlwZSI6Ik11bHRpTmFtZXNwYWNlIn0seyJzdXBwb3J0ZWQiOmZhbHNlLCJ0eXBlIjoiQWxsTmFtZXNwYWNlcyJ9XSwia2V5d29yZHMiOlsib3BlbnNoaWZ0IiwiZG5zIiwiZXh0ZXJuYWxkbnMiLCJvcGVyYXRvciJdLCJsaW5rcyI6W3sibmFtZSI6IlNvdXJjZSBjb2RlIiwidXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL29wZW5zaGlmdC9leHRlcm5hbC1kbnMtb3BlcmF0b3IifV0sIm1hdHVyaXR5IjoiYmV0YSIsIm1pbkt1YmVWZXJzaW9uIjoiMS4yMi4wIiwicHJvdmlkZXIiOnsibmFtZSI6IlJlZCBIYXQsIEluYy4ifSwicmVsYXRlZEltYWdlcyI6W3siaW1hZ2UiOiJyZWdpc3RyeS5yZWRoYXQuaW8vZWRvL2V4dGVybmFsLWRucy1yaGVsOS1vcGVyYXRvckBzaGEyNTY6ZTEzYTJiYWQ1YTZjNWNlYTZmODVjYTYzOGJmYzZkZTk5YzMwMWU1ZGZhYTE2NDg3MzhlMzI3MmNmOTVlZDE3NyIsIm5hbWUiOiJleHRlcm5hbC1kbnMtcmhlbDktb3BlcmF0b3ItZTEzYTJiYWQ1YTZjNWNlYTZmODVjYTYzOGJmYzZkZTk5YzMwMWU1ZGZhYTE2NDg3MzhlMzI3MmNmOTVlZDE3Ny1hbm5vdGF0aW9uIn0seyJpbWFnZSI6InJlZ2lzdHJ5LnJlZGhhdC5pby9lZG8vZXh0ZXJuYWwtZG5zLXJoZWw5LW9wZXJhdG9yQHNoYTI1NjplMTNhMmJhZDVhNmM1Y2VhNmY4NWNhNjM4YmZjNmRlOTljMzAxZTVkZmFhMTY0ODczOGUzMjcyY2Y5NWVkMTc3IiwibmFtZSI6ImV4dGVybmFsLWRucy1vcGVyYXRvciJ9LHsiaW1hZ2UiOiJyZWdpc3RyeS5yZWRoYXQuaW8vb3BlbnNoaWZ0NC9vc2Uta3ViZS1yYmFjLXByb3h5LXJoZWw5QHNoYTI1NjowZmM2YTE2YjcxZTI3MTlkOWQwMWQ2ZGZlYjgzMDc3YzM4NTYyYzA4ZDYyOGQxZjFhZTAzZmFiZTNhNWI5YTkxIiwibmFtZSI6Imt1YmUtcmJhYy1wcm94eSJ9LHsiaW1hZ2UiOiJyZWdpc3RyeS5yZWRoYXQuaW8vZWRvL2V4dGVybmFsLWRucy1yaGVsOUBzaGEyNTY6MGVmNmRkNTE4NTAxMzA2NGMzOTFlYWNkMGY1MDhkNjU4MjlmZmE1MTJhNzgwNjY2MGQzNTNjMTEzYTdhMDY5YiIsIm5hbWUiOiJleHRlcm5hbF9kbnMifV0sInJlcGxhY2VzIjoiZXh0ZXJuYWwtZG5zLW9wZXJhdG9yLnYxLjMuNSIsInZlcnNpb24iOiIxLjMuNiIsIndlYmhvb2tkZWZpbml0aW9ucyI6W3siYWRtaXNzaW9uUmV2aWV3VmVyc2lvbnMiOlsidjEiLCJ2MWJldGExIl0sImNvbnRhaW5lclBvcnQiOjQ0MywiZGVwbG95bWVudE5hbWUiOiJleHRlcm5hbC1kbnMtb3BlcmF0b3IiLCJmYWlsdXJlUG9saWN5IjoiRmFpbCIsImdlbmVyYXRlTmFtZSI6InZleHRlcm5hbGRucy5rYi5pbyIsInJ1bGVzIjpbeyJhcGlHcm91cHMiOlsiZXh0ZXJuYWxkbnMub2xtLm9wZW5zaGlmdC5pbyJdLCJhcGlWZXJzaW9ucyI6WyJ2MWJldGExIl0sIm9wZXJhdGlvbnMiOlsiQ1JFQVRFIiwiVVBEQVRFIl0sInJlc291cmNlcyI6WyJleHRlcm5hbGRuc2VzIl19XSwic2lkZUVmZmVjdHMiOiJOb25lIiwidGFyZ2V0UG9ydCI6OTQ0MywidHlwZSI6IlZhbGlkYXRpbmdBZG1pc3Npb25XZWJob29rIiwid2ViaG9va1BhdGgiOiIvdmFsaWRhdGUtZXh0ZXJuYWxkbnMtb2xtLW9wZW5zaGlmdC1pby12MWJldGExLWV4dGVybmFsZG5zIn1dfX0= |
There was a problem hiding this comment.
Regenerate the bundle with the required pod runtime controls.
Line 1080’s decoded CSV installs containers with only resource requests, missing liveness probes, and no readOnlyRootFilesystem: true. Fix the source CSV/deployment manifests and regenerate the catalog rather than patching this encoded payload directly.
As per coding guidelines, Resource limits (cpu, memory) on every container, Liveness + readiness probes defined, and securityContext: runAsNonRoot, readOnlyRootFilesystem are required.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@catalog/v4.12/catalog.yaml` at line 1080, The base64-encoded CSV data at line
1080 contains deployment manifests that lack required pod runtime controls.
Instead of directly patching the encoded payload, locate the source CSV or
deployment manifests in the operator's repository (particularly the deployment
specs for the external-dns-operator and kube-rbac-proxy containers), then add
resource limits (cpu, memory) to every container, define liveness probes
alongside the existing readiness probes, and add readOnlyRootFilesystem: true to
the securityContext of each container. After making these changes to the source
manifests, regenerate and rebuild the catalog bundle to update this encoded data
rather than modifying it directly.
Source: Coding guidelines
| data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJuYW1lIjoiZXh0ZXJuYWxkbnMtdmlld2VyIn0sInJ1bGVzIjpbeyJhcGlHcm91cHMiOlsib3BlcmF0b3Iub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJleHRlcm5hbGRucyJdLCJ2ZXJicyI6WyJnZXQiLCJsaXN0Iiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsib3BlcmF0b3Iub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJleHRlcm5hbGRucy9zdGF0dXMiXSwidmVyYnMiOlsiZ2V0Il19XX0= | ||
| - type: olm.bundle.object | ||
| value: | ||
| data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZUJpbmRpbmciLCJtZXRhZGF0YSI6eyJjcmVhdGlvblRpbWVzdGFtcCI6bnVsbCwibmFtZSI6ImV4dGVybmFsLWRucyJ9LCJyb2xlUmVmIjp7ImFwaUdyb3VwIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pbyIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm5hbWUiOiJleHRlcm5hbC1kbnMifSwic3ViamVjdHMiOlt7ImtpbmQiOiJHcm91cCIsIm5hbWUiOiJzeXN0ZW06c2VydmljZWFjY291bnRzOmV4dGVybmFsLWRucyIsIm5hbWVzcGFjZSI6ImV4dGVybmFsLWRucyJ9LHsia2luZCI6Ikdyb3VwIiwibmFtZSI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudHM6ZXh0ZXJuYWwtZG5zLW9wZXJhdG9yIiwibmFtZXNwYWNlIjoiZXh0ZXJuYWwtZG5zLW9wZXJhdG9yIn1dfQ== |
There was a problem hiding this comment.
Bind cluster permissions to concrete service accounts.
Line 1098’s decoded ClusterRoleBinding grants the external-dns ClusterRole to system:serviceaccounts:external-dns and system:serviceaccounts:external-dns-operator, which covers every service account in those namespaces. Bind only the operator/operand service accounts that need these cluster-scoped reads.
As per coding guidelines, RBAC: least privilege; no cluster-admin for workloads is required.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@catalog/v4.12/catalog.yaml` at line 1098, The ClusterRoleBinding at line 1098
currently grants the external-dns ClusterRole to groups
(system:serviceaccounts:external-dns and
system:serviceaccounts:external-dns-operator) that include all service accounts
in those namespaces, violating the least privilege principle. Replace these
group-based subjects with specific ServiceAccount subjects pointing to the
individual service accounts that actually need the external-dns cluster
permissions. Change each group subject to a ServiceAccount subject with the
appropriate kind ("ServiceAccount"), name (the actual service account name), and
namespace values.
Source: Coding guidelines
|
/retest-required |
|
4.22 deploy pipeline has the right |
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: Thealisyed The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
/hold |
Add v1.3.6 bundle to all FBC `catalog-template.yaml` (v4.12-v4.22) using
`registry.redhat.io` and regenerate `catalog.yaml`:
make generate-catalog OCP_VERSION=4.X
Co-Authored-By: Claude
|
/unhold |
|
@alebedev87: This pull request references NE-2747 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@catalog/v4.13/catalog-template.yaml`:
- Around line 156-158: The external-dns-operator.v1.3.6 bundle image reference
uses the production registry registry.redhat.io instead of the stage registry
required for this PR's rollout. In the bundle entry for
external-dns-operator.v1.3.6, update the image field to replace
registry.redhat.io with registry.stage.redhat.io to ensure the catalog can
properly resolve and promote stage-hosted artifacts. Keep the remaining image
digest and path structure intact.
In `@catalog/v4.13/catalog.yaml`:
- Line 1077: The externaldns-viewer ClusterRole in the encoded CRD data
currently uses the API group `operator.openshift.io` in its RBAC rules, but the
CRD itself is defined under the API group `externaldns.olm.openshift.io`. Decode
the base64-encoded data field at line 1077, locate the embedded ClusterRole
definition for externaldns-viewer, and update the apiGroup in the rules section
from `operator.openshift.io` to `externaldns.olm.openshift.io` to match the
CRD's actual API group. After making this correction, re-encode the updated YAML
back to base64 and replace the data field value.
In `@catalog/v4.16/catalog.yaml`:
- Around line 643-644: The external-dns-operator-bundle image reference is
pointing to registry.redhat.io/edo but should point to
registry.stage.redhat.io/edo for stage catalog releases. Update the image
registry URL from registry.redhat.io/edo to registry.stage.redhat.io/edo at line
643 and all other related operator bundle/operand image references throughout
the file (including lines 1057 and 1112-1119). Note that kube-rbac-proxy images
should remain on registry.redhat.io. After updating the source bundle/template,
regenerate the catalog so the encoded CSV reference at line 1080 is also
automatically updated to reflect the new registry URL.
In `@catalog/v4.19/catalog.yaml`:
- Line 5688: The external-dns-operator-bundle image reference at line 5688 is
pointing to the production registry (registry.redhat.io) but should use the
stage registry (registry.stage.redhat.io) for stage catalog entries. Replace
registry.redhat.io with registry.stage.redhat.io in the image field for the
external-dns-operator-bundle reference. Apply the same change to the other
external-dns-* image references mentioned at lines 6036 and 6098-6105, ensuring
that any kube-rbac-proxy or other supporting images remain on registry.redhat.io
as they should not be changed to the stage registry.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: 36f654f5-3e37-458e-a731-6f144719255b
📒 Files selected for processing (22)
catalog/v4.12/catalog-template.yamlcatalog/v4.12/catalog.yamlcatalog/v4.13/catalog-template.yamlcatalog/v4.13/catalog.yamlcatalog/v4.14/catalog-template.yamlcatalog/v4.14/catalog.yamlcatalog/v4.15/catalog-template.yamlcatalog/v4.15/catalog.yamlcatalog/v4.16/catalog-template.yamlcatalog/v4.16/catalog.yamlcatalog/v4.17/catalog-template.yamlcatalog/v4.17/catalog.yamlcatalog/v4.18/catalog-template.yamlcatalog/v4.18/catalog.yamlcatalog/v4.19/catalog-template.yamlcatalog/v4.19/catalog.yamlcatalog/v4.20/catalog-template.yamlcatalog/v4.20/catalog.yamlcatalog/v4.21/catalog-template.yamlcatalog/v4.21/catalog.yamlcatalog/v4.22/catalog-template.yamlcatalog/v4.22/catalog.yaml
✅ Files skipped from review due to trivial changes (1)
- catalog/v4.20/catalog-template.yaml
🚧 Files skipped from review as they are similar to previous changes (15)
- catalog/v4.16/catalog-template.yaml
- catalog/v4.17/catalog-template.yaml
- catalog/v4.14/catalog-template.yaml
- catalog/v4.22/catalog-template.yaml
- catalog/v4.15/catalog-template.yaml
- catalog/v4.12/catalog-template.yaml
- catalog/v4.18/catalog-template.yaml
- catalog/v4.15/catalog.yaml
- catalog/v4.21/catalog.yaml
- catalog/v4.21/catalog-template.yaml
- catalog/v4.22/catalog.yaml
- catalog/v4.17/catalog.yaml
- catalog/v4.20/catalog.yaml
- catalog/v4.18/catalog.yaml
- catalog/v4.19/catalog-template.yaml
| version: 1.3.6 | ||
| - type: olm.bundle.object | ||
| value: | ||
| data: eyJhcGlWZXJzaW9uIjoiYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEiLCJraW5kIjoiQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsiY29udHJvbGxlci1nZW4ua3ViZWJ1aWxkZXIuaW8vdmVyc2lvbiI6InYwLjE4LjAifSwiY3JlYXRpb25UaW1lc3RhbXAiOm51bGwsIm5hbWUiOiJleHRlcm5hbGRuc2VzLmV4dGVybmFsZG5zLm9sbS5vcGVuc2hpZnQuaW8ifSwic3BlYyI6eyJncm91cCI6ImV4dGVybmFsZG5zLm9sbS5vcGVuc2hpZnQuaW8iLCJuYW1lcyI6eyJraW5kIjoiRXh0ZXJuYWxETlMiLCJsaXN0S2luZCI6IkV4dGVybmFsRE5TTGlzdCIsInBsdXJhbCI6ImV4dGVybmFsZG5zZXMiLCJzaW5ndWxhciI6ImV4dGVybmFsZG5zIn0sInNjb3BlIjoiQ2x1c3RlciIsInZlcnNpb25zIjpbeyJuYW1lIjoidjFhbHBoYTEiLCJzY2hlbWEiOnsib3BlbkFQSVYzU2NoZW1hIjp7ImRlc2NyaXB0aW9uIjoiRXh0ZXJuYWxETlMgZGVzY3JpYmVzIGEgbWFuYWdlZCBFeHRlcm5hbEROUyBjb250cm9sbGVyIGluc3RhbmNlIGZvciBhIGNsdXN0ZXIuXG5UaGUgY29udHJvbGxlciBpcyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgZXh0ZXJuYWwgRE5TIHJlY29yZHMgaW4gc3VwcG9ydGVkXG5ETlMgcHJvdmlkZXJzIGJhc2VkIG9mZiBvZiBpbnN0YW5jZXMgb2Ygc2VsZWN0IEt1YmVybmV0ZXMgcmVzb3VyY2VzLiIsInByb3BlcnRpZXMiOnsiYXBpVmVyc2lvbiI6eyJkZXNjcmlwdGlvbiI6IkFQSVZlcnNpb24gZGVmaW5lcyB0aGUgdmVyc2lvbmVkIHNjaGVtYSBvZiB0aGlzIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC5cblNlcnZlcnMgc2hvdWxkIGNvbnZlcnQgcmVjb2duaXplZCBzY2hlbWFzIHRvIHRoZSBsYXRlc3QgaW50ZXJuYWwgdmFsdWUsIGFuZFxubWF5IHJlamVjdCB1bnJlY29nbml6ZWQgdmFsdWVzLlxuTW9yZSBpbmZvOiBodHRwczovL2dpdC5rOHMuaW8vY29tbXVuaXR5L2NvbnRyaWJ1dG9ycy9kZXZlbC9zaWctYXJjaGl0ZWN0dXJlL2FwaS1jb252ZW50aW9ucy5tZCNyZXNvdXJjZXMiLCJ0eXBlIjoic3RyaW5nIn0sImtpbmQiOnsiZGVzY3JpcHRpb24iOiJLaW5kIGlzIGEgc3RyaW5nIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgUkVTVCByZXNvdXJjZSB0aGlzIG9iamVjdCByZXByZXNlbnRzLlxuU2VydmVycyBtYXkgaW5mZXIgdGhpcyBmcm9tIHRoZSBlbmRwb2ludCB0aGUgY2xpZW50IHN1Ym1pdHMgcmVxdWVzdHMgdG8uXG5DYW5ub3QgYmUgdXBkYXRlZC5cbkluIENhbWVsQ2FzZS5cbk1vcmUgaW5mbzogaHR0cHM6Ly9naXQuazhzLmlvL2NvbW11bml0eS9jb250cmlidXRvcnMvZGV2ZWwvc2lnLWFyY2hpdGVjdHVyZS9hcGktY29udmVudGlvbnMubWQjdHlwZXMta2luZHMiLCJ0eXBlIjoic3RyaW5nIn0sIm1ldGFkYXRhIjp7InR5cGUiOiJvYmplY3QifSwic3BlYyI6eyJkZXNjcmlwdGlvbiI6InNwZWMgaXMgdGhlIHNwZWNpZmljYXRpb24gb2YgdGhlIGRlc2lyZWQgYmVoYXZpb3Igb2YgdGhlIEV4dGVybmFsRE5TLiIsInByb3BlcnRpZXMiOnsiZG9tYWlucyI6eyJkZXNjcmlwdGlvbiI6IkRvbWFpbnMgc3BlY2lmaWVzIHdoaWNoIGRvbWFpbnMgdGhhdCBFeHRlcm5hbEROUyBzaG91bGRcbmNyZWF0ZSBETlMgcmVjb3JkcyBmb3IuIE11bHRpcGxlIGRvbWFpbiB2YWx1ZXNcbmNhbiBiZSBzcGVjaWZpZWQgc3VjaCB0aGF0IHN1YmRvbWFpbnMgb2YgYW4gaW5jbHVkZWQgZG9tYWluXG5jYW4gZWZmZWN0aXZlbHkgYmUgaWdub3JlZCB1c2luZyB0aGUgXCJJbmNsdWRlXCIgYW5kIFwiRXhjbHVkZVwiXG5kb21haW4gZmlsdGVyIG9wdGlvbnMuXG5cbkFuIGVtcHR5IGxpc3Qgb2YgZG9tYWlucyBtZWFucyBFeHRlcm5hbEROUyB3aWxsIGNyZWF0ZVxuRE5TIHJlY29yZHMgZm9yIGFueSBpbmNsdWRlZCBzb3VyY2UgcmVzb3VyY2UgcmVnYXJkbGVzc1xub2YgdGhlIHJlc291cmNlJ3MgZGVzaXJlZCBob3N0bmFtZS5cblxuUG9wdWxhdGluZyBEb21haW5zIHdpdGggb25seSBleGNsdWRlZCBvcHRpb25zIG1lYW5zIEV4dGVybmFsRE5TXG53aWxsIGNyZWF0ZSBETlMgcmVjb3JkcyBmb3IgYW55IGluY2x1ZGVkIHNvdXJjZSByZXNvdXJjZSB0aGF0IGRvIG5vdFxubWF0Y2ggdGhlIHByb3ZpZGVkIGV4Y2x1ZGVkIGRvbWFpbiBvcHRpb25zLlxuXG5FeGNsdWRpbmcgRE5TIHJlY29yZHMgdGhhdCB3ZXJlIHByZXZpb3VzIGluY2x1ZGVkIHZpYSBhIHJlc291cmNlIHVwZGF0ZVxud2lsbCAqbm90KiByZXN1bHQgaW4gdGhlIG9yaWdpbmFsIEROUyByZWNvcmRzIGJlaW5nIGRlbGV0ZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJFeHRlcm5hbEROU0RvbWFpbiBkZXNjcmliZXMgaG93IHNldHMgb2YgaW5jbHVkZWRcbm9yIGV4Y2x1ZGVkIGRvbWFpbnMgYXJlIHRvIGJlIGNvbnN0cnVjdGVkLiIsInByb3BlcnRpZXMiOnsiZmlsdGVyVHlwZSI6eyJkZXNjcmlwdGlvbiI6IkZpbHRlclR5cGUgbWFya3MgdGhlIE5hbWUgb3IgUGF0dGVybiBmaWVsZFxuYXMgYW4gaW5jbHVkZWQgb3IgZXhjbHVkZWQgc2V0IG9mIGRvbWFpbnMuXG5cbkluIHRoZSBldmVudCBvZiBjb250cmFkaWN0aW5nIGRvbWFpbiBvcHRpb25zLFxucHJlZmVyZW5jZSBpcyBnaXZlbiB0byBleGNsdWRlZCBkb21haW5zLlxuXG5UaGlzIGZpZWxkIGFjY2VwdHMgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiBcIkluY2x1ZGVcIjogSW5jbHVkZSB0aGUgZG9tYWluIHNldCBzcGVjaWZpZWRcbiBieSBuYW1lIG9yIHBhdHRlcm4uXG5cbiBcIkV4Y2x1ZGVcIjogRXhjbHVkZSB0aGUgZG9tYWluIHNldCBzcGVjaWZpZWRcbiBieSBuYW1lIG9yIHBhdHRlcm4uIiwiZW51bSI6WyJJbmNsdWRlIiwiRXhjbHVkZSJdLCJ0eXBlIjoic3RyaW5nIn0sIm1hdGNoVHlwZSI6eyJkZXNjcmlwdGlvbiI6Ik1hdGNoVHlwZSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgbWF0Y2ggdG8gYmUgcGVyZm9ybWVkXG5ieSBFeHRlcm5hbEROUyB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvIHB1Ymxpc2ggRE5TXG5yZWNvcmRzIGZvciBhIGdpdmVuIHNvdXJjZSByZXNvdXJjZSBiYXNlZCBvbiB0aGUgcmVzb3VyY2Unc1xucmVxdWVzdGVkIGhvc3RuYW1lLlxuXG5UaGlzIGZpZWxkIGFjY2VwdHMgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiBcIkV4YWN0XCI6IEV4cGxpY2l0bHkgbWF0Y2ggdGhlIGZ1bGwgZG9tYWluIHN0cmluZ1xuICBzcGVjaWZpZWQgdmlhIHRoZSBOYW1lIGZpZWxkLCBpbmNsdWRpbmcgYW55IHN1YmRvbWFpbnNcbiAgb2YgTmFtZS5cblxuIFwiUGF0dGVyblwiOiBNYXRjaCBwb3RlbnRpYWwgZG9tYWlucyBhZ2FpbnN0XG4gdGhlIHByb3ZpZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHN0cmluZy4iLCJlbnVtIjpbIkV4YWN0IiwiUGF0dGVybiJdLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIHNpbmdsZSBkb21haW5cbnZhbHVlLiBTdWJkb21haW5zIGFyZSBpbmNsdWRlZC5cblxuZS5nLiBteS1hcHAubXktY2x1c3Rlci1kb21haW4uY29tXG53b3VsZCBhbHNvIGluY2x1ZGVcbmZvby5teS1hcHAubXktY2x1c3Rlci1kb21haW4uY29tIiwidHlwZSI6InN0cmluZyJ9LCJwYXR0ZXJuIjp7ImRlc2NyaXB0aW9uIjoiUGF0dGVybiBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvXG5tYXRjaCBhIHNldCBvZiBkb21haW5zLiBBbnkgcHJvdmlkZWRcbnJlZ3VsYXIgZXhwcmVzc2lvbnMgc2hvdWxkIGZvbGxvdyB0aGUgc3ludGF4XG51c2VkIGJ5IHRoZSBnbyByZWdleHAgcGFja2FnZSAoUkUyKS5cblNlZSBodHRwczovL2dvbGFuZy5vcmcvcGtnL3JlZ2V4cC8gZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiZmlsdGVyVHlwZSIsIm1hdGNoVHlwZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9LCJwcm92aWRlciI6eyJkZXNjcmlwdGlvbiI6IlByb3ZpZGVyIHJlZmVycyB0byB0aGUgRE5TIHByb3ZpZGVyIHRoYXQgRXh0ZXJuYWxETlNcbnNob3VsZCBwdWJsaXNoIHJlY29yZHMgdG8uIE5vdGUgdGhhdCBlYWNoIEV4dGVybmFsRE5TXG5pcyB0aWVkIHRvIGEgc2luZ2xlIHByb3ZpZGVyLiIsInByb3BlcnRpZXMiOnsiYXdzIjp7ImRlc2NyaXB0aW9uIjoiQVdTIGRlc2NyaWJlcyBwcm92aWRlciBjb25maWd1cmF0aW9uIG9wdGlvbnNcbnNwZWNpZmljIHRvIEFXUyAoUm91dGUgNTMpLiIsInByb3BlcnRpZXMiOnsiY3JlZGVudGlhbHMiOnsiZGVzY3JpcHRpb24iOiJDcmVkZW50aWFscyBpcyBhIHJlZmVyZW5jZSB0byBhIHNlY3JldCBjb250YWluaW5nXG50aGUgc2hhcmVkIGNyZWRlbnRpYWxzIGZpbGUgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jbGkvbGF0ZXN0L3VzZXJndWlkZS9jbGktY29uZmlndXJlLWZpbGVzLmh0bWwpXG51bmRlciBgY3JlZGVudGlhbHNgIGtleSBvciBmb2xsb3dpbmcga2V5cyAod2l0aCBjb3JyZXNwb25kaW5nIHZhbHVlcyk6XG5cbiogYXdzX2FjY2Vzc19rZXlfaWRcbiogYXdzX3NlY3JldF9hY2Nlc3Nfa2V5XG5cblNlZVxuaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMtc2lncy9leHRlcm5hbC1kbnMvYmxvYi9tYXN0ZXIvZG9jcy90dXRvcmlhbHMvYXdzLm1kXG5mb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJjcmVkZW50aWFscyJdLCJ0eXBlIjoib2JqZWN0In0sImF6dXJlIjp7ImRlc2NyaXB0aW9uIjoiQXp1cmUgZGVzY3JpYmVzIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuc3BlY2lmaWMgdG8gQXp1cmUgRE5TLiIsInByb3BlcnRpZXMiOnsiY29uZmlnRmlsZSI6eyJkZXNjcmlwdGlvbiI6IkNvbmZpZ0ZpbGUgaXMgYSByZWZlcmVuY2UgdG8gYSBzZWNyZXQgY29udGFpbmluZ1xudGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byB1c2UgdGhlIEF6dXJlIHByb3ZpZGVyLlxuVGhlIHNlY3JldCByZWZlcmVuY2VkIGJ5IENvbmZpZ0ZpbGUgc2hvdWxkIGNvbnRhaW5cbmEga2V5IG5hbWVkIGBhenVyZS5qc29uYCBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmc6XG5cbntcbiAgXCJ0ZW5hbnRJZFwiOiBcIjEyM1wiLFxuICBcInN1YnNjcmlwdGlvbklkXCI6IFwiNDU2XCIsXG4gIFwicmVzb3VyY2VHcm91cFwiOiBcIk15RG5zUmVzb3VyY2VHcm91cFwiLFxuICBcImFhZENsaWVudElkXCI6IFwiNzg5XCIsXG4gIFwiYWFkQ2xpZW50U2VjcmV0XCI6IFwiMTIzXCJcbn1cblxuU2VlXG5odHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1zaWdzL2V4dGVybmFsLWRucy9ibG9iL21hc3Rlci9kb2NzL3R1dG9yaWFscy9henVyZS5tZFxuZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGtleS92YWx1ZXMgYW5kIGhvdyB0byBvYnRhaW4gdGhlbS4iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJjb25maWdGaWxlIl0sInR5cGUiOiJvYmplY3QifSwiYmx1ZUNhdCI6eyJkZXNjcmlwdGlvbiI6IkJsdWVDYXQgZGVzY3JpYmVzIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuc3BlY2lmaWMgdG8gQmx1ZUNhdCBETlMuIiwicHJvcGVydGllcyI6eyJjb25maWdGaWxlIjp7ImRlc2NyaXB0aW9uIjoiQ29uZmlnRmlsZSBpcyBhIHJlZmVyZW5jZSB0byBhIHNlY3JldCBjb250YWluaW5nXG50aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIHVzZSB0aGUgQmx1ZUNhdCBwcm92aWRlci5cblRoZSBzZWNyZXQgcmVmZXJlbmNlZCBieSBDb25maWdGaWxlIHNob3VsZCBjb250YWluXG5hbiBvYmplY3QgbmFtZWQgYGJsdWVjYXQuanNvbmAgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nOlxuXG57XG4gIFwiZ2F0ZXdheUhvc3RcIjogXCJodHRwczovL2JsdWVjYXRndy5leGFtcGxlLmNvbVwiLFxuICBcImdhdGV3YXlVc2VybmFtZVwiOiBcInVzZXJcIixcbiAgXCJnYXRld2F5UGFzc3dvcmRcIjogXCJwYXNzXCIsXG4gIFwiZG5zQ29uZmlndXJhdGlvblwiOiBcIkV4YW1wbGVcIixcbiAgXCJkbnNWaWV3XCI6IFwiSW50ZXJuYWxcIixcbiAgXCJyb290Wm9uZVwiOiBcImV4YW1wbGUuY29tXCIsXG4gIFwic2tpcFRMU1ZlcmlmeVwiOiBmYWxzZVxufVxuXG5TZWVcbmh0dHBzOi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzLXNpZ3MvZXh0ZXJuYWwtZG5zL2Jsb2IvbWFzdGVyL2RvY3MvdHV0b3JpYWxzL2JsdWVjYXQubWRcbmZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiB2YWx1ZXMgYW5kIGhvdyB0byBvYnRhaW4gdGhlbS4iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJjb25maWdGaWxlIl0sInR5cGUiOiJvYmplY3QifSwiZ2NwIjp7ImRlc2NyaXB0aW9uIjoiR0NQIGRlc2NyaWJlcyBwcm92aWRlciBjb25maWd1cmF0aW9uIG9wdGlvbnNcbnNwZWNpZmljIHRvIEdDUCAoR29vZ2xlIEROUykuIiwicHJvcGVydGllcyI6eyJjcmVkZW50aWFscyI6eyJkZXNjcmlwdGlvbiI6IkNyZWRlbnRpYWxzIGlzIGEgcmVmZXJlbmNlIHRvIGEgc2VjcmV0IGNvbnRhaW5pbmdcbnRoZSBuZWNlc3NhcnkgR0NQIHNlcnZpY2UgYWNjb3VudCBrZXlzLlxuVGhlIHNlY3JldCByZWZlcmVuY2VkIGJ5IENyZWRlbnRpYWxzIHNob3VsZFxuY29udGFpbiBhIGtleSBuYW1lZCBgZ2NwLWNyZWRlbnRpYWxzLmpzb25gXG5wcmVzdW1hYmx5IGdlbmVyYXRlZCBieSB0aGUgZ2Nsb3VkIENMSS4iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sInByb2plY3QiOnsiZGVzY3JpcHRpb24iOiJQcm9qZWN0IGlzIHRoZSBHQ1AgcHJvamVjdCB0byB1c2UgZm9yXG5jcmVhdGluZyBETlMgcmVjb3Jkcy4gVGhpcyBmaWVsZCBpcyBub3QgbmVjZXNzYXJ5XG53aGVuIHJ1bm5pbmcgb24gR0NQIGFzIGV4dGVybmFsRE5TIGF1dG8tZGV0ZWN0c1xudGhlIEdDUCBwcm9qZWN0IHRvIHVzZSB3aGVuIHJ1bm5pbmcgb24gR0NQLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImNyZWRlbnRpYWxzIl0sInR5cGUiOiJvYmplY3QifSwiaW5mb2Jsb3giOnsiZGVzY3JpcHRpb24iOiJJbmZvYmxveCBkZXNjcmliZXMgcHJvdmlkZXIgY29uZmlndXJhdGlvbiBvcHRpb25zXG5zcGVjaWZpYyB0byBJbmZvYmxveCBETlMuIiwicHJvcGVydGllcyI6eyJjcmVkZW50aWFscyI6eyJkZXNjcmlwdGlvbiI6IkNyZWRlbnRpYWxzIGlzIGEgcmVmZXJlbmNlIHRvIGEgc2VjcmV0IGNvbnRhaW5pbmdcbnRoZSBmb2xsb3dpbmcga2V5cyAod2l0aCBwcm9wZXIgY29ycmVzcG9uZGluZyB2YWx1ZXMpOlxuXG4qIEVYVEVSTkFMX0ROU19JTkZPQkxPWF9XQVBJX1VTRVJOQU1FXG4qIEVYVEVSTkFMX0ROU19JTkZPQkxPWF9XQVBJX1BBU1NXT1JEXG5cblNlZVxuaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMtc2lncy9leHRlcm5hbC1kbnMvYmxvYi9tYXN0ZXIvZG9jcy90dXRvcmlhbHMvaW5mb2Jsb3gubWRcbmZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIiwicHJvcGVydGllcyI6eyJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbIm5hbWUiXSwidHlwZSI6Im9iamVjdCJ9LCJncmlkSG9zdCI6eyJkZXNjcmlwdGlvbiI6IkdyaWRIb3N0IGlzIHRoZSBJUCBvZiB0aGUgSW5mb2Jsb3ggR3JpZCBob3N0LiIsInR5cGUiOiJzdHJpbmcifSwid2FwaVBvcnQiOnsiZGVzY3JpcHRpb24iOiJXQVBJUG9ydCBpcyB0aGUgcG9ydCBmb3IgdGhlIEluZm9ibG94IFdBUEkuIiwidHlwZSI6ImludGVnZXIifSwid2FwaVZlcnNpb24iOnsiZGVzY3JpcHRpb24iOiJXQVBJVmVyc2lvbiBpcyB0aGUgdmVyc2lvbiBvZiB0aGUgSW5mb2Jsb3ggV0FQSS4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJjcmVkZW50aWFscyIsImdyaWRIb3N0Iiwid2FwaVBvcnQiLCJ3YXBpVmVyc2lvbiJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJUeXBlIGRlc2NyaWJlcyB3aGljaCBETlMgcHJvdmlkZXJcbkV4dGVybmFsRE5TIHNob3VsZCBwdWJsaXNoIHJlY29yZHMgdG8uXG5UaGUgZm9sbG93aW5nIEROUyBwcm92aWRlcnMgYXJlIHN1cHBvcnRlZDpcblxuICogQVdTIChSb3V0ZSA1MylcbiAqIEdDUCAoR29vZ2xlIEROUylcbiAqIEF6dXJlXG4gKiBCbHVlQ2F0XG4gKiBJbmZvYmxveCIsImVudW0iOlsiQVdTIiwiR0NQIiwiQXp1cmUiLCJCbHVlQ2F0IiwiSW5mb2Jsb3giXSwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidHlwZSJdLCJ0eXBlIjoib2JqZWN0In0sInNvdXJjZSI6eyJkZXNjcmlwdGlvbiI6IlNvdXJjZSBkZXNjcmliZXMgd2hpY2ggc291cmNlIHJlc291cmNlXG5FeHRlcm5hbEROUyB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gY3JlYXRlXG5ETlMgcmVjb3JkcyBmb3IuXG5cbk11bHRpcGxlIEV4dGVybmFsRE5TIENScyBtdXN0IGJlXG5jcmVhdGVkIGlmIG11bHRpcGxlIEV4dGVybmFsRE5TIHNvdXJjZSByZXNvdXJjZXNcbmFyZSBkZXNpcmVkLiIsInByb3BlcnRpZXMiOnsiZnFkblRlbXBsYXRlIjp7ImRlc2NyaXB0aW9uIjoiRlFETlRlbXBsYXRlIHNldHMgYSB0ZW1wbGF0ZWQgc3RyaW5nIHRoYXQncyB1c2VkIHRvIGdlbmVyYXRlIEROUyBuYW1lc1xuZnJvbSBzb3VyY2VzIHRoYXQgZG9uJ3QgZGVmaW5lIGEgaG9zdG5hbWUgdGhlbXNlbHZlcy5cbk11bHRpcGxlIGdsb2JhbCBGUUROIHRlbXBsYXRlcyBhcmUgcG9zc2libGUuXG5cblRoaXMgZmllbGQgbXVzdCBiZSBzcGVjaWZpZWQgd2l0aCBhIG5vbmVtcHR5IHZhbHVlIGlmIHRoZSBzb3VyY2UgdHlwZVxuaXMgU2VydmljZSBvciBDUkQgYW5kIEhvc3RuYW1lQW5ub3RhdGlvblBvbGljeSBpcyBzZXQgdG8gSWdub3JlLiAgVGhlXG5maWVsZCB2YWx1ZSBtYXkgYmUgb21pdHRlZCBvciBlbXB0eSBpZiBIb3N0bmFtZUFubm90YXRpb25Qb2xpY3kgaXNcbnNldCB0byBBbGxvdyBvciBpZiB0aGUgc291cmNlIHR5cGUgaXMgT3BlblNoaWZ0Um91dGUuXG5cblByb3ZpZGVkIHRlbXBsYXRlcyBzaG91bGQgZm9sbG93IHRoZSBzeW50YXggZGVmaW5lZCBmb3IgdGV4dC90ZW1wbGF0ZSBHbyBwYWNrYWdlLFxuc2VlIGh0dHBzOi8vcGtnLmdvLmRldi90ZXh0L3RlbXBsYXRlLlxuQW5ub3RhdGlvbnMgaW5zaWRlIHRoZSB0ZW1wbGF0ZSBjb3JyZXNwb25kIHRvIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBzb3VyY2UgcmVzb3VyY2Ugb2JqZWN0IChlLmcuIEt1YmVybmV0ZXMgc2VydmljZSwgT3BlblNoaWZ0IHJvdXRlKS5cbkV4YW1wbGU6IFwie3suTmFtZX19LmV4YW1wbGUuY29tXCIgd291bGQgYmUgZXhwYW5kZWQgdG8gXCJteXNlcnZpY2UuZXhhbXBsZS5jb21cIiBmb3Igc2VydmljZSBzb3VyY2UiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSJ9LCJob3N0bmFtZUFubm90YXRpb24iOnsiZGVmYXVsdCI6Iklnbm9yZSIsImRlc2NyaXB0aW9uIjoiSG9zdG5hbWVBbm5vdGF0aW9uUG9saWN5IHNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCBFeHRlcm5hbEROU1xuc2hvdWxkIGlnbm9yZSB0aGUgXCJleHRlcm5hbC1kbnMuYWxwaGEua3ViZXJuZXRlcy5pby9ob3N0bmFtZVwiXG5hbm5vdGF0aW9uLCB3aGljaCBvdmVycmlkZXMgRE5TIGhvc3RuYW1lcyBvbiBhIGdpdmVuIHNvdXJjZSByZXNvdXJjZS5cblxuVGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIGFjY2VwdGVkOlxuXG4gXCJJZ25vcmVcIjogSWdub3JlIGFueSBob3N0bmFtZSBhbm5vdGF0aW9uIG92ZXJyaWRlcy5cbiBcIkFsbG93XCI6IEFsbG93IGFsbCBob3N0bmFtZSBhbm5vdGF0aW9uIG92ZXJyaWRlcy5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIEV4dGVybmFsRE5TIGlzIFwiSWdub3JlXCIuXG5cbk5vdGUgdGhhdCBieSBzZXR0aW5nIGEgSG9zdG5hbWVBbm5vdGF0aW9uUG9saWN5IG9mIFwiQWxsb3dcIixcbm1heSBncmFudCBwcml2aWxlZ2VkIEROUyBwZXJtaXNzaW9ucyB0byB1bmRlci1wcml2aWxlZ2VkIGNsdXN0ZXJcbnVzZXJzLiIsImVudW0iOlsiSWdub3JlIiwiQWxsb3ciXSwidHlwZSI6InN0cmluZyJ9LCJsYWJlbEZpbHRlciI6eyJkZXNjcmlwdGlvbiI6IkxhYmVsRmlsdGVyIHNwZWNpZmllcyBhIGxhYmVsIHNlbGVjdG9yIGZvciBmaWx0ZXJpbmcgdGhlIG9iamVjdHMgZm9yXG53aGljaCBFeHRlcm5hbEROUyBwdWJsaXNoZXMgcmVjb3Jkcy4gVGhlIGZpbHRlciB1c2VzIGxhYmVsIHNlbGVjdG9yXG5zZW1hbnRpY3MgYWdhaW5zdCBvYmplY3QgbGFiZWxzLiAgU3BlY2lmeWluZyBhIG51bGwgb3IgZW1wdHkgbGFiZWxcbnNlbGVjdG9yIGNhdXNlcyBFeHRlcm5hbEROUyB0byBwdWJsaXNoIHJlY29yZHMgZm9yIGFsbCBvYmplY3RzIG9mIHRoZVxuc291cmNlIHR5cGUgcmVzb3VyY2UuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJvcGVuc2hpZnRSb3V0ZU9wdGlvbnMiOnsiZGVzY3JpcHRpb24iOiJPcGVuU2hpZnRSb3V0ZSBkZXNjcmliZXMgc291cmNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzcGVjaWZpYyB0byB0aGVcbnJvdXRlcy5yb3V0ZS5vcGVuc2hpZnQuaW8gcmVzb3VyY2UuIiwicHJvcGVydGllcyI6eyJyb3V0ZXJOYW1lIjp7ImRlc2NyaXB0aW9uIjoiUm91dGVyTmFtZSBpcyB0aGUgbmFtZSBvZiBhIHJvdXRlciAoQUtBIGluZ3Jlc3MgY29udHJvbGxlcikgYXNcbnJlcG9ydGVkIGluIFJvdXRlLnN0YXR1cy5pbmdyZXNzW10ucm91dGVyTmFtZS4gIEV4dGVybmFsLWRucyB3aWxsIHVzZVxudGhlIGNhbm9uaWNhbCBob3N0bmFtZSBvZiB0aGUgcm91dGVyIGlkZW50aWZpZWQgYnkgdGhpcyBuYW1lIHdoZW5cbnB1Ymxpc2hpbmcgcmVjb3JkcyBmb3IgYSBnaXZlbiByb3V0ZS4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJyb3V0ZXJOYW1lIl0sInR5cGUiOiJvYmplY3QifSwic2VydmljZSI6eyJkZXNjcmlwdGlvbiI6IlNlcnZpY2UgZGVzY3JpYmVzIHNvdXJjZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgc3BlY2lmaWNcbnRvIHRoZSBzZXJ2aWNlIHNvdXJjZSByZXNvdXJjZS4iLCJwcm9wZXJ0aWVzIjp7InNlcnZpY2VUeXBlIjp7ImRlZmF1bHQiOlsiTG9hZEJhbGFuY2VyIl0sImRlc2NyaXB0aW9uIjoiU2VydmljZVR5cGUgZGV0ZXJtaW5lcyB3aGF0IHR5cGVzIG9mIFNlcnZpY2UgcmVzb3VyY2VzXG5hcmUgd2F0Y2hlZCBieSBFeHRlcm5hbEROUy4gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmVcbmF2YWlsYWJsZSBvcHRpb25zOlxuXG4gXCJOb2RlUG9ydFwiXG4gXCJFeHRlcm5hbE5hbWVcIlxuIFwiTG9hZEJhbGFuY2VyXCJcbiBcIkNsdXN0ZXJJUFwiXG5cbk9uZSBvciBtb3JlIFNlcnZpY2UgdHlwZXMgY2FuIGJlIHNwZWNpZmllZCwgaWYgZGVzaXJlZC5cblxuTm90ZSB0aGF0IHVzaW5nIHRoZSBcIkNsdXN0ZXJJUFwiIHNlcnZpY2UgdHlwZSB3aWxsIGVuYWJsZVxudGhlIEV4dGVybmFsRE5TIFwiLS1wdWJsaXNoLWludGVybmFsLXNlcnZpY2VzXCIgZmxhZyxcbndoaWNoIGFsbG93cyBFeHRlcm5hbEROUyB0byBwdWJsaXNoIEROUyByZWNvcmRzXG5mb3IgQ2x1c3RlcklQIHNlcnZpY2VzLlxuXG5JZiBubyBzZXJ2aWNlIHR5cGVzIGFyZSBwcm92aWRlZCwgRXh0ZXJuYWxETlMgd2lsbCBiZVxuY29uZmlndXJlZCB0byBjcmVhdGUgRE5TIHJlY29yZHMgZm9yIExvYWRCYWxhbmNlciBzZXJ2aWNlc1xub25seSBieSBkZWZhdWx0LiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiU2VydmljZSBUeXBlIHN0cmluZyBkZXNjcmliZXMgaW5ncmVzcyBtZXRob2RzIGZvciBhIHNlcnZpY2UiLCJ0eXBlIjoic3RyaW5nIn0sIm1pbkl0ZW1zIjoxLCJ0eXBlIjoiYXJyYXkifX0sInJlcXVpcmVkIjpbInNlcnZpY2VUeXBlIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgc3BlY2lmaWVzIGFuIEV4dGVybmFsRE5TIHNvdXJjZSByZXNvdXJjZVxudG8gY3JlYXRlIEROUyByZWNvcmRzIGZvci4iLCJlbnVtIjpbIk9wZW5TaGlmdFJvdXRlIiwiU2VydmljZSIsIkNSRCJdLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0eXBlIl0sInR5cGUiOiJvYmplY3QifSwiem9uZXMiOnsiZGVzY3JpcHRpb24iOiJab25lcyBkZXNjcmliZXMgd2hpY2ggRE5TIFpvbmUgSURzXG5FeHRlcm5hbEROUyBzaG91bGQgcHVibGlzaCByZWNvcmRzIHRvLlxuXG5VcGRhdGluZyB0aGlzIGZpZWxkIGFmdGVyIGNyZWF0aW9uXG53aWxsIGNhdXNlIGFsbCBETlMgcmVjb3JkcyBpbiB0aGUgcHJldmlvdXNcbnpvbmUocykgdG8gYmUgbGVmdCBiZWhpbmQuXG5cbkFuIGVtcHR5IGxpc3Qgb2Ygem9uZXMgbWVhbnMgdGhhdCB0aGUgRXh0ZXJuYWxETlMgd2lsbFxucHVibGlzaCB0byBhbGwgem9uZXMgKGkuZSBwdWJsaWMgYW5kIHByaXZhdGUpLCB1bmxlc3MgdGhlXG5vcGVyYXRvciBydW5zIG9uIGEgcGxhdGZvcm0gb24gd2hpY2ggdGhlIG9wZXJhdG9yIGNhblxubG9va3VwIGEgZGVmYXVsdCBzZXQgb2Ygem9uZXMgZS5nIG9uIE9wZW5TaGlmdCB3aXRoIGl0cyBjbHVzdGVyXG5ETlMgY29uZmlnIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJtYXhJdGVtcyI6MTAsInR5cGUiOiJhcnJheSJ9fSwicmVxdWlyZWQiOlsicHJvdmlkZXIiLCJzb3VyY2UiXSwidHlwZSI6Im9iamVjdCJ9LCJzdGF0dXMiOnsiZGVzY3JpcHRpb24iOiJzdGF0dXMgaXMgdGhlIG1vc3QgcmVjZW50bHkgb2JzZXJ2ZWQgc3RhdHVzIG9mIHRoZSBFeHRlcm5hbEROUy4iLCJwcm9wZXJ0aWVzIjp7ImNvbmRpdGlvbnMiOnsiZGVzY3JpcHRpb24iOiJDb25kaXRpb25zIGlzIGEgbGlzdCBvZiBvcGVyYXRvci1zcGVjaWZpYyBjb25kaXRpb25zXG5hbmQgdGhlaXIgc3RhdHVzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQ29uZGl0aW9uIGNvbnRhaW5zIGRldGFpbHMgZm9yIG9uZSBhc3BlY3Qgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpcyBBUEkgUmVzb3VyY2UuIiwicHJvcGVydGllcyI6eyJsYXN0VHJhbnNpdGlvblRpbWUiOnsiZGVzY3JpcHRpb24iOiJsYXN0VHJhbnNpdGlvblRpbWUgaXMgdGhlIGxhc3QgdGltZSB0aGUgY29uZGl0aW9uIHRyYW5zaXRpb25lZCBmcm9tIG9uZSBzdGF0dXMgdG8gYW5vdGhlci5cblRoaXMgc2hvdWxkIGJlIHdoZW4gdGhlIHVuZGVybHlpbmcgY29uZGl0aW9uIGNoYW5nZWQuICBJZiB0aGF0IGlzIG5vdCBrbm93biwgdGhlbiB1c2luZyB0aGUgdGltZSB3aGVuIHRoZSBBUEkgZmllbGQgY2hhbmdlZCBpcyBhY2NlcHRhYmxlLiIsImZvcm1hdCI6ImRhdGUtdGltZSIsInR5cGUiOiJzdHJpbmcifSwibWVzc2FnZSI6eyJkZXNjcmlwdGlvbiI6Im1lc3NhZ2UgaXMgYSBodW1hbiByZWFkYWJsZSBtZXNzYWdlIGluZGljYXRpbmcgZGV0YWlscyBhYm91dCB0aGUgdHJhbnNpdGlvbi5cblRoaXMgbWF5IGJlIGFuIGVtcHR5IHN0cmluZy4iLCJtYXhMZW5ndGgiOjMyNzY4LCJ0eXBlIjoic3RyaW5nIn0sIm9ic2VydmVkR2VuZXJhdGlvbiI6eyJkZXNjcmlwdGlvbiI6Im9ic2VydmVkR2VuZXJhdGlvbiByZXByZXNlbnRzIHRoZSAubWV0YWRhdGEuZ2VuZXJhdGlvbiB0aGF0IHRoZSBjb25kaXRpb24gd2FzIHNldCBiYXNlZCB1cG9uLlxuRm9yIGluc3RhbmNlLCBpZiAubWV0YWRhdGEuZ2VuZXJhdGlvbiBpcyBjdXJyZW50bHkgMTIsIGJ1dCB0aGUgLnN0YXR1cy5jb25kaXRpb25zW3hdLm9ic2VydmVkR2VuZXJhdGlvbiBpcyA5LCB0aGUgY29uZGl0aW9uIGlzIG91dCBvZiBkYXRlXG53aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGluc3RhbmNlLiIsImZvcm1hdCI6ImludDY0IiwibWluaW11bSI6MCwidHlwZSI6ImludGVnZXIifSwicmVhc29uIjp7ImRlc2NyaXB0aW9uIjoicmVhc29uIGNvbnRhaW5zIGEgcHJvZ3JhbW1hdGljIGlkZW50aWZpZXIgaW5kaWNhdGluZyB0aGUgcmVhc29uIGZvciB0aGUgY29uZGl0aW9uJ3MgbGFzdCB0cmFuc2l0aW9uLlxuUHJvZHVjZXJzIG9mIHNwZWNpZmljIGNvbmRpdGlvbiB0eXBlcyBtYXkgZGVmaW5lIGV4cGVjdGVkIHZhbHVlcyBhbmQgbWVhbmluZ3MgZm9yIHRoaXMgZmllbGQsXG5hbmQgd2hldGhlciB0aGUgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGEgZ3VhcmFudGVlZCBBUEkuXG5UaGUgdmFsdWUgc2hvdWxkIGJlIGEgQ2FtZWxDYXNlIHN0cmluZy5cblRoaXMgZmllbGQgbWF5IG5vdCBiZSBlbXB0eS4iLCJtYXhMZW5ndGgiOjEwMjQsIm1pbkxlbmd0aCI6MSwicGF0dGVybiI6Il5bQS1aYS16XShbQS1aYS16MC05Xyw6XSpbQS1aYS16MC05X10pPyQiLCJ0eXBlIjoic3RyaW5nIn0sInN0YXR1cyI6eyJkZXNjcmlwdGlvbiI6InN0YXR1cyBvZiB0aGUgY29uZGl0aW9uLCBvbmUgb2YgVHJ1ZSwgRmFsc2UsIFVua25vd24uIiwiZW51bSI6WyJUcnVlIiwiRmFsc2UiLCJVbmtub3duIl0sInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6InR5cGUgb2YgY29uZGl0aW9uIGluIENhbWVsQ2FzZSBvciBpbiBmb28uZXhhbXBsZS5jb20vQ2FtZWxDYXNlLiIsIm1heExlbmd0aCI6MzE2LCJwYXR0ZXJuIjoiXihbYS16MC05XShbLWEtejAtOV0qW2EtejAtOV0pPyhcXC5bYS16MC05XShbLWEtejAtOV0qW2EtejAtOV0pPykqLyk/KChbQS1aYS16MC05XVstQS1aYS16MC05Xy5dKik/W0EtWmEtejAtOV0pJCIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImxhc3RUcmFuc2l0aW9uVGltZSIsIm1lc3NhZ2UiLCJyZWFzb24iLCJzdGF0dXMiLCJ0eXBlIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In0sIm9ic2VydmVkR2VuZXJhdGlvbiI6eyJkZXNjcmlwdGlvbiI6Ik9ic2VydmVkR2VuZXJhdGlvbiBpcyB0aGUgbW9zdCByZWNlbnQgZ2VuZXJhdGlvbiBvYnNlcnZlZC4iLCJmb3JtYXQiOiJpbnQ2NCIsInR5cGUiOiJpbnRlZ2VyIn0sInpvbmVzIjp7ImRlc2NyaXB0aW9uIjoiWm9uZXMgaXMgdGhlIGNvbmZpZ3VyZWQgem9uZXMgaW4gdXNlIGJ5IEV4dGVybmFsRE5TLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5In19LCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJzcGVjIl0sInR5cGUiOiJvYmplY3QifX0sInNlcnZlZCI6dHJ1ZSwic3RvcmFnZSI6ZmFsc2UsInN1YnJlc291cmNlcyI6eyJzdGF0dXMiOnt9fX0seyJuYW1lIjoidjFiZXRhMSIsInNjaGVtYSI6eyJvcGVuQVBJVjNTY2hlbWEiOnsiZGVzY3JpcHRpb24iOiJFeHRlcm5hbEROUyBkZXNjcmliZXMgYSBtYW5hZ2VkIEV4dGVybmFsRE5TIGNvbnRyb2xsZXIgaW5zdGFuY2UgZm9yIGEgY2x1c3Rlci5cblRoZSBjb250cm9sbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBleHRlcm5hbCBETlMgcmVjb3JkcyBpbiBzdXBwb3J0ZWRcbkROUyBwcm92aWRlcnMgYmFzZWQgb2ZmIG9mIGluc3RhbmNlcyBvZiBzZWxlY3QgS3ViZXJuZXRlcyByZXNvdXJjZXMuIiwicHJvcGVydGllcyI6eyJhcGlWZXJzaW9uIjp7ImRlc2NyaXB0aW9uIjoiQVBJVmVyc2lvbiBkZWZpbmVzIHRoZSB2ZXJzaW9uZWQgc2NoZW1hIG9mIHRoaXMgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LlxuU2VydmVycyBzaG91bGQgY29udmVydCByZWNvZ25pemVkIHNjaGVtYXMgdG8gdGhlIGxhdGVzdCBpbnRlcm5hbCB2YWx1ZSwgYW5kXG5tYXkgcmVqZWN0IHVucmVjb2duaXplZCB2YWx1ZXMuXG5Nb3JlIGluZm86IGh0dHBzOi8vZ2l0Lms4cy5pby9jb21tdW5pdHkvY29udHJpYnV0b3JzL2RldmVsL3NpZy1hcmNoaXRlY3R1cmUvYXBpLWNvbnZlbnRpb25zLm1kI3Jlc291cmNlcyIsInR5cGUiOiJzdHJpbmcifSwia2luZCI6eyJkZXNjcmlwdGlvbiI6IktpbmQgaXMgYSBzdHJpbmcgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBSRVNUIHJlc291cmNlIHRoaXMgb2JqZWN0IHJlcHJlc2VudHMuXG5TZXJ2ZXJzIG1heSBpbmZlciB0aGlzIGZyb20gdGhlIGVuZHBvaW50IHRoZSBjbGllbnQgc3VibWl0cyByZXF1ZXN0cyB0by5cbkNhbm5vdCBiZSB1cGRhdGVkLlxuSW4gQ2FtZWxDYXNlLlxuTW9yZSBpbmZvOiBodHRwczovL2dpdC5rOHMuaW8vY29tbXVuaXR5L2NvbnRyaWJ1dG9ycy9kZXZlbC9zaWctYXJjaGl0ZWN0dXJlL2FwaS1jb252ZW50aW9ucy5tZCN0eXBlcy1raW5kcyIsInR5cGUiOiJzdHJpbmcifSwibWV0YWRhdGEiOnsidHlwZSI6Im9iamVjdCJ9LCJzcGVjIjp7ImRlc2NyaXB0aW9uIjoic3BlYyBpcyB0aGUgc3BlY2lmaWNhdGlvbiBvZiB0aGUgZGVzaXJlZCBiZWhhdmlvciBvZiB0aGUgRXh0ZXJuYWxETlMuIiwicHJvcGVydGllcyI6eyJkb21haW5zIjp7ImRlc2NyaXB0aW9uIjoiRG9tYWlucyBzcGVjaWZpZXMgd2hpY2ggZG9tYWlucyB0aGF0IEV4dGVybmFsRE5TIHNob3VsZFxuY3JlYXRlIEROUyByZWNvcmRzIGZvci4gTXVsdGlwbGUgZG9tYWluIHZhbHVlc1xuY2FuIGJlIHNwZWNpZmllZCBzdWNoIHRoYXQgc3ViZG9tYWlucyBvZiBhbiBpbmNsdWRlZCBkb21haW5cbmNhbiBlZmZlY3RpdmVseSBiZSBpZ25vcmVkIHVzaW5nIHRoZSBcIkluY2x1ZGVcIiBhbmQgXCJFeGNsdWRlXCJcbmRvbWFpbiBmaWx0ZXIgb3B0aW9ucy5cblxuQW4gZW1wdHkgbGlzdCBvZiBkb21haW5zIG1lYW5zIEV4dGVybmFsRE5TIHdpbGwgY3JlYXRlXG5ETlMgcmVjb3JkcyBmb3IgYW55IGluY2x1ZGVkIHNvdXJjZSByZXNvdXJjZSByZWdhcmRsZXNzXG5vZiB0aGUgcmVzb3VyY2UncyBkZXNpcmVkIGhvc3RuYW1lLlxuXG5Qb3B1bGF0aW5nIERvbWFpbnMgd2l0aCBvbmx5IGV4Y2x1ZGVkIG9wdGlvbnMgbWVhbnMgRXh0ZXJuYWxETlNcbndpbGwgY3JlYXRlIEROUyByZWNvcmRzIGZvciBhbnkgaW5jbHVkZWQgc291cmNlIHJlc291cmNlIHRoYXQgZG8gbm90XG5tYXRjaCB0aGUgcHJvdmlkZWQgZXhjbHVkZWQgZG9tYWluIG9wdGlvbnMuXG5cbkV4Y2x1ZGluZyBETlMgcmVjb3JkcyB0aGF0IHdlcmUgcHJldmlvdXMgaW5jbHVkZWQgdmlhIGEgcmVzb3VyY2UgdXBkYXRlXG53aWxsICpub3QqIHJlc3VsdCBpbiB0aGUgb3JpZ2luYWwgRE5TIHJlY29yZHMgYmVpbmcgZGVsZXRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkV4dGVybmFsRE5TRG9tYWluIGRlc2NyaWJlcyBob3cgc2V0cyBvZiBpbmNsdWRlZFxub3IgZXhjbHVkZWQgZG9tYWlucyBhcmUgdG8gYmUgY29uc3RydWN0ZWQuIiwicHJvcGVydGllcyI6eyJmaWx0ZXJUeXBlIjp7ImRlc2NyaXB0aW9uIjoiRmlsdGVyVHlwZSBtYXJrcyB0aGUgTmFtZSBvciBQYXR0ZXJuIGZpZWxkXG5hcyBhbiBpbmNsdWRlZCBvciBleGNsdWRlZCBzZXQgb2YgZG9tYWlucy5cblxuSW4gdGhlIGV2ZW50IG9mIGNvbnRyYWRpY3RpbmcgZG9tYWluIG9wdGlvbnMsXG5wcmVmZXJlbmNlIGlzIGdpdmVuIHRvIGV4Y2x1ZGVkIGRvbWFpbnMuXG5cblRoaXMgZmllbGQgYWNjZXB0cyB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuIFwiSW5jbHVkZVwiOiBJbmNsdWRlIHRoZSBkb21haW4gc2V0IHNwZWNpZmllZFxuIGJ5IG5hbWUgb3IgcGF0dGVybi5cblxuIFwiRXhjbHVkZVwiOiBFeGNsdWRlIHRoZSBkb21haW4gc2V0IHNwZWNpZmllZFxuIGJ5IG5hbWUgb3IgcGF0dGVybi4iLCJlbnVtIjpbIkluY2x1ZGUiLCJFeGNsdWRlIl0sInR5cGUiOiJzdHJpbmcifSwibWF0Y2hUeXBlIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hUeXBlIHNwZWNpZmllcyB0aGUgdHlwZSBvZiBtYXRjaCB0byBiZSBwZXJmb3JtZWRcbmJ5IEV4dGVybmFsRE5TIHdoZW4gZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3QgdG8gcHVibGlzaCBETlNcbnJlY29yZHMgZm9yIGEgZ2l2ZW4gc291cmNlIHJlc291cmNlIGJhc2VkIG9uIHRoZSByZXNvdXJjZSdzXG5yZXF1ZXN0ZWQgaG9zdG5hbWUuXG5cblRoaXMgZmllbGQgYWNjZXB0cyB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuIFwiRXhhY3RcIjogRXhwbGljaXRseSBtYXRjaCB0aGUgZnVsbCBkb21haW4gc3RyaW5nXG4gIHNwZWNpZmllZCB2aWEgdGhlIE5hbWUgZmllbGQsIGluY2x1ZGluZyBhbnkgc3ViZG9tYWluc1xuICBvZiBOYW1lLlxuXG4gXCJQYXR0ZXJuXCI6IE1hdGNoIHBvdGVudGlhbCBkb21haW5zIGFnYWluc3RcbiB0aGUgcHJvdmlkZWQgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gc3RyaW5nLiIsImVudW0iOlsiRXhhY3QiLCJQYXR0ZXJuIl0sInR5cGUiOiJzdHJpbmcifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgc2luZ2xlIGRvbWFpblxudmFsdWUuIFN1YmRvbWFpbnMgYXJlIGluY2x1ZGVkLlxuXG5lLmcuIG15LWFwcC5teS1jbHVzdGVyLWRvbWFpbi5jb21cbndvdWxkIGFsc28gaW5jbHVkZVxuZm9vLm15LWFwcC5teS1jbHVzdGVyLWRvbWFpbi5jb20iLCJ0eXBlIjoic3RyaW5nIn0sInBhdHRlcm4iOnsiZGVzY3JpcHRpb24iOiJQYXR0ZXJuIGlzIGEgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG9cbm1hdGNoIGEgc2V0IG9mIGRvbWFpbnMuIEFueSBwcm92aWRlZFxucmVndWxhciBleHByZXNzaW9ucyBzaG91bGQgZm9sbG93IHRoZSBzeW50YXhcbnVzZWQgYnkgdGhlIGdvIHJlZ2V4cCBwYWNrYWdlIChSRTIpLlxuU2VlIGh0dHBzOi8vZ29sYW5nLm9yZy9wa2cvcmVnZXhwLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJmaWx0ZXJUeXBlIiwibWF0Y2hUeXBlIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In0sInByb3ZpZGVyIjp7ImRlc2NyaXB0aW9uIjoiUHJvdmlkZXIgcmVmZXJzIHRvIHRoZSBETlMgcHJvdmlkZXIgdGhhdCBFeHRlcm5hbEROU1xuc2hvdWxkIHB1Ymxpc2ggcmVjb3JkcyB0by4gTm90ZSB0aGF0IGVhY2ggRXh0ZXJuYWxETlNcbmlzIHRpZWQgdG8gYSBzaW5nbGUgcHJvdmlkZXIuIiwicHJvcGVydGllcyI6eyJhd3MiOnsiZGVzY3JpcHRpb24iOiJBV1MgZGVzY3JpYmVzIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuc3BlY2lmaWMgdG8gQVdTIChSb3V0ZSA1MykuIiwicHJvcGVydGllcyI6eyJhc3N1bWVSb2xlIjp7ImRlc2NyaXB0aW9uIjoiYXNzdW1lUm9sZSBpcyBhIHJlZmVyZW5jZSB0byB0aGUgSUFNIHJvbGUgdGhhdFxuRXh0ZXJuYWxETlMgd2lsbCBiZSBhc3N1bWluZyBpbiBvcmRlciB0byBwZXJmb3JtXG5hbnkgRE5TIHVwZGF0ZXMuIiwicHJvcGVydGllcyI6eyJhcm4iOnsiZGVzY3JpcHRpb24iOiJhcm4gaXMgYW4gSUFNIHJvbGUgQVJOIHRoYXQgdGhlIEV4dGVybmFsRE5TXG5vcGVyYXRvciB3aWxsIGFzc3VtZSB3aGVuIG1ha2luZyBETlMgdXBkYXRlcy4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJhcm4iXSwidHlwZSI6Im9iamVjdCJ9LCJjcmVkZW50aWFscyI6eyJkZWZhdWx0Ijp7Im5hbWUiOiIifSwiZGVzY3JpcHRpb24iOiJDcmVkZW50aWFscyBpcyBhIHJlZmVyZW5jZSB0byBhIHNlY3JldCBjb250YWluaW5nXG50aGUgZm9sbG93aW5nIGtleXMgKHdpdGggY29ycmVzcG9uZGluZyB2YWx1ZXMpOlxuXG4qIGF3c19hY2Nlc3Nfa2V5X2lkXG4qIGF3c19zZWNyZXRfYWNjZXNzX2tleSIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJuYW1lIl0sInR5cGUiOiJvYmplY3QifX0sInJlcXVpcmVkIjpbImNyZWRlbnRpYWxzIl0sInR5cGUiOiJvYmplY3QifSwiYXp1cmUiOnsiZGVzY3JpcHRpb24iOiJBenVyZSBkZXNjcmliZXMgcHJvdmlkZXIgY29uZmlndXJhdGlvbiBvcHRpb25zXG5zcGVjaWZpYyB0byBBenVyZSBETlMuIiwicHJvcGVydGllcyI6eyJjb25maWdGaWxlIjp7ImRlc2NyaXB0aW9uIjoiQ29uZmlnRmlsZSBpcyBhIHJlZmVyZW5jZSB0byBhIHNlY3JldCBjb250YWluaW5nXG50aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIHVzZSB0aGUgQXp1cmUgcHJvdmlkZXIuXG5UaGUgc2VjcmV0IHJlZmVyZW5jZWQgYnkgQ29uZmlnRmlsZSBzaG91bGQgY29udGFpblxuYSBrZXkgbmFtZWQgYGF6dXJlLmpzb25gIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZzpcblxue1xuICBcInRlbmFudElkXCI6IFwiMTIzXCIsXG4gIFwic3Vic2NyaXB0aW9uSWRcIjogXCI0NTZcIixcbiAgXCJyZXNvdXJjZUdyb3VwXCI6IFwiTXlEbnNSZXNvdXJjZUdyb3VwXCIsXG4gIFwiYWFkQ2xpZW50SWRcIjogXCI3ODlcIixcbiAgXCJhYWRDbGllbnRTZWNyZXRcIjogXCIxMjNcIlxufVxuXG5TZWVcbmh0dHBzOi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzLXNpZ3MvZXh0ZXJuYWwtZG5zL2Jsb2IvMjI2ZGJiOTMxZjdhMjAxOTgxMGIzNzAzYWVjMDk2YzRlYTRmNDBlYS9kb2NzL3R1dG9yaWFscy9henVyZS5tZCNjb25maWd1cmF0aW9uLWZpbGVcbmZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBrZXkvdmFsdWVzIGFuZCBob3cgdG8gb2J0YWluIHRoZW0uIiwicHJvcGVydGllcyI6eyJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbIm5hbWUiXSwidHlwZSI6Im9iamVjdCJ9fSwicmVxdWlyZWQiOlsiY29uZmlnRmlsZSJdLCJ0eXBlIjoib2JqZWN0In0sImJsdWVDYXQiOnsiZGVzY3JpcHRpb24iOiJCbHVlQ2F0IGRlc2NyaWJlcyBwcm92aWRlciBjb25maWd1cmF0aW9uIG9wdGlvbnNcbnNwZWNpZmljIHRvIEJsdWVDYXQgRE5TLiIsInByb3BlcnRpZXMiOnsiY29uZmlnRmlsZSI6eyJkZXNjcmlwdGlvbiI6IkNvbmZpZ0ZpbGUgaXMgYSByZWZlcmVuY2UgdG8gYSBzZWNyZXQgY29udGFpbmluZ1xudGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byB1c2UgdGhlIEJsdWVDYXQgcHJvdmlkZXIuXG5UaGUgc2VjcmV0IHJlZmVyZW5jZWQgYnkgQ29uZmlnRmlsZSBzaG91bGQgY29udGFpblxuYW4gb2JqZWN0IG5hbWVkIGBibHVlY2F0Lmpzb25gIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZzpcblxue1xuICBcImdhdGV3YXlIb3N0XCI6IFwiaHR0cHM6Ly9ibHVlY2F0Z3cuZXhhbXBsZS5jb21cIixcbiAgXCJnYXRld2F5VXNlcm5hbWVcIjogXCJ1c2VyXCIsXG4gIFwiZ2F0ZXdheVBhc3N3b3JkXCI6IFwicGFzc1wiLFxuICBcImRuc0NvbmZpZ3VyYXRpb25cIjogXCJFeGFtcGxlXCIsXG4gIFwiZG5zVmlld1wiOiBcIkludGVybmFsXCIsXG4gIFwicm9vdFpvbmVcIjogXCJleGFtcGxlLmNvbVwiLFxuICBcInNraXBUTFNWZXJpZnlcIjogZmFsc2Vcbn1cblxuU2VlXG5odHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1zaWdzL2V4dGVybmFsLWRucy9ibG9iLzIyNmRiYjkzMWY3YTIwMTk4MTBiMzcwM2FlYzA5NmM0ZWE0ZjQwZWEvZG9jcy90dXRvcmlhbHMvYmx1ZWNhdC5tZCN1c2luZy1qc29uLWNvbmZpZ3VyYXRpb24tZmlsZVxuZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIHZhbHVlcyBhbmQgaG93IHRvIG9idGFpbiB0aGVtLiIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJuYW1lIl0sInR5cGUiOiJvYmplY3QifX0sInJlcXVpcmVkIjpbImNvbmZpZ0ZpbGUiXSwidHlwZSI6Im9iamVjdCJ9LCJnY3AiOnsiZGVzY3JpcHRpb24iOiJHQ1AgZGVzY3JpYmVzIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuc3BlY2lmaWMgdG8gR0NQIChHb29nbGUgRE5TKS4iLCJwcm9wZXJ0aWVzIjp7ImNyZWRlbnRpYWxzIjp7ImRlc2NyaXB0aW9uIjoiQ3JlZGVudGlhbHMgaXMgYSByZWZlcmVuY2UgdG8gYSBzZWNyZXQgY29udGFpbmluZ1xudGhlIG5lY2Vzc2FyeSBHQ1Agc2VydmljZSBhY2NvdW50IGtleXMuXG5UaGUgc2VjcmV0IHJlZmVyZW5jZWQgYnkgQ3JlZGVudGlhbHMgc2hvdWxkXG5jb250YWluIGEga2V5IG5hbWVkIGBnY3AtY3JlZGVudGlhbHMuanNvbmBcbnByZXN1bWFibHkgZ2VuZXJhdGVkIGJ5IHRoZSBnY2xvdWQgQ0xJLiIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJuYW1lIl0sInR5cGUiOiJvYmplY3QifSwicHJvamVjdCI6eyJkZXNjcmlwdGlvbiI6IlByb2plY3QgaXMgdGhlIEdDUCBwcm9qZWN0IHRvIHVzZSBmb3JcbmNyZWF0aW5nIEROUyByZWNvcmRzLiBUaGlzIGZpZWxkIGlzIG5vdCBuZWNlc3NhcnlcbndoZW4gcnVubmluZyBvbiBHQ1AgYXMgZXh0ZXJuYWxETlMgYXV0by1kZXRlY3RzXG50aGUgR0NQIHByb2plY3QgdG8gdXNlIHdoZW4gcnVubmluZyBvbiBHQ1AuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiY3JlZGVudGlhbHMiXSwidHlwZSI6Im9iamVjdCJ9LCJpbmZvYmxveCI6eyJkZXNjcmlwdGlvbiI6IkluZm9ibG94IGRlc2NyaWJlcyBwcm92aWRlciBjb25maWd1cmF0aW9uIG9wdGlvbnNcbnNwZWNpZmljIHRvIEluZm9ibG94IEROUy4iLCJwcm9wZXJ0aWVzIjp7ImNyZWRlbnRpYWxzIjp7ImRlc2NyaXB0aW9uIjoiQ3JlZGVudGlhbHMgaXMgYSByZWZlcmVuY2UgdG8gYSBzZWNyZXQgY29udGFpbmluZ1xudGhlIGZvbGxvd2luZyBrZXlzICh3aXRoIHByb3BlciBjb3JyZXNwb25kaW5nIHZhbHVlcyk6XG5cbiogRVhURVJOQUxfRE5TX0lORk9CTE9YX1dBUElfVVNFUk5BTUVcbiogRVhURVJOQUxfRE5TX0lORk9CTE9YX1dBUElfUEFTU1dPUkQiLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sImdyaWRIb3N0Ijp7ImRlc2NyaXB0aW9uIjoiR3JpZEhvc3QgaXMgdGhlIElQIG9mIHRoZSBJbmZvYmxveCBHcmlkIGhvc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ3YXBpUG9ydCI6eyJkZXNjcmlwdGlvbiI6IldBUElQb3J0IGlzIHRoZSBwb3J0IGZvciB0aGUgSW5mb2Jsb3ggV0FQSS4iLCJ0eXBlIjoiaW50ZWdlciJ9LCJ3YXBpVmVyc2lvbiI6eyJkZXNjcmlwdGlvbiI6IldBUElWZXJzaW9uIGlzIHRoZSB2ZXJzaW9uIG9mIHRoZSBJbmZvYmxveCBXQVBJLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImNyZWRlbnRpYWxzIiwiZ3JpZEhvc3QiLCJ3YXBpUG9ydCIsIndhcGlWZXJzaW9uIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgZGVzY3JpYmVzIHdoaWNoIEROUyBwcm92aWRlclxuRXh0ZXJuYWxETlMgc2hvdWxkIHB1Ymxpc2ggcmVjb3JkcyB0by5cblRoZSBmb2xsb3dpbmcgRE5TIHByb3ZpZGVycyBhcmUgc3VwcG9ydGVkOlxuXG4gKiBBV1MgKFJvdXRlIDUzKVxuICogR0NQIChHb29nbGUgRE5TKVxuICogQXp1cmVcbiAqIEJsdWVDYXRcbiAqIEluZm9ibG94IiwiZW51bSI6WyJBV1MiLCJHQ1AiLCJBenVyZSIsIkJsdWVDYXQiLCJJbmZvYmxveCJdLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0eXBlIl0sInR5cGUiOiJvYmplY3QifSwic291cmNlIjp7ImRlc2NyaXB0aW9uIjoiU291cmNlIGRlc2NyaWJlcyB3aGljaCBzb3VyY2UgcmVzb3VyY2VcbkV4dGVybmFsRE5TIHdpbGwgYmUgY29uZmlndXJlZCB0byBjcmVhdGVcbkROUyByZWNvcmRzIGZvci5cblxuTXVsdGlwbGUgRXh0ZXJuYWxETlMgQ1JzIG11c3QgYmVcbmNyZWF0ZWQgaWYgbXVsdGlwbGUgRXh0ZXJuYWxETlMgc291cmNlIHJlc291cmNlc1xuYXJlIGRlc2lyZWQuIiwicHJvcGVydGllcyI6eyJmcWRuVGVtcGxhdGUiOnsiZGVzY3JpcHRpb24iOiJGUUROVGVtcGxhdGUgc2V0cyBhIHRlbXBsYXRlZCBzdHJpbmcgdGhhdCdzIHVzZWQgdG8gZ2VuZXJhdGUgRE5TIG5hbWVzXG5mcm9tIHNvdXJjZXMgdGhhdCBkb24ndCBkZWZpbmUgYSBob3N0bmFtZSB0aGVtc2VsdmVzLlxuTXVsdGlwbGUgZ2xvYmFsIEZRRE4gdGVtcGxhdGVzIGFyZSBwb3NzaWJsZS5cblxuVGhpcyBmaWVsZCBtdXN0IGJlIHNwZWNpZmllZCB3aXRoIGEgbm9uZW1wdHkgdmFsdWUgaWYgdGhlIHNvdXJjZSB0eXBlXG5pcyBTZXJ2aWNlIG9yIENSRCBhbmQgSG9zdG5hbWVBbm5vdGF0aW9uUG9saWN5IGlzIHNldCB0byBJZ25vcmUuICBUaGVcbmZpZWxkIHZhbHVlIG1heSBiZSBvbWl0dGVkIG9yIGVtcHR5IGlmIEhvc3RuYW1lQW5ub3RhdGlvblBvbGljeSBpc1xuc2V0IHRvIEFsbG93IG9yIGlmIHRoZSBzb3VyY2UgdHlwZSBpcyBPcGVuU2hpZnRSb3V0ZS5cblxuUHJvdmlkZWQgdGVtcGxhdGVzIHNob3VsZCBmb2xsb3cgdGhlIHN5bnRheCBkZWZpbmVkIGZvciB0ZXh0L3RlbXBsYXRlIEdvIHBhY2thZ2UsXG5zZWUgaHR0cHM6Ly9wa2cuZ28uZGV2L3RleHQvdGVtcGxhdGUuXG5Bbm5vdGF0aW9ucyBpbnNpZGUgdGhlIHRlbXBsYXRlIGNvcnJlc3BvbmQgdG8gdGhlIGRlZmluaXRpb24gb2YgdGhlIHNvdXJjZSByZXNvdXJjZSBvYmplY3QgKGUuZy4gS3ViZXJuZXRlcyBzZXJ2aWNlLCBPcGVuU2hpZnQgcm91dGUpLlxuRXhhbXBsZTogXCJ7ey5OYW1lfX0uZXhhbXBsZS5jb21cIiB3b3VsZCBiZSBleHBhbmRlZCB0byBcIm15c2VydmljZS5leGFtcGxlLmNvbVwiIGZvciBzZXJ2aWNlIHNvdXJjZSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5In0sImhvc3RuYW1lQW5ub3RhdGlvbiI6eyJkZWZhdWx0IjoiSWdub3JlIiwiZGVzY3JpcHRpb24iOiJIb3N0bmFtZUFubm90YXRpb25Qb2xpY3kgc3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IEV4dGVybmFsRE5TXG5zaG91bGQgaWdub3JlIHRoZSBcImV4dGVybmFsLWRucy5hbHBoYS5rdWJlcm5ldGVzLmlvL2hvc3RuYW1lXCJcbmFubm90YXRpb24sIHdoaWNoIG92ZXJyaWRlcyBETlMgaG9zdG5hbWVzIG9uIGEgZ2l2ZW4gc291cmNlIHJlc291cmNlLlxuXG5UaGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgYWNjZXB0ZWQ6XG5cbiBcIklnbm9yZVwiOiBJZ25vcmUgYW55IGhvc3RuYW1lIGFubm90YXRpb24gb3ZlcnJpZGVzLlxuIFwiQWxsb3dcIjogQWxsb3cgYWxsIGhvc3RuYW1lIGFubm90YXRpb24gb3ZlcnJpZGVzLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgRXh0ZXJuYWxETlMgaXMgXCJJZ25vcmVcIi5cblxuTm90ZSB0aGF0IGJ5IHNldHRpbmcgYSBIb3N0bmFtZUFubm90YXRpb25Qb2xpY3kgb2YgXCJBbGxvd1wiLFxubWF5IGdyYW50IHByaXZpbGVnZWQgRE5TIHBlcm1pc3Npb25zIHRvIHVuZGVyLXByaXZpbGVnZWQgY2x1c3RlclxudXNlcnMuIiwiZW51bSI6WyJJZ25vcmUiLCJBbGxvdyJdLCJ0eXBlIjoic3RyaW5nIn0sImxhYmVsRmlsdGVyIjp7ImRlc2NyaXB0aW9uIjoiTGFiZWxGaWx0ZXIgc3BlY2lmaWVzIGEgbGFiZWwgc2VsZWN0b3IgZm9yIGZpbHRlcmluZyB0aGUgb2JqZWN0cyBmb3JcbndoaWNoIEV4dGVybmFsRE5TIHB1Ymxpc2hlcyByZWNvcmRzLiBUaGUgZmlsdGVyIHVzZXMgbGFiZWwgc2VsZWN0b3JcbnNlbWFudGljcyBhZ2FpbnN0IG9iamVjdCBsYWJlbHMuICBTcGVjaWZ5aW5nIGEgbnVsbCBvciBlbXB0eSBsYWJlbFxuc2VsZWN0b3IgY2F1c2VzIEV4dGVybmFsRE5TIHRvIHB1Ymxpc2ggcmVjb3JkcyBmb3IgYWxsIG9iamVjdHMgb2YgdGhlXG5zb3VyY2UgdHlwZSByZXNvdXJjZS4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm9wZW5zaGlmdFJvdXRlT3B0aW9ucyI6eyJkZXNjcmlwdGlvbiI6Ik9wZW5TaGlmdFJvdXRlIGRlc2NyaWJlcyBzb3VyY2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHNwZWNpZmljIHRvIHRoZVxucm91dGVzLnJvdXRlLm9wZW5zaGlmdC5pbyByZXNvdXJjZS4iLCJwcm9wZXJ0aWVzIjp7InJvdXRlck5hbWUiOnsiZGVzY3JpcHRpb24iOiJSb3V0ZXJOYW1lIGlzIHRoZSBuYW1lIG9mIGEgcm91dGVyIChBS0EgaW5ncmVzcyBjb250cm9sbGVyKSBhc1xucmVwb3J0ZWQgaW4gUm91dGUuc3RhdHVzLmluZ3Jlc3NbXS5yb3V0ZXJOYW1lLiAgRXh0ZXJuYWwtZG5zIHdpbGwgdXNlXG50aGUgY2Fub25pY2FsIGhvc3RuYW1lIG9mIHRoZSByb3V0ZXIgaWRlbnRpZmllZCBieSB0aGlzIG5hbWUgd2hlblxucHVibGlzaGluZyByZWNvcmRzIGZvciBhIGdpdmVuIHJvdXRlLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInJvdXRlck5hbWUiXSwidHlwZSI6Im9iamVjdCJ9LCJzZXJ2aWNlIjp7ImRlc2NyaXB0aW9uIjoiU2VydmljZSBkZXNjcmliZXMgc291cmNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzcGVjaWZpY1xudG8gdGhlIHNlcnZpY2Ugc291cmNlIHJlc291cmNlLiIsInByb3BlcnRpZXMiOnsic2VydmljZVR5cGUiOnsiZGVmYXVsdCI6WyJMb2FkQmFsYW5jZXIiXSwiZGVzY3JpcHRpb24iOiJTZXJ2aWNlVHlwZSBkZXRlcm1pbmVzIHdoYXQgdHlwZXMgb2YgU2VydmljZSByZXNvdXJjZXNcbmFyZSB3YXRjaGVkIGJ5IEV4dGVybmFsRE5TLiBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZVxuYXZhaWxhYmxlIG9wdGlvbnM6XG5cbiBcIk5vZGVQb3J0XCJcbiBcIkV4dGVybmFsTmFtZVwiXG4gXCJMb2FkQmFsYW5jZXJcIlxuIFwiQ2x1c3RlcklQXCJcblxuT25lIG9yIG1vcmUgU2VydmljZSB0eXBlcyBjYW4gYmUgc3BlY2lmaWVkLCBpZiBkZXNpcmVkLlxuXG5Ob3RlIHRoYXQgdXNpbmcgdGhlIFwiQ2x1c3RlcklQXCIgc2VydmljZSB0eXBlIHdpbGwgZW5hYmxlXG50aGUgRXh0ZXJuYWxETlMgXCItLXB1Ymxpc2gtaW50ZXJuYWwtc2VydmljZXNcIiBmbGFnLFxud2hpY2ggYWxsb3dzIEV4dGVybmFsRE5TIHRvIHB1Ymxpc2ggRE5TIHJlY29yZHNcbmZvciBDbHVzdGVySVAgc2VydmljZXMuXG5cbklmIG5vIHNlcnZpY2UgdHlwZXMgYXJlIHByb3ZpZGVkLCBFeHRlcm5hbEROUyB3aWxsIGJlXG5jb25maWd1cmVkIHRvIGNyZWF0ZSBETlMgcmVjb3JkcyBmb3IgTG9hZEJhbGFuY2VyIHNlcnZpY2VzXG5vbmx5IGJ5IGRlZmF1bHQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJTZXJ2aWNlIFR5cGUgc3RyaW5nIGRlc2NyaWJlcyBpbmdyZXNzIG1ldGhvZHMgZm9yIGEgc2VydmljZSIsInR5cGUiOiJzdHJpbmcifSwibWluSXRlbXMiOjEsInR5cGUiOiJhcnJheSJ9fSwicmVxdWlyZWQiOlsic2VydmljZVR5cGUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoiVHlwZSBzcGVjaWZpZXMgYW4gRXh0ZXJuYWxETlMgc291cmNlIHJlc291cmNlXG50byBjcmVhdGUgRE5TIHJlY29yZHMgZm9yLiIsImVudW0iOlsiT3BlblNoaWZ0Um91dGUiLCJTZXJ2aWNlIiwiQ1JEIl0sInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9LCJ6b25lcyI6eyJkZXNjcmlwdGlvbiI6IlpvbmVzIGRlc2NyaWJlcyB3aGljaCBETlMgWm9uZSBJRHNcbkV4dGVybmFsRE5TIHNob3VsZCBwdWJsaXNoIHJlY29yZHMgdG8uXG5cblVwZGF0aW5nIHRoaXMgZmllbGQgYWZ0ZXIgY3JlYXRpb25cbndpbGwgY2F1c2UgYWxsIEROUyByZWNvcmRzIGluIHRoZSBwcmV2aW91c1xuem9uZShzKSB0byBiZSBsZWZ0IGJlaGluZC5cblxuQW4gZW1wdHkgbGlzdCBvZiB6b25lcyBtZWFucyB0aGF0IHRoZSBFeHRlcm5hbEROUyB3aWxsXG5wdWJsaXNoIHRvIGFsbCB6b25lcyAoaS5lIHB1YmxpYyBhbmQgcHJpdmF0ZSksIHVubGVzcyB0aGVcbm9wZXJhdG9yIHJ1bnMgb24gYSBwbGF0Zm9ybSBvbiB3aGljaCB0aGUgb3BlcmF0b3IgY2FuXG5sb29rdXAgYSBkZWZhdWx0IHNldCBvZiB6b25lcyBlLmcgb24gT3BlblNoaWZ0IHdpdGggaXRzIGNsdXN0ZXJcbkROUyBjb25maWciLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sIm1heEl0ZW1zIjoxMCwidHlwZSI6ImFycmF5In19LCJyZXF1aXJlZCI6WyJwcm92aWRlciIsInNvdXJjZSJdLCJ0eXBlIjoib2JqZWN0In0sInN0YXR1cyI6eyJkZXNjcmlwdGlvbiI6InN0YXR1cyBpcyB0aGUgbW9zdCByZWNlbnRseSBvYnNlcnZlZCBzdGF0dXMgb2YgdGhlIEV4dGVybmFsRE5TLiIsInByb3BlcnRpZXMiOnsiY29uZGl0aW9ucyI6eyJkZXNjcmlwdGlvbiI6IkNvbmRpdGlvbnMgaXMgYSBsaXN0IG9mIG9wZXJhdG9yLXNwZWNpZmljIGNvbmRpdGlvbnNcbmFuZCB0aGVpciBzdGF0dXMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJDb25kaXRpb24gY29udGFpbnMgZGV0YWlscyBmb3Igb25lIGFzcGVjdCBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGlzIEFQSSBSZXNvdXJjZS4iLCJwcm9wZXJ0aWVzIjp7Imxhc3RUcmFuc2l0aW9uVGltZSI6eyJkZXNjcmlwdGlvbiI6Imxhc3RUcmFuc2l0aW9uVGltZSBpcyB0aGUgbGFzdCB0aW1lIHRoZSBjb25kaXRpb24gdHJhbnNpdGlvbmVkIGZyb20gb25lIHN0YXR1cyB0byBhbm90aGVyLlxuVGhpcyBzaG91bGQgYmUgd2hlbiB0aGUgdW5kZXJseWluZyBjb25kaXRpb24gY2hhbmdlZC4gIElmIHRoYXQgaXMgbm90IGtub3duLCB0aGVuIHVzaW5nIHRoZSB0aW1lIHdoZW4gdGhlIEFQSSBmaWVsZCBjaGFuZ2VkIGlzIGFjY2VwdGFibGUuIiwiZm9ybWF0IjoiZGF0ZS10aW1lIiwidHlwZSI6InN0cmluZyJ9LCJtZXNzYWdlIjp7ImRlc2NyaXB0aW9uIjoibWVzc2FnZSBpcyBhIGh1bWFuIHJlYWRhYmxlIG1lc3NhZ2UgaW5kaWNhdGluZyBkZXRhaWxzIGFib3V0IHRoZSB0cmFuc2l0aW9uLlxuVGhpcyBtYXkgYmUgYW4gZW1wdHkgc3RyaW5nLiIsIm1heExlbmd0aCI6MzI3NjgsInR5cGUiOiJzdHJpbmcifSwib2JzZXJ2ZWRHZW5lcmF0aW9uIjp7ImRlc2NyaXB0aW9uIjoib2JzZXJ2ZWRHZW5lcmF0aW9uIHJlcHJlc2VudHMgdGhlIC5tZXRhZGF0YS5nZW5lcmF0aW9uIHRoYXQgdGhlIGNvbmRpdGlvbiB3YXMgc2V0IGJhc2VkIHVwb24uXG5Gb3IgaW5zdGFuY2UsIGlmIC5tZXRhZGF0YS5nZW5lcmF0aW9uIGlzIGN1cnJlbnRseSAxMiwgYnV0IHRoZSAuc3RhdHVzLmNvbmRpdGlvbnNbeF0ub2JzZXJ2ZWRHZW5lcmF0aW9uIGlzIDksIHRoZSBjb25kaXRpb24gaXMgb3V0IG9mIGRhdGVcbndpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgaW5zdGFuY2UuIiwiZm9ybWF0IjoiaW50NjQiLCJtaW5pbXVtIjowLCJ0eXBlIjoiaW50ZWdlciJ9LCJyZWFzb24iOnsiZGVzY3JpcHRpb24iOiJyZWFzb24gY29udGFpbnMgYSBwcm9ncmFtbWF0aWMgaWRlbnRpZmllciBpbmRpY2F0aW5nIHRoZSByZWFzb24gZm9yIHRoZSBjb25kaXRpb24ncyBsYXN0IHRyYW5zaXRpb24uXG5Qcm9kdWNlcnMgb2Ygc3BlY2lmaWMgY29uZGl0aW9uIHR5cGVzIG1heSBkZWZpbmUgZXhwZWN0ZWQgdmFsdWVzIGFuZCBtZWFuaW5ncyBmb3IgdGhpcyBmaWVsZCxcbmFuZCB3aGV0aGVyIHRoZSB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgYSBndWFyYW50ZWVkIEFQSS5cblRoZSB2YWx1ZSBzaG91bGQgYmUgYSBDYW1lbENhc2Ugc3RyaW5nLlxuVGhpcyBmaWVsZCBtYXkgbm90IGJlIGVtcHR5LiIsIm1heExlbmd0aCI6MTAyNCwibWluTGVuZ3RoIjoxLCJwYXR0ZXJuIjoiXltBLVphLXpdKFtBLVphLXowLTlfLDpdKltBLVphLXowLTlfXSk/JCIsInR5cGUiOiJzdHJpbmcifSwic3RhdHVzIjp7ImRlc2NyaXB0aW9uIjoic3RhdHVzIG9mIHRoZSBjb25kaXRpb24sIG9uZSBvZiBUcnVlLCBGYWxzZSwgVW5rbm93bi4iLCJlbnVtIjpbIlRydWUiLCJGYWxzZSIsIlVua25vd24iXSwidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoidHlwZSBvZiBjb25kaXRpb24gaW4gQ2FtZWxDYXNlIG9yIGluIGZvby5leGFtcGxlLmNvbS9DYW1lbENhc2UuIiwibWF4TGVuZ3RoIjozMTYsInBhdHRlcm4iOiJeKFthLXowLTldKFstYS16MC05XSpbYS16MC05XSk/KFxcLlthLXowLTldKFstYS16MC05XSpbYS16MC05XSk/KSovKT8oKFtBLVphLXowLTldWy1BLVphLXowLTlfLl0qKT9bQS1aYS16MC05XSkkIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibGFzdFRyYW5zaXRpb25UaW1lIiwibWVzc2FnZSIsInJlYXNvbiIsInN0YXR1cyIsInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkifSwib2JzZXJ2ZWRHZW5lcmF0aW9uIjp7ImRlc2NyaXB0aW9uIjoiT2JzZXJ2ZWRHZW5lcmF0aW9uIGlzIHRoZSBtb3N0IHJlY2VudCBnZW5lcmF0aW9uIG9ic2VydmVkLiIsImZvcm1hdCI6ImludDY0IiwidHlwZSI6ImludGVnZXIifSwiem9uZXMiOnsiZGVzY3JpcHRpb24iOiJab25lcyBpcyB0aGUgY29uZmlndXJlZCB6b25lcyBpbiB1c2UgYnkgRXh0ZXJuYWxETlMuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkifX0sInR5cGUiOiJvYmplY3QifX0sInJlcXVpcmVkIjpbInNwZWMiXSwidHlwZSI6Im9iamVjdCJ9fSwic2VydmVkIjp0cnVlLCJzdG9yYWdlIjp0cnVlLCJzdWJyZXNvdXJjZXMiOnsic3RhdHVzIjp7fX19XX0sInN0YXR1cyI6eyJhY2NlcHRlZE5hbWVzIjp7ImtpbmQiOiIiLCJwbHVyYWwiOiIifSwiY29uZGl0aW9ucyI6bnVsbCwic3RvcmVkVmVyc2lvbnMiOm51bGx9fQ== |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Decode the v1.3.6 bundle RBAC objects and compare them to the CRD group/plural.
# Expect: externaldns-editor and externaldns-viewer should both grant
# apiGroups=["externaldns.olm.openshift.io"] and resources including "externaldnses".
python - <<'PY'
import base64
import json
import pathlib
import re
path = pathlib.Path("catalog/v4.13/catalog.yaml")
text = path.read_text()
match = re.search(
r"(?ms)^image: .*\nname: external-dns-operator\.v1\.3\.6\npackage: external-dns-operator\nproperties:\n.*?^schema: olm\.bundle",
text,
)
if not match:
raise SystemExit("external-dns-operator.v1.3.6 bundle block not found")
objects = [
json.loads(base64.b64decode(m.group(1)))
for m in re.finditer(r"^\s+data:\s*([A-Za-z0-9+/=]+)\s*$", match.group(0), re.MULTILINE)
]
crd = next(obj for obj in objects if obj.get("kind") == "CustomResourceDefinition")
print("CRD:", crd["spec"]["group"], crd["spec"]["names"]["plural"])
for obj in objects:
if obj.get("kind") == "ClusterRole" and obj["metadata"]["name"] in {"externaldns-editor", "externaldns-viewer"}:
print(obj["metadata"]["name"], obj["rules"])
PYRepository: openshift/external-dns-operator
Length of output: 7638
Fix the externaldns-viewer ClusterRole to use the correct API group.
The CRD defines group externaldns.olm.openshift.io, but the decoded externaldns-viewer ClusterRole grants resources from operator.openshift.io. This mismatch will prevent the viewer role from authorizing access to ExternalDNS CRs. Update the source RBAC manifest and regenerate the catalog to use externaldns.olm.openshift.io in the viewer role rules.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@catalog/v4.13/catalog.yaml` at line 1077, The externaldns-viewer ClusterRole
in the encoded CRD data currently uses the API group `operator.openshift.io` in
its RBAC rules, but the CRD itself is defined under the API group
`externaldns.olm.openshift.io`. Decode the base64-encoded data field at line
1077, locate the embedded ClusterRole definition for externaldns-viewer, and
update the apiGroup in the rules section from `operator.openshift.io` to
`externaldns.olm.openshift.io` to match the CRD's actual API group. After making
this correction, re-encode the updated YAML back to base64 and replace the data
field value.
|
/lgtm |
|
@alebedev87: all tests passed! Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
Summary
external-dns-operator.v1.3.6bundle entry to all FBCcatalog-template.yamlfiles (v4.12-v4.22) usingregistry.redhat.iostable-v1andstable-v1.3channel entries (replaces v1.3.5)catalog.yamlfiles withmake generate-catalog OCP_VERSION=4.X