Repository: kubernetes-sigs/gateway-api-inference-extension

Issue:
use pinned tags in conformance tests
Currently conformance tests deploy things like `us-central1-docker.pkg.dev/k8s-staging-images/gateway-api-inference-extension/epp:main`. This is not viable since this can change at any point, making the tests fail/change behavior

Discussion:

Solution patch:
diff --git a/.github/workflows/kal.yml b/.github/workflows/kal.yml
index 618256e..17b6281 100644
--- a/.github/workflows/kal.yml
+++ b/.github/workflows/kal.yml
@@ -20,9 +20,5 @@ jobs:
           persist-credentials: false
       - name: Set up Go
         uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # tag=v5.5.0
-      - name: Install Golang CI Lint
-        run: go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.2.1
-      - name: Build KAL
-        run: golangci-lint custom
-      - name: run api linter
-        run: ./bin/golangci-kube-api-linter run -c ./.golangci-kal.yml ./...
+      - name: Run API Linter
+        run: make api-lint
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 023ed0e..575eb7a 100644
--- a/Makefile
+++ b/Makefile
@@ -160,8 +160,12 @@ lint-fix: golangci-lint ## Run golangci-lint linter and perform fixes
 ci-lint: golangci-lint
 	$(GOLANGCI_LINT) run --timeout 15m0s
 
+.PHONY: api-lint
+api-lint: golangci-api-lint
+	$(GOLANGCI_API_LINT) run -c .golangci-kal.yml --timeout 15m0s ./...
+
 .PHONY: verify
-verify: vet fmt-verify generate ci-lint verify-all
+verify: vet fmt-verify generate ci-lint api-lint verify-all
 	git --no-pager diff --exit-code config api client-go
 
 .PHONY: verify-crds
@@ -366,6 +370,7 @@ CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
 ENVTEST ?= $(LOCALBIN)/setup-envtest
 CRD_REF_DOCS ?= $(LOCALBIN)/crd-ref-docs
 GOLANGCI_LINT = $(LOCALBIN)/golangci-lint
+GOLANGCI_API_LINT = $(LOCALBIN)/golangci-kube-api-linter
 HELM = $(PROJECT_DIR)/bin/helm
 YQ = $(PROJECT_DIR)/bin/yq
 KUBECTL_VALIDATE = $(PROJECT_DIR)/bin/kubectl-validate
@@ -407,6 +412,11 @@ golangci-lint: $(GOLANGCI_LINT) ## Download golangci-lint locally if necessary.
 $(GOLANGCI_LINT): $(LOCALBIN)
 	$(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/v2/cmd/golangci-lint,$(GOLANGCI_LINT_VERSION))
 
+.PHONY: golangci-api-lint
+golangci-api-lint: golangci-lint $(GOLANGCI_API_LINT) ## Download golangci-lint locally if necessary before building KAL
+$(GOLANGCI_API_LINT):
+	$(GOLANGCI_LINT) custom
+
 .PHONY: yq
 yq: ## Download yq locally if necessary.
 	GOBIN=$(PROJECT_DIR)/bin GO111MODULE=on go install github.com/mikefarah/yq/v4@$(YQ_VERSION)
diff --git a/README.md b/README.md
index ff193df..19e801b 100644
--- a/README.md
+++ b/README.md
@@ -10,9 +10,6 @@ This is achieved by leveraging Envoy's [External Processing] (ext-proc) to exten
 
 [Inference Gateway]:#concepts-and-definitions
 
-
-> ***NOTE*** : As we prep for our `v1` release, some of our docs may fall out of scope, we are working hard to get these up to date and they will be ready by the time we launch `v1`. Thanks!
-
 ## New!
 Inference Gateway has partnered with vLLM to accelerate LLM serving optimizations with [llm-d](https://llm-d.ai/blog/llm-d-announce)!
 
@@ -32,7 +29,8 @@ The following specific terms to this project:
   performance, availability and capabilities to optimize routing. Includes
   things like [Prefix Cache] status or [LoRA Adapters] availability.
 - **Endpoint Picker(EPP)**: An implementation of an `Inference Scheduler` with additional Routing, Flow, and Request Control layers to allow for sophisticated routing strategies. Additional info on the architecture of the EPP [here](https://github.com/kubernetes-sigs/gateway-api-inference-extension/tree/main/docs/proposals/0683-epp-architecture-proposal).
-  
+- **Body Based Router(BBR)**: An optional additional [ext-proc](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/ext_proc_filter) server that parses the http body of the inference prompt message and extracts information (currently the model name for OpenAI API style messages) into a format which can then be used by the gateway for routing purposes. Additional info [here](https://github.com/kubernetes-sigs/gateway-api-inference-extension/tree/main/pkg/bbr/README.md) and in the documentation [user guides](https://gateway-api-inference-extension.sigs.k8s.io/guides/). 
+ 
 
 The following are key industry terms that are important to understand for
 this project:
diff --git a/bbr.Dockerfile b/bbr.Dockerfile
index 36ae378..1c294c4 100644
--- a/bbr.Dockerfile
+++ b/bbr.Dockerfile
@@ -18,6 +18,7 @@ RUN go mod download
 COPY cmd/bbr ./cmd
 COPY pkg ./pkg
 COPY internal ./internal
+COPY api ./api
 WORKDIR /src/cmd
 RUN go build -o /bbr
 
diff --git a/cmd/epp/runner/runner.go b/cmd/epp/runner/runner.go
index 429b5c3..2842704 100644
--- a/cmd/epp/runner/runner.go
+++ b/cmd/epp/runner/runner.go
@@ -80,7 +80,7 @@ var (
 	enablePprof    = flag.Bool("enable-pprof", runserver.DefaultEnablePprof, "Enables pprof handlers. Defaults to true. Set to false to disable pprof handlers.")
 	poolName       = flag.String("pool-name", runserver.DefaultPoolName, "Name of the InferencePool this Endpoint Picker is associated with.")
 	poolGroup      = flag.String("pool-group", runserver.DefaultPoolGroup, "group of the InferencePool this Endpoint Picker is associated with.")
-	poolNamespace  = flag.String("pool-namespace", runserver.DefaultPoolNamespace, "Namespace of the InferencePool this Endpoint Picker is associated with.")
+	poolNamespace  = flag.String("pool-namespace", "", "Namespace of the InferencePool this Endpoint Picker is associated with.")
 	logVerbosity   = flag.Int("v", logging.DEFAULT, "number for the log level verbosity")
 	secureServing  = flag.Bool("secure-serving", runserver.DefaultSecureServing, "Enables secure serving. Defaults to true.")
 	healthChecking = flag.Bool("health-checking", runserver.DefaultHealthChecking, "Enables health checking")
@@ -188,9 +188,20 @@ func (r *Runner) Run(ctx context.Context) error {
 		FilterProvider: filters.WithAuthenticationAndAuthorization,
 	}
 
+	// Determine pool namespace: if --pool-namespace is non-empty, use it; else NAMESPACE env var; else default
+	resolvePoolNamespace := func() string {
+		if *poolNamespace != "" {
+			return *poolNamespace
+		}
+		if nsEnv := os.Getenv("NAMESPACE"); nsEnv != "" {
+			return nsEnv
+		}
+		return runserver.DefaultPoolNamespace
+	}
+	resolvedPoolNamespace := resolvePoolNamespace()
 	poolNamespacedName := types.NamespacedName{
 		Name:      *poolName,
-		Namespace: *poolNamespace,
+		Namespace: resolvedPoolNamespace,
 	}
 	poolGroupKind := schema.GroupKind{
 		Group: *poolGroup,
diff --git a/config/charts/inferencepool/README.md b/config/charts/inferencepool/README.md
index c7374bc..5a5663d 100644
--- a/config/charts/inferencepool/README.md
+++ b/config/charts/inferencepool/README.md
@@ -117,6 +117,30 @@ Then apply it with:
 helm install vllm-llama3-8b-instruct ./config/charts/inferencepool -f values.yaml
 ```
 
+### Install with Monitoring
+
+To enable metrics collection and monitoring for the EndpointPicker, you can configure Prometheus ServiceMonitor creation:
+
+```yaml
+inferenceExtension:
+  monitoring:
+    interval: "10s"
+    prometheus:
+      enabled: true
+    secret:
+      name: inference-gateway-sa-metrics-reader-secret
+```
+
+**Note:** Prometheus monitoring requires the Prometheus Operator and ServiceMonitor CRD to be installed in the cluster.
+
+For GKE environments, monitoring is automatically configured when `provider.name` is set to `gke`.
+
+Then apply it with:
+
+```txt
+helm install vllm-llama3-8b-instruct ./config/charts/inferencepool -f values.yaml
+```
+
 ## Uninstall
 
 Run the following command to uninstall the chart:
@@ -147,6 +171,9 @@ The following table list the configurable parameters of the chart.
 | `inferenceExtension.affinity`               | Affinity for the endpoint picker. Defaults to `{}`.                                                                    |
 | `inferenceExtension.tolerations`            | Tolerations for the endpoint picker. Defaults to `[]`.                                                                 |
 | `inferenceExtension.flags.has-enable-leader-election` | Enable leader election for high availability. When enabled, only one EPP pod (the leader) will be ready to serve traffic.       |
+| `inferenceExtension.monitoring.interval`   | Metrics scraping interval for monitoring. Defaults to `10s`.                                                           |
+| `inferenceExtension.monitoring.secret.name` | Name of the service account token secret for metrics authentication. Defaults to `inference-gateway-sa-metrics-reader-secret`. |
+| `inferenceExtension.monitoring.prometheus.enabled` | Enable Prometheus ServiceMonitor creation for EPP metrics collection. Defaults to `false`.                      |
 | `inferenceExtension.pluginsCustomConfig`    | Custom config that is passed to EPP as inline yaml.      |
 | `provider.name`                             | Name of the Inference Gateway implementation being used. Possible values: `gke`. Defaults to `none`.                   |
 
diff --git a/config/charts/inferencepool/templates/epp-sa-token-secret.yaml b/config/charts/inferencepool/templates/epp-sa-token-secret.yaml
new file mode 100644
index 0000000..9abee0f
--- /dev/null
+++ b/config/charts/inferencepool/templates/epp-sa-token-secret.yaml
@@ -0,0 +1,12 @@
+{{- if or .Values.inferenceExtension.monitoring.prometheus.enabled .Values.inferenceExtension.monitoring.gke.enabled }}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ .Values.inferenceExtension.monitoring.secret.name }}
+  namespace: {{ .Release.Namespace }}
+  labels:
+    {{- include "gateway-api-inference-extension.labels" . | nindent 4 }}
+  annotations:
+    kubernetes.io/service-account.name: {{ include "gateway-api-inference-extension.name" . }}
+type: kubernetes.io/service-account-token
+{{- end }}
\ No newline at end of file
diff --git a/config/charts/inferencepool/templates/epp-servicemonitor.yaml b/config/charts/inferencepool/templates/epp-servicemonitor.yaml
new file mode 100644
index 0000000..e4788ba
--- /dev/null
+++ b/config/charts/inferencepool/templates/epp-servicemonitor.yaml
@@ -0,0 +1,25 @@
+{{- if .Values.inferenceExtension.monitoring.prometheus.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ include "gateway-api-inference-extension.name" . }}-monitor
+  namespace: {{ .Release.Namespace }}
+  labels:
+    {{- include "gateway-api-inference-extension.labels" . | nindent 4 }}
+spec:
+  endpoints:
+  - interval: {{ .Values.inferenceExtension.monitoring.interval }}
+    port: "http-metrics"
+    path: "/metrics"
+    authorization:
+      credentials:
+        key: token
+        name: {{ .Values.inferenceExtension.monitoring.secret.name }}
+  jobLabel: {{ include "gateway-api-inference-extension.name" . }}
+  namespaceSelector:
+    matchNames:
+    - {{ .Release.Namespace }}
+  selector:
+    matchLabels:
+      {{- include "gateway-api-inference-extension.labels" . | nindent 6 }}
+{{- end }}
diff --git a/config/charts/inferencepool/templates/gke.yaml b/config/charts/inferencepool/templates/gke.yaml
index 470063c..f2296aa 100644
--- a/config/charts/inferencepool/templates/gke.yaml
+++ b/config/charts/inferencepool/templates/gke.yaml
@@ -46,15 +46,15 @@ spec:
   endpoints:
   - port: metrics
     scheme: http
-    interval: 5s
+    interval: {{ .Values.inferenceExtension.monitoring.interval }}
     path: /metrics
     authorization:
       type: Bearer
       credentials:
         secret:
-          name: {{ .Values.gke.monitoringSecret.name }}
+          name: {{ .Values.inferenceExtension.monitoring.secret.name }}
           key: token
-          namespace: {{ .Values.gke.monitoringSecret.namespace }}
+          namespace: {{ .Release.Namespace }}
   selector:
     matchLabels:
       {{- include "gateway-api-inference-extension.selectorLabels" . | nindent 8 }}
diff --git a/config/charts/inferencepool/templates/rbac.yaml b/config/charts/inferencepool/templates/rbac.yaml
index 7ff534f..ebe68c3 100644
--- a/config/charts/inferencepool/templates/rbac.yaml
+++ b/config/charts/inferencepool/templates/rbac.yaml
@@ -17,6 +17,12 @@ rules:
   - subjectaccessreviews
   verbs:
   - create
+{{- if .Values.inferenceExtension.monitoring.prometheus.enabled }}
+- nonResourceURLs:
+  - "/metrics"
+  verbs:
+  - get
+{{- end }}
 ---
 kind: ClusterRoleBinding
 apiVersion: rbac.authorization.k8s.io/v1
diff --git a/config/charts/inferencepool/values.yaml b/config/charts/inferencepool/values.yaml
index d45e6ed..f61b64e 100644
--- a/config/charts/inferencepool/values.yaml
+++ b/config/charts/inferencepool/values.yaml
@@ -40,6 +40,17 @@ inferenceExtension:
 
   tolerations: []
 
+  # Monitoring configuration for EPP
+  monitoring:
+    interval: "10s"
+    # Service account token secret for authentication
+    secret:
+      name: inference-gateway-sa-metrics-reader-secret
+
+    # Prometheus ServiceMonitor will be created when enabled for EPP metrics collection
+    prometheus:
+      enabled: false
+
 inferencePool:
   targetPorts:
     - number: 8000
@@ -56,7 +67,3 @@ inferencePool:
 provider:
   name: none
 
-gke:
-  monitoringSecret:
-    name: inference-gateway-sa-metrics-reader-secret
-    namespace: default
diff --git a/config/manifests/bbr-example/httproute_bbr.yaml b/config/manifests/bbr-example/httproute_bbr.yaml
new file mode 100644
index 0000000..8702546
--- /dev/null
+++ b/config/manifests/bbr-example/httproute_bbr.yaml
@@ -0,0 +1,51 @@
+---
+apiVersion: gateway.networking.k8s.io/v1
+kind: HTTPRoute
+metadata:
+  name: llm-llama-route
+spec:
+  parentRefs:
+  - group: gateway.networking.k8s.io
+    kind: Gateway
+    name: inference-gateway
+  rules:
+  - backendRefs:
+    - group: inference.networking.k8s.io
+      kind: InferencePool
+      name: vllm-llama3-8b-instruct
+    matches:
+    - path:
+        type: PathPrefix
+        value: /
+      headers:
+        - type: Exact
+          name: X-Gateway-Model-Name
+          value: 'meta-llama/Llama-3.1-8B-Instruct'
+    timeouts:
+      request: 300s
+---
+apiVersion: gateway.networking.k8s.io/v1
+kind: HTTPRoute
+metadata:
+  name: llm-phi4-route
+spec:
+  parentRefs:
+  - group: gateway.networking.k8s.io
+    kind: Gateway
+    name: inference-gateway
+  rules:
+  - backendRefs:
+    - group: inference.networking.k8s.io
+      kind: InferencePool
+      name: vllm-phi4-mini-instruct
+    matches:
+    - path:
+        type: PathPrefix
+        value: /
+      headers:
+        - type: Exact
+          name: X-Gateway-Model-Name
+          value: 'microsoft/Phi-4-mini-instruct'
+    timeouts:
+      request: 300s
+---
diff --git a/config/manifests/bbr-example/vllm-phi4-mini.yaml b/config/manifests/bbr-example/vllm-phi4-mini.yaml
new file mode 100644
index 0000000..7f7827c
--- /dev/null
+++ b/config/manifests/bbr-example/vllm-phi4-mini.yaml
@@ -0,0 +1,88 @@
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: phi4-mini
+  namespace: default
+spec:
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 20Gi
+  volumeMode: Filesystem
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: phi4-mini
+  namespace: default
+  labels:
+    app: phi4-mini
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: phi4-mini
+  template:
+    metadata:
+      labels:
+        app: phi4-mini
+    spec:
+      volumes:
+      - name: cache-volume
+        persistentVolumeClaim:
+          claimName: phi4-mini
+      containers:
+      - name: phi4-mini
+        image: vllm/vllm-openai:latest
+        command: ["/bin/sh", "-c"]
+        args: [
+          "vllm serve microsoft/Phi-4-mini-instruct --trust-remote-code --enable-chunked-prefill" 
+        ]
+        env:
+        - name: HUGGING_FACE_HUB_TOKEN
+          valueFrom:
+            secretKeyRef:
+              name: hf-token
+              key: token
+        ports:
+        - containerPort: 8000
+        resources:
+          limits:
+            nvidia.com/gpu: "1"
+          requests:
+            nvidia.com/gpu: "1"
+        volumeMounts:
+        - mountPath: /root/.cache/huggingface
+          name: cache-volume
+        livenessProbe:
+          httpGet:
+            path: /health
+            port: 8000
+          initialDelaySeconds: 600
+          periodSeconds: 10
+        readinessProbe:
+          httpGet:
+            path: /health
+            port: 8000
+          initialDelaySeconds: 600
+          periodSeconds: 5
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: phi4-mini
+  namespace: default
+spec:
+  ports:
+  - name: http-phi4-mini
+    port: 80
+    protocol: TCP
+    targetPort: 8000
+  # The label selector should match the deployment labels & it is useful for prefix caching feature
+  selector:
+    app: phi4-mini
+  sessionAffinity: None
+  type: ClusterIP
+
diff --git a/config/manifests/inferencepool-resources.yaml b/config/manifests/inferencepool-resources.yaml
deleted file mode 100644
index ffe1965..0000000
--- a/config/manifests/inferencepool-resources.yaml
+++ /dev/null
@@ -1,186 +0,0 @@
-# Note: If you change this file, please also change:
-#  - ./test/testdata/inferencepool-e2e.yaml
-#  - ./conformance/resources/manifests/manifests.yaml
-#  - ./site-src/guides/inferencepool-rollout.md
----
-apiVersion: inference.networking.k8s.io/v1
-kind: InferencePool
-metadata:
-  name: vllm-llama3-8b-instruct
-spec:
-  targetPorts:
-    - number: 8000
-  selector:
-    matchLabels:
-      app: vllm-llama3-8b-instruct
-  endpointPickerRef:
-    name: vllm-llama3-8b-instruct-epp
-    kind: Service
-    port:
-      number: 9002
----
-apiVersion: v1
-kind: Service
-metadata:
-  name: vllm-llama3-8b-instruct-epp
-  namespace: default
-spec:
-  selector:
-    app: vllm-llama3-8b-instruct-epp
-  ports:
-    - protocol: TCP
-      port: 9002
-      targetPort: 9002
-      appProtocol: http2
-  type: ClusterIP
----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  name: vllm-llama3-8b-instruct-epp
-  namespace: default
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: vllm-llama3-8b-instruct-epp
-  namespace: default
-  labels:
-    app: vllm-llama3-8b-instruct-epp
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: vllm-llama3-8b-instruct-epp
-  template:
-    metadata:
-      labels:
-        app: vllm-llama3-8b-instruct-epp
-    spec:
-      serviceAccountName: vllm-llama3-8b-instruct-epp
-      # Conservatively, this timeout should mirror the longest grace period of the pods within the pool
-      terminationGracePeriodSeconds: 130
-      containers:
-      - name: epp
-        image: us-central1-docker.pkg.dev/k8s-staging-images/gateway-api-inference-extension/epp:main
-        imagePullPolicy: Always
-        args:
-        - --pool-name
-        - "vllm-llama3-8b-instruct"
-        - "--pool-namespace"
-        - "default"
-        - --v
-        - "4"
-        - --zap-encoder
-        - "json"
-        - --grpc-port
-        - "9002"
-        - --grpc-health-port
-        - "9003"
-        - "--config-file"
-        - "/config/default-plugins.yaml"
-        ports:
-        - containerPort: 9002
-        - containerPort: 9003
-        - name: metrics
-          containerPort: 9090
-        livenessProbe:
-          grpc:
-            port: 9003
-            service: inference-extension
-          initialDelaySeconds: 5
-          periodSeconds: 10
-        readinessProbe:
-          grpc:
-            port: 9003
-            service: inference-extension
-          initialDelaySeconds: 5
-          periodSeconds: 10
-        volumeMounts:
-        - name: plugins-config-volume
-          mountPath: "/config"
-      volumes:
-      - name: plugins-config-volume
-        configMap:
-          name: plugins-config
----
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: plugins-config
-  namespace: default
-data:
-  default-plugins.yaml: |
-    apiVersion: inference.networking.x-k8s.io/v1alpha1
-    kind: EndpointPickerConfig
-    plugins:
-    - type: queue-scorer
-    - type: kv-cache-utilization-scorer
-    - type: prefix-cache-scorer
-    schedulingProfiles:
-    - name: default
-      plugins:
-      - pluginRef: queue-scorer
-      - pluginRef: kv-cache-utilization-scorer
-      - pluginRef: prefix-cache-scorer
----
-kind: Role
-apiVersion: rbac.authorization.k8s.io/v1
-metadata:
-  name: pod-read
-  namespace: default
-rules:
-- apiGroups: [ "inference.networking.x-k8s.io" ]
-  resources: [ "inferenceobjectives", "inferencepools" ]
-  verbs: [ "get", "watch", "list" ]
-- apiGroups: [ "inference.networking.k8s.io" ]
-  resources: [ "inferencepools" ]
-  verbs: [ "get", "watch", "list" ]
-- apiGroups: [ "" ]
-  resources: [ "pods" ]
-  verbs: [ "get", "watch", "list" ]
----
-kind: RoleBinding
-apiVersion: rbac.authorization.k8s.io/v1
-metadata:
-  name: pod-read-binding
-  namespace: default
-subjects:
-- kind: ServiceAccount
-  name: vllm-llama3-8b-instruct-epp
-  namespace: default
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: Role
-  name: pod-read
----
-kind: ClusterRole
-apiVersion: rbac.authorization.k8s.io/v1
-metadata:
-  name: auth-reviewer
-rules:
-- apiGroups:
-  - authentication.k8s.io
-  resources:
-  - tokenreviews
-  verbs:
-  - create
-- apiGroups:
-  - authorization.k8s.io
-  resources:
-  - subjectaccessreviews
-  verbs:
-  - create
----
-kind: ClusterRoleBinding
-apiVersion: rbac.authorization.k8s.io/v1
-metadata:
-  name: auth-reviewer-binding
-subjects:
-- kind: ServiceAccount
-  name: vllm-llama3-8b-instruct-epp
-  namespace: default
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: auth-reviewer
diff --git a/conformance/reports/v1.0.0/gateway/kgateway/README.md b/conformance/reports/v1.0.0/gateway/kgateway/README.md
new file mode 100644
index 0000000..c64981f
--- /dev/null
+++ b/conformance/reports/v1.0.0/gateway/kgateway/README.md
@@ -0,0 +1,78 @@
+# Kgateway
+
+This guide provides the steps for running Gateway conformance tests against [kgateway](https://kgateway.dev/) with the default
+([Envoy](https://www.envoyproxy.io/)) data plane.
+
+## Table of Contents
+
+| Extension Version Tested | Profile Tested | Implementation Version | Mode    | Report                                                                     |
+|--------------------------|----------------|------------------------|---------|----------------------------------------------------------------------------|
+| v1.0.0                   | Gateway        | v2.1.0-main            | default | [v2.1.0-main report](./inference-v2.1.0-main-report.yaml)   |
+
+## Reproduce
+
+This is a mirror of the kgateway [inference conformance GHA workflow](https://github.com/kgateway-dev/kgateway/blob/v2.0.x/.github/actions/kube-inference-extension-conformance-tests/action.yaml).
+
+### Prerequisites
+
+In order to run the conformance tests, the following prerequisites must be met:
+
+- The [kubectl](https://kubernetes.io/docs/tasks/tools/) command-line tool installed and configured for the active cluster context.
+- The [helm](https://github.com/helm/helm), [git](https://git-scm.com/downloads), and [make](https://www.gnu.org/software/make/) command-line tools installed.
+
+### Steps
+
+1. Set the environment variables use by the proceeding steps:
+
+   ```sh
+   # The kgateway version
+   export VERSION=v2.1.0-main
+   # Skip building and loading the kgateway images
+   export SKIP_DOCKER=true
+   # Install Gateway API and Inference Extension CRDs
+   export CONFORMANCE=true
+   ```
+
+2. Clone the kgateway repository and checkout the release:
+
+   ```sh
+   git clone -b $VERSION https://github.com/kgateway-dev/kgateway.git && cd kgateway
+   ```
+
+3. Create a KinD cluster:
+
+   ```sh
+   make kind-setup
+   ```
+
+4. Install the kgateway CRDs:
+
+   ```sh
+   helm upgrade -i --create-namespace --namespace kgateway-system \
+   --version $VERSION kgateway-crds oci://cr.kgateway.dev/kgateway-dev/charts/kgateway-crds
+   ```
+
+5. Install kgateway with Inference Extension enabled:
+
+   ```sh
+   helm upgrade -i --namespace kgateway-system --version $VERSION \
+   kgateway oci://cr.kgateway.dev/kgateway-dev/charts/kgateway --set inferenceExtension.enabled=true
+   ```
+
+6. Wait for the kgateway rollout to complete:
+
+   ```sh
+   kubectl rollout status deploy/kgateway -n kgateway-system
+   ```
+
+7. Run the conformance tests:
+
+   ```sh
+   make gie-conformance
+   ```
+
+8. View and verify the conformance report:
+
+   ```sh
+   cat _test/conformance/inference-$VERSION-report.yaml
+   ```
diff --git a/conformance/reports/v1.0.0/gateway/kgateway/agentgateway/README.md b/conformance/reports/v1.0.0/gateway/kgateway/agentgateway/README.md
new file mode 100644
index 0000000..7f35d2b
--- /dev/null
+++ b/conformance/reports/v1.0.0/gateway/kgateway/agentgateway/README.md
@@ -0,0 +1,79 @@
+# Kgateway with agentgateway
+
+This guide provides the steps for running Gateway conformance tests against [kgateway](https://kgateway.dev/) with the
+([agentgateway](https://agentgateway.dev/)) data plane.
+
+## Table of Contents
+
+| Extension Version Tested | Profile Tested | Implementation Version | Mode    | Report                                                                     |
+|--------------------------|----------------|------------------------|---------|----------------------------------------------------------------------------|
+| v1.0.0                   | Gateway        | v2.1.0-main            | default | [v2.1.0-main report](./inference-v2.1.0-main-report.yaml)   |
+
+## Reproduce
+
+This is a mirror of the kgateway [conformance test] with the default (Envoy) data plane [conformance test](../README.md).
+
+### Prerequisites
+
+In order to run the conformance tests, the following prerequisites must be met:
+
+- The [kubectl](https://kubernetes.io/docs/tasks/tools/) command-line tool installed and configured for the active cluster context.
+- The [helm](https://github.com/helm/helm), [git](https://git-scm.com/downloads), and [make](https://www.gnu.org/software/make/) command-line tools installed.
+
+### Steps
+
+1. Set the environment variables use by the proceeding steps:
+
+   ```sh
+   # The kgateway version
+   export VERSION=v2.1.0-main
+   # Skip building and loading the kgateway images
+   export SKIP_DOCKER=true
+   # Install Gateway API and Inference Extension CRDs
+   export CONFORMANCE=true
+   ```
+
+2. Clone the kgateway repository and checkout the release:
+
+   ```sh
+   git clone -b $VERSION https://github.com/kgateway-dev/kgateway.git && cd kgateway
+   ```
+
+3. Create a KinD cluster:
+
+   ```sh
+   make kind-setup
+   ```
+
+4. Install the kgateway CRDs:
+
+   ```sh
+   helm upgrade -i --create-namespace --namespace kgateway-system \
+   --version $VERSION kgateway-crds oci://cr.kgateway.dev/kgateway-dev/charts/kgateway-crds
+   ```
+
+5. Install kgateway with Inference Extension and agentgateway enabled:
+
+   ```sh
+   helm upgrade -i --namespace kgateway-system --version $VERSION \
+   kgateway oci://cr.kgateway.dev/kgateway-dev/charts/kgateway \
+   --set inferenceExtension.enabled=true --set agentGateway.enabled=true
+   ```
+
+6. Wait for the kgateway rollout to complete:
+
+   ```sh
+   kubectl rollout status deploy/kgateway -n kgateway-system
+   ```
+
+7. Run the conformance tests:
+
+   ```sh
+   CONFORMANCE_GATEWAY_CLASS=agentgateway make gie-conformance
+   ```
+
+8. View and verify the conformance report:
+
+   ```sh
+   cat _test/conformance/inference-$VERSION-report.yaml
+   ```
diff --git a/conformance/reports/v1.0.0/gateway/kgateway/agentgateway/inference-v2.1.0-main-report.yaml b/conformance/reports/v1.0.0/gateway/kgateway/agentgateway/inference-v2.1.0-main-report.yaml
new file mode 100644
index 0000000..9e4063b
--- /dev/null
+++ b/conformance/reports/v1.0.0/gateway/kgateway/agentgateway/inference-v2.1.0-main-report.yaml
@@ -0,0 +1,23 @@
+GatewayAPIInferenceExtensionVersion: v1.0.0
+apiVersion: gateway.networking.k8s.io/v1
+date: "2025-09-14T10:03:01-07:01"
+gatewayAPIChannel: experimental
+gatewayAPIVersion: v1.3.0
+implementation:
+  contact:
+  - github.com/kgateway-dev/kgateway/issues/new/choose
+  organization: kgateway-dev
+  project: kgateway
+  url: github.com/kgateway-dev/kgateway
+  version: v2.1.0-main
+kind: ConformanceReport
+mode: default
+profiles:
+- core:
+    result: success
+    statistics:
+      Failed: 0
+      Passed: 9
+      Skipped: 0
+  name: Gateway
+  summary: Core tests succeeded.
diff --git a/conformance/reports/v1.0.0/gateway/kgateway/inference-v2.1.0-main-report.yaml b/conformance/reports/v1.0.0/gateway/kgateway/inference-v2.1.0-main-report.yaml
new file mode 100644
index 0000000..3bee5ac
--- /dev/null
+++ b/conformance/reports/v1.0.0/gateway/kgateway/inference-v2.1.0-main-report.yaml
@@ -0,0 +1,23 @@
+GatewayAPIInferenceExtensionVersion: v1.0.0
+apiVersion: gateway.networking.k8s.io/v1
+date: "2025-09-12T11:05:01-07:00"
+gatewayAPIChannel: experimental
+gatewayAPIVersion: v1.3.0
+implementation:
+  contact:
+  - github.com/kgateway-dev/kgateway/issues/new/choose
+  organization: kgateway-dev
+  project: kgateway
+  url: github.com/kgateway-dev/kgateway
+  version: v2.1.0-main
+kind: ConformanceReport
+mode: default
+profiles:
+- core:
+    result: success
+    statistics:
+      Failed: 0
+      Passed: 9
+      Skipped: 0
+  name: Gateway
+  summary: Core tests succeeded.
diff --git a/conformance/resources/base.yaml b/conformance/resources/base.yaml
index 7f4a7fa..a421f50 100644
--- a/conformance/resources/base.yaml
+++ b/conformance/resources/base.yaml
@@ -200,7 +200,7 @@ spec:
       terminationGracePeriodSeconds: 130
       containers:
       - name: epp
-        image: us-central1-docker.pkg.dev/k8s-staging-images/gateway-api-inference-extension/epp:main
+        image: us-central1-docker.pkg.dev/k8s-staging-images/gateway-api-inference-extension/epp:v1.0.0
         imagePullPolicy: Always
         args:
         - --pool-name
@@ -298,7 +298,7 @@ spec:
       terminationGracePeriodSeconds: 130
       containers:
       - name: epp
-        image: us-central1-docker.pkg.dev/k8s-staging-images/gateway-api-inference-extension/epp:main
+        image: us-central1-docker.pkg.dev/k8s-staging-images/gateway-api-inference-extension/epp:v1.0.0
         imagePullPolicy: Always
         args:
         - --pool-name
diff --git a/docs/endpoint-picker.svg b/docs/endpoint-picker.svg
index 3ec8eed..6f4b9cf 100644
--- a/docs/endpoint-picker.svg
+++ b/docs/endpoint-picker.svg
@@ -1,3 +1,5 @@
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1452.6284042512102 785.1072998046875" width="1452.6284042512102" height="785.1072998046875"><!-- svg-source:excalidraw --><metadata></metadata><defs><style class="style-fonts">
-      @font-face { font-family: Excalifont; src: url(data:font/woff2;base64,d09GMgABAAAAAB04AA4AAAAAM5gAABzgAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbjUocgXIGYACBJBEICsx0uG0LYAABNgIkA4E8BCAFgxgHIBs+KKOitFNeRvZXB7wh3tQfwLtareM4EQSGXenHllydGFpS83eGbhpiiccToeH5ufXe/9v/i/qLYoNtbERuhIxeJDm6JR1goc2dgA1iFfaVmSgq54Un2niFXoXV8Pz/3/9v7nXOBXvDAyrQ30fz758CDT2OMOCwt02arti2uDmGviQMhTAGpX5o/i+nKV011z8zgsCCZdkOLdiLBQDLLpzSvh5773F9da5ix1kSGpK8rrPOAvBIUyiA/590q0/+76C1U62+SqUGy2+v+tUV/aSdaZ9E2ADLJMF29wRYs1OZTP5vv195EEsMjSgaCZVkGUKhlPdlgPsGs2Ewl2QeEodKenxMdhGxtp/2N3lpxE2BtpGtdeOWktbP8U7neBeqGy0h9FxI+SOfK912AAQAAwFAyC4uEBSC4H0BQKNlQNo/TMkG0puOtiYgfWiraQTS14rJLUCKBAAgHgVe7tpaAOUqAM7sIsthGASgikDmYcefM/l0/kPIAxh/AALDra/+532NQa/HT7aJp3W9dwHNaLwnYfzuB+q9PoCg8fIYpm3s/b2LhA2/C2itTgYUO36R50xGbfZ7Zzr+z6t6V4Wd/KzPgfIgkXnDIPFulPE3gz+jGojvDUe8F+P7WYK9XqZnhKw8AcBvl28VOMSpPc+ur+fmrZR/T3qWI4XidtMUVDRMbBwELh4+ARExCRk5Lyre1Pz4CxAomwujghB4RACATV0LVVwHAyDNCwCJBE5AbgM2TONDSAjRpXEUDAJcTELiLGwuE4OcCYEEPPRFru3xVU7ur2LOaejSXhQAJhbAp5wglPDhBiMHZQg1QxzmmCFSkNI2yoXqjRHixpi8Ng7lROzyWFDEL4oEBbgOFMIQG0NcjODbJxESwYgxlRSTqTBGg3EBcg5GkDAAAEMs+Y7LCM32EWQQufWJcnGymGvDpJC8peL1qa4C8D/aqltihiFIYXSLzhEjCO2MUyD35kGCFcBDSRwbn8paECokgPkHahagAzEiZHI9uQ6IO1Xt2pcazXB8EDBSXI0oxMKQJIYEHEQQmXWTXb3IKFmUfAAkb2YCz4V5A46hZS1n9jQwCBQ6xtS1RJ7lq6kbAGzpBsGv6/gp8jugCvhDCoeYpNdCQYF0Mn/BQkUxsrJzSuWSLY9bR49b9f20zWYp0mUZV2h7tcfHjr7z9u9efunFQ88ffLZP96E+CDZdUpYcgNAOKq0aDzB+ANbvsBXF0ZNERNXVWyG7htp1D3UJoZcGN7c8NY4cQZLZsz2zKrZa7h+tzEhvDef7iCLjWP6rrFyzVCbUpNB1mSWeAezI7aJke3qRM4wNnS3VzlZ/vJHeJm/MfiuFvLUIIx8Alwv66UswuYah48EtP7MzvNyfgdSUzkB0PdelfOWFtspblsOCAGj4eEFH85IEzV7l+cFcN9ts0ci0PKLRl4zUx/gA406Eh7J/DOKLpASTiQk10lb//7Blq829Hj35VzE2sqWAAY1YxSjW9LdHpRv6MTkc9g9f0ffJJvWuGEn7ZOs95iLHXVKSTJLl3QWe7hiq3ap/Vi/yOAKfyY1KWekbsv+ZbhoSmbD4pyS0XKPzxFNJqmlW0pIkJbh6FeApSDFeaR3ZFeZbFy5o3mkyNuoqkxtwxoPeGSYgUpFt2xgtgGMAkAvY9z2A39Q0mSYJrV90FwoYTBiAvSqLdzaLuWiyrcYnrFK0zD2aKUgF8YFzypfmsTp6vC8kNIhBTsLUGoGhnBArbmRI3cN4Cgankno5XOBkiq4m+Oqrl1SThDaDQnRjPkdDWqtZs6lGSOFqgvO/mbfzHHgpGVi7agX3FKt/912rEL5BWTwRF9ffsVxCHORyTnk4kAVUmikB0DVSWy3mmksbYjzPSUJnVE2TJ5QfTBE3Pqk+98c6VkjoOlgA24WKiWeonHFuuKy0gzfkoAQXpQeqqRls/w2AsMbXkjWacVQQ+gAwZSW4exdgQm6CE5B43qjWPfOOlbv820IYXf0xGSu3Prr3uKIn4W541XoKhnr5xzN+tLAqFQUZBVps4DSKMCLkmKf4cd4AtkfQnC5fbGU04lpRIElOJJAkSefohpHp5YzykGa4zInr2ricjGUIQ8vqdiVZknAJJGkJbTYDZzxF2LgYq8iObIwe6KaEj0GaVkpX9N1VWYC52El6e35ppZAO17yOQzp0DSnFpLoMwOsDNhKkjOKKbmRHGCPbFhy/dBNikm6eI2GhUqF6JJT8bQaD+maLNv8mHxoYgGVZXcuB9FCojT9kvsW1iGtlqh5JpqCNq02BmdO7beoNqYpwFTOMOQ5OKTnhLYzp77JoWSnst+WM65jrj7UpxsIp0TSqabh+3hQdX3lxRysKK8WJuSTfglTQ4a68DeBZHsa9wbWsOjQ3xecq1W+lZKSFN/rlMOqIEpRXy+P7tgeTY+usND1yrwQAni93l9CyPNj+NeMGJ3UmkDvV+RljMi/KMrYA1gGYUla/G07JphgO6VoVqxsfq5wbe2pYEMvzQS3cH51UU8TD5Ep983qiXvSPX6DvCZOyjCUKQ9AMTMnxL+U4p9szbVZ/9NXLxIlXUO98RyViRw2A9fqTJGnFtRCeJlRFkaF4G/m9KvoWBgvSbklOpFKBS/oYcgHzWceqAC7B1LUaifWTccubi0Wac6MbOi+9g3sXlQBXkda57Z+MiNJmpikoOG3BCRBrqyt35/vtjz6qKc1z6UlGSkdF4PbiLXnSNCFgo5uyX4EykbRWG+074TnQGFTACk1d1MgJnKBDO/zGSaZ7SJkY2VBNMJqY42VclV//I4Q1A1ILW0a1lPF0e5T1TsvWNp6OFgdLw9V7bNlmWxHfz+n4upCabTPZ0PjoQ099Pstngu20YrgoRrfLqSS/AguDfcqG5uD7QTnpXiT2sNLu3Hl3jzeyS1k18GUfZOiQmNBFmL5cFOs+Dj5PcqOFmSCOTU1ZIxIWmltYc5Yr9bOts3y+d5pGXIwMvISDvQ3R9JnsKB8E4xwHANL8Elv7JXO7x+1rSNFCIJbsycgS/7CQeobv67099pGW5BdXfKGXfzr78mr2aaY4V+uXzMSwlQShHa2toeyGFn1xRe6mlWNNitxRiQ0QsdlwqPMOXYjbnR/HJ3lKmzOMto/FfLt+mQYkrcuQzFnT5KuzXH9cx7TJb78gc0mWHNlZzxVhhX884TQeqLExrvPlbmW6otkFLiinvOfKTzaLuT4/uYXU+wKEJAl9ku6OKgBgRVINEqT4C62YlpOlam2RyQbt7cVJCVZleaVQbUU/TRlMjoEkl0n0go5LO/xcofaL/RfJdV3bRlf4iBwi31NIhlR1J9+bp4SFdX6F+DFJN7Toio6ujbkwvo3r8J+ujYgsCj3VUQMV0ffPYrHuCYx8aUE296+GEZ7Z/gvypUT6l/xi3ko3tWh2fIxjnHtK6xckLAqVhnhjNn/1Ftd/3eIGX3GTmiyOvwg8awjPQmg9/SwnNDI8bA6OWKYB8aQSMLldmqor89zribwhvhsXXGU9OyjyXAmEJprZ6pPYCM6JfT6/xPdFSFWFjZsodBkTgrzfVxDAnKoUiG6EVIaP+3uPsmN1S0+WnCHXVo1Z9bbp9/uD5SAkqUrBhnNODCVIsT2ofF2B1AIdExLdEoEBrN5sDmILtEFoIMlTjWSyX/7WjTj1VBK9IVZKIIh1gbe2KA+HdHyUo7Gt5E5T9IUAIDQf/C5vzrWoQ7faW0jl7+c9A5iE99uK83kKAmdArCtBA6SwLoPXF3CMk5/BchyHWPaKDk+hgW++fP+ePqfXaLNPpsU7JcEEQ4E8+FWtFDy6/9F6Mzi+0Uh+vXty79OH86EgYCDJmJSmlWsTgBF0FfQtr51LktfVhZiOq0UGRxhtQZgt7tH7a9zZiR4gZXCPpAUpkQUCEp/8sxAVrdWS61usyLvWJAwBPLyRV3NHNO+ZE/PVeY3+3tBsMZoLiQY5ISJzbDpNv1r7tO6OG0MFc3w5e5A0PpnNDEBPGMh6JRWUEEsYGQyg7tuMdLaV412YpE8/g8mqjGNCgVNI/gaHbQ2c6yQ8F3CRRZf285DyDnrS1SoTobuEkY3UQiFnO6nrZIjtCA9nBLRP5bOLFTClQ0a3l20m/CDW7nTMscHXlJyOB36GkfINd8sd9mg0f3eBdUQJSpwpbzGlIACkd7umDC9S+lB47px6wgvEOXc6bqEvl2FHCGYR8XCL1qML7dhPle1jR3hZQeXq+A7X+DC/y25EhzNZ+oi70gs2BOUVzeWT/CVzjYIBOUy4vMBIDcOvY94tjerMDR66CUwMtrcvCN+CQckAcBN1jGwcgChRGJfZs1BX0ulVgJeg/+2SFdFdbUd8fl9JsrbZCjvnudZBCg9lqHTN4JrOybC3lZTSuee6NFFc1vC9BngCMGizA2BZnuyX/k8DFXbhkStfi97CODGyKSLR+wjIW4dJGDv0bRHTxKic0zVEH/y0+TV96DJO+6/Or8LOkDJ+vWg+98whK94LpMbo8Rr7eLlZmbC3prcVV70Gk/4MDkYkRgjbadcPhFygibGRNUS8eFLtlXS5JN7/x0t3tqry5MHUKOrD7foPsgtpSUtINm3YdO83x+oXObRkoivxdGbaGqNGQ5R2xqPxfEeuZXJZ04kE62KqiVlu2fl8P+dCyjec1Zc+XsiYDyYN488xHgXaF0H15oaxPR4DuInY4JXbmrvojOUdIDg/nZAArKUeThoNL5FbmpRVktXUfHno5wey60D9TWL9p3KR46mI/3I//qB867bKoYKx2nkrhOW+vV9aQPCuQ2fFJZ93k7aU9iFSC1hytkAeSTjanvTvpWe8ur1QkxcQM8W2qOmCvvCaNowCJEGm2v/k8y+XcZQDQwEyNrtgfh22UpOaH5+YxfFRa1x+IXNpXF/Gm8KTFlKYZw6SjZ7/5Hwb9YA8VHQ0pvZrTeYyXqxGl/R0lSCf7deE2mA3OgtIwplH/p7sZIzIaKtz4EpLj3Adn854iIWdrK7ezdnjzXPdKM17MWXg2eZgq/k1vxh2wknu/fxTAK9ne3tiECKV0nUshNs31K2BdPjJb9rwVMJJpmTz1l/ZiT3H3ApT+53D1doQkBfyWmn+Xlvg3gTMYBWMW+A3ctyUs1lQX7TCVGiU1bUrMGQqh4Q8VFpftcz1nf1lOnJOOtFMcAC8cdg6MXtxyQhBK/7n/xfWwrVprghji6wfoJnYSpTHsuV0SKZnzEsWA6fyMeVEV/XNg8h+V2vmoUMYmZjyprCOZkNoIsoFO/UiBN4pIpfvwegfPOjbX5kVPT6snowcW6bN23Ci7J795+v3yi89MHpVE0vY6mm2f2duodUmhHFtOTg5Q5eUV9VV1CLDLRNOQ2MCLCSZeM6WJB9q1mmwlcEfzyl2YEvj8QKKmYIX5JSFPyAbLD7Uoxz7iODPPYf7L+ztkm7VTFi9Zu1VcmLU8Dad5sAkkk20wyw8/L4Gr3PX+gehpTILez9t/6B56Nu6CaOZc0h3pojSPTSZ3sfnO0g3K1oNiJcL41RPwchpaDb75h8JM3b3LmOPlF8p2D6vOQPk+FcMPybkqQb/HlkRmNI0IdVaqW/OrGuc2uDYG5ehxlotv/Fp29MQfPLpN90BfXuklsoSksOQZSEiFwlanCpT1BAoI1WRjeCI2vO0G2p7FubgK7LR7BUWxVwaUe/jTKL4vQYFkqhZfXWS7OA9xAkru9XxK4tioU1mEYdTIygRgRVzUwSAk+s+sDloIFt3rfdnsfPHzFt1moOPMB4qDUM5Zg4KLbBT8bebYsBIyJeuJiYBV1yI/BT3W1Qx2sYna1EtWVDptRoEgFccahfrQA2lz0EK+depVRdGThck6QJLgyhYGfxzTTCdt52ZtOuf/Gf+JTIetaDlL7USFmJ5WzMXZ84GhEftHCraGAK+cow8/DrJ9VL/Ka9iXTCeOxng/ug8i8ha1tKerzJOCI2BVHauhytuQGUDJ5VX0Nth5YL5qzsG0pK9sygCS7GZ13/2IR2/Ze+5jMxSaxJ+Qds+9corWoPlC91CQGrrG+DssB6jGiA40Ik3Rm0Rksj2WBALS/rLOKm+XYHZckfl9M4AWCKc118glGFmS4gBhlBWeUuSVY7aktTgTK+kfJaP9WrF2HSR7qqHZSQwL623Q6p1+zTCXZ/k7k8NEmxKTPUJ3VHXMW/wKajllQRDE60wyWNZym9Ilt+JDr0+Uso8krMxB9uINfMq1csDbaWCQ8kgz/bq4RVx9SSTemm4OCVWBBRMLDG5DwEHerjtxEPD86GpogWADmwZcfsI9YrQ7STjWKT3z4AhrURoHkCCtCNpqt2fFnlzQsZ81ujgp898DDCJ+lfvmiyrLqfZd2Yc+86m/a0uLZyJHv958Tw7aFvxxnR+VWWXgU7u7UKKoYs3Ubt3VsSRVBkNO78h2au9NzIxbUHpc2Nccw04IDGH18A0Mo90JYRVrHVZOOlwTqvneGdRwI6Tv6n0X5MlKsYN5JoF6FY3h+ymOeBYEikQsym9KHAdxz3gZuxk8MiGhwbyX3geuEahUddvQ8VzVac4l8BquiZhsZMnj6on1QhL6j0DX1RaLBGvX7CaIiWuCJui/FOn5mOtLetY3tItfWLu4q/PehN1KdqptEd/JNpf/X5Rnb6WicBwiIEH70UC5uRIil9f7eAyX4nDw6Z3eCdHUR9ee2HOq8ywzOzxqUgjdWv1SSlL//v6a3ABe2gU+yxtuJueIwiAAdYTQdWqPgc7HSfq1+u/KS5aJkoTqYrES1nppLeAHFi5xzakjvhEaPQ1t2abSog7cFaNA52ORySRwvvzD7lJ9VJAo1fb/ZNCqMUwazaW7SH4jylo+J5YQ5M9IrO7ZewlqGue+g9Px3qvEJdK7164JiVCV5DLGZ7x5XA2YX/21+YgdTr1nO3HnK+JQlDMHJRmPKni3H+D2VqWdwrLfP8wDCtrRxI1w4Po9efR11f92ffYL+IUYord8TTsbSo82Ehui8DF00vALq7uyuje11hGPE5N/2hGGmMsyS8BxdEOHNMKq9O4nFIk7vijTI81EcClYTSqvVLVhorQPJmHIcnz70ic3/yfpKWFbXcODUfscB9Ril7mBcWvEgwgdmp2TTjwzb2orm1IyEgRP6kabM1I9CFlFKBCQXjTj1dYuytTPuLNH75vbtOo+A+6XMKMdJLJ3+Jd+Nc0cvtzI02OZP0SvqxVwP86rG4AHKD1veru9J8h4JrnzdhdIJjr7cXpjTkEG4WSjEXiiEPt/W0uZOaujz59ySU36Q78/H/FRfXWLDhVGxPZxkyjOK5fds7ivbyxJiEQPBV4mAVbfUSSqRQyRS+bS8e/TwX8qTxbVGHzBoMkrULEPWVZ8VKFgtFOamopl5SBLJugi+2OcdAi8ye+TIuyAzJdSydPO2p1vX/SaFNZYmOdn9aeJO6rFSZ+mRdl6iZ0d5caeOg3pnvVs6Ypqjd8H/QHeCyg+NwMbBOxzX+c8m+McE5kMm7TRT0qgJKYoeFaJJmLFiFC1jt/Hllv6ivfD8H41UU6l/Q0Ea+wFbozw4VCpYPvlb9Flh8Ao7jWVrD8/IPXcgVtV2cFj3BlrjL0hM3w7oDRRB7RLf5mB2DKPXAXno9L5X/6XPpO0DzpRjBFFQqRUP8GsHez0RaoK1vtEnqFZxs/HRSrh5snizmd0Mzzv5iaFlaQ5sg4IWQtyGdCy4QwryOLfV+wwpnFLMfnrFc/rw8PvS0Wpv9dCHZ73KuyLjFqf9vFILA6FLO9ujDZNfQR+Gc4vrzQKb/wxcgcK8s0ikz1rahWBRyHCAVDSnS3g6zD3R/QRj8upQOXR6JN0EZbpj2qJiPpWL2myBtuc4D5PNHwj3C2mInT6F9KEfrVoA6hzAuZS0btNGYw8wS+yglRq2LfduaMYTAD7ChXb0aexggZfUVlkRvfPsz3P/6cH9XOi88au7tvZdIgpQDmnZNv8GFMu5A9/j5aFDwLqaLqsizTiU3pm8JT/u1Hvk/Mo7cjOjAhJbxsMTiE0CTc2jqusdhnr0OkwihKY1RkJi8krXXActrLSV8lJ6eiVI75kWKoIZAVBc0Hb3nnTvIeNSi3N/Q2HvS053Az0PNQ+pdiIvieFFB/1vmWVN8QUL/X6Lc2MakncTjc9kVi82zZ8xq3VpHslyt06m1049Y6qMoOCfK6dJLI7rNQfAPpkNb86GAj2Njmdo/mniF87bTdFFArhZnFVMvcR1d4VibeP8VT63jPmPNfS4JqNDNiE4mKdCnxhpjqFesmrD4b5yFwOmzZezUv6MnsLbNZM8By736WhU8+oGKIwlVMuH2raOeSos4yPpkqXergM/bYZy+k8TSLQJuQuSQ6dufYSDwLdaJCxAKMVt4tjT7sb/mOAwa67Kv+yKnBm1NNOVJjpK3yugfW/HuxOouMKNHHukOWqQ5B5gJyxqPDU97eubng5f+Hch7nR5lKH+BEq3LOHMDXjxRprh/V0Gf68B255gt3qfIDlfd/Nkfz8hmD+rrjE4U7QnxRd61GN3rAOLLzMzC/4qWNc0BUYmPraen7pB9qIrRPXYeMH1un1c+yk6bw9w6O/JBhKJ8ZlepqVcwBowwMjzEu/GNujTgTSZjZ4aXYcbArMnxPnxha6TlMLOQFT6Wbb0cVIYhaExOa+V2l3xBVfjqpVpbkp//2CxwllW9nKUMDffSkeKb9yTtuAfgRJ4ZOXNGXSFz7ponk84EKKoHa9RyEoWZJY3f38c1PH75TifO2bpLeLrr5Wxa29oCCNJjCxn/WG6dbsq0lS6J+MO4iqpVmrRHDwWUWqqDfMI1NXLNgUngs3IhgPkwiUEXkzcOnEtkl8tk28qoAc16ysa32gQ/qNCuTsUCu/FJIzUZd1sHoX+CWnMcVht699taIJJUpwXZ1TDDNIzNmInDED6SvbyTVJ3em15r0Kwse1+T+3B8snJZLIbX2c3o+i8uqMKBbJ2eaos2rVs8W3OIQmQordwJEkQDLztqieINVIHToiQ5F5c3wN0HS14MZnSuXF5j+4tAQ4aVF5hzx/VDwY7tilUbJKI1e9nn8iut3bdFKSdUtj6ImYwXNIZrnR7ycZ8cCH6HlrCD7tRnrfr6T9y46vY5kiVuaNUssU6XOSGiN+A+J0bjF+xO+CIuKoSZ4S2nAfCTzlaY9ovWGQNPlr5pm3tCp/MGjE9EtPsfhRRryK4mfqPhnzJbJ26KH8uhoFXMq7X+acMno9h9kU5J7f7/e/5WAfCzIxPPIxyqXEOCnw4erolF6XvIC/Ds292OiSw3cxP+yAoG/3bh84CJnyn2kCE3u9g1KCqLYBDQXWyBwzv38/gT6CnDmh/zhq8xOX2LtraHFCNsP98GmzDTdpelj7biamZEOvnRfJ2YFvW2Xq11Y1v/6awd4Gb0/HxrjmRS8oZIeu0x9XrDj/igI/QPMxjoCLEDlg21/zxz/eD1z/jXn/zz6IANv8F+r/8K1GPy/q/+/zcsNHZWs1QvAb0G1gl9twIsOKSGQ7ACQT6LBAMwMCduUHn+fvTzjRf+cP+BnHHBzkjEtqKMAHFxxMfBJoMh6RZES/pHwqMdfZ0FgokR6hlOO3hWBYGMgImvEhQWik08biajaSBcvfvEHo6YLEzBzRHDSscMVVrvIFF/dHwKxCHUHYH7Iv+mhBtgIVwgFJxUA0OT6wQriO2uFYNlvhQrQZUWiVmlFlkAN2O6oAFhNV6VCk3q1JmkxWbBMNepMMaRVaJOrZbRpV28rqKATQksslt2e1sFtYkcwonAI24DfEIUNH8X/6g4o6l5t9hZZ7NLEsuoOGraCecPcOixQ70Qn3gn8HMB/w8JoFUTsoNLaVsFl1dp2bJoQEzNqotYKPm3XoGaDamDqoEC1ECi4N/4BGQAAAA==); }
-      @font-face { font-family: Comic Shanns; src: url(data:font/woff2;base64,d09GMgABAAAAABD4AAsAAAAAHyQAABCsAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQRCAqjSJ1QCzYAATYCJAM4BCAFlRgHIBs1GzOjwsYBAFEeR/ZfJnBjCNSH9khnUltfq6qH7TT8FMexVTWjh7o+p4gz8uPaBoz4cwyp4gqqlTjfHSHJ7E+07Xszs7vEJiII30UiVcQsohQLC39VXbR60XrR5UWU5/2I9tDNxLNMVxHdkFDD6yN4ailW+WX8ACAi7tnv3TSTNQkFlkESWJpAEmrz1f+7/V/Tza52r1oOnUlsYj8floCm8K7/N5f9sTM2QCVAfZBkD+H5EybRtZgC4kIZBk649j9Aenj/a620Mwm7tFthQu4ibISKUwtvf7pn7m/XbMKTf0SdPiDFUD7oUJGLBAKPVD7KRHiRYeyiB2hi6trNGCs4rnuIq6IIxbAfL54BSF3oFjTAn/YASBxcGD0BusDRtoDg3xc/FfhZrO2RMZ9RN7cEAPpbqb9ex5bsEIfEpyPQVFG2vB2ZhOBYRDRr02Gm2eZaYIkVVlm70RJh68qpapFlwZp/g+1dE2NDFWUlBXk5sSjkSNAwCcCYSVhyRQtg7gCKBwDVq99mdBzg8eeH4GkaN/mJr5NmWeRSfYNbV6yPlmaV8UW2eDxTV5TZkkzmxouqbNd3gSm77t9nMOGsmhf+TphSh7S1iCm9HDWcL/zkEKEaJXjzRE/KE9HB0kqBDNKpBjwuL2d2S/UpsAgVCQcy9GKiPbH1RgdluVBWNbVy6/SnmLjw+qQoxXHO3Zja/5YP6HkIZjDh8hBCkVIQZL+XUeF5XjepByzUJUUixPeK8Qa1qdteugSQzDpFKRuowM/Ly9ARZ8x5fIjQ3SI0EITZI0sK4qynbQXaZW6oy6JEj4sE+uzxeY6JJsaJBkAP2GrkJ52lJ3EJaNtfVtS2R57PeQccQDP7oK/qqZXz8+217o8DGp76A9FU344BQG4SFsfjCJf2tt66dqB9OpllLwlf3x8jHIpyd3wVXULYWdEm7i2XAsmk0ibcaQvTyc4CwGNbwh4ZYDfHxP/Glh8FCmpZtLuqMlSf0qR4zI/4eu7Ywb7B6OIu4f3YuokiZT74IkxfPACru47GbDMhrfbGCF300V0k4LzKhGUJYAM0BBmxx7gAXvq/ezETaGLtcmNwywGh4Zb2/spqo594CdNOmCYCgG4Xd8uYcEZFjTI0CMsBmghflA4xsRX7oWCxIz/NzOoZZ1RvenFe3EZ4fJeE6FlUMMu6CzOaJ+NPBIZSCjk2GLi8PT+vIlIITexH9eo5JnysXQLUrQj/bFZOMeHUTRGWDAQucxmJ6LK3d0aqqsbU4LDttUX7eFcjY1PxprnSB9oJr1j6XIgcXesCSeSLvgDMo1bc5c93pagpf16Wu4RFSA+bVYpTruELbNrYo2an0suYcPEivGIJAD1YTSsRJpPr2LIZ+SEmo7JHNEJfiJTiya6fJ3w+bXeZu3Cpa/PqH8AbTKk+YktFg2FKhmOa663qj6JTanRb7ER6ptj9B0OenK71r1vQjAZST6+s5gw1Fu8QptxTPDcIOGZAkAsFU9i9///VN68QYsIFgxA+Y/4aE7UBIK/1UU/LclYSvdpi+FQ6IQr8naX0vtCYniTlXqzAMiHn6PbDTuAkTomwyhWV2HqCJ+6YX1vawkQzP4Xkxa4rJsNABgdh0FZOzPEhQO63KURvFhYupgGADEwHJatdaX+LQ/VX/Eh5spJuZwmfX+c0EKaXr3j5VxThR5AMDsLqpdQXeCzVZ9DJRaoAkOXkpjxit7oVJX9wNXwvlhbfPnkauCdPKKQ8UZ+K/STDsodQwXg1T3hXbl0H1omh+gBE75mo/SyPsO4OHsOfZ7sm9d7r811MTE0pKENZjktQ9V2EBsgyHX1/hZ91Xl89CIelap8W/omAD9Cx2HHOnmev+le6I0suRiL6RuQ0tq4lNWnjs3TI8mrBh0Hrv///ttLCmWMaiBLp7bOdoUxVD/LNQorCJL0r959Dap5UKt53uwcB/IN3CRf0xqKjiqb8X1rH+WlTeqxK+T5GFntJ1RoYomlG80HvTDrg18rJgldrHa0wY7WJlnUiAfVrmsHyOY9Mpya1kvZlI5y4cH46IX3fTfG2DbbSP1J4Yk3eNCpFRYlk2M2J+41iKz2ZmUybxXhWvqe/ezoZx4y8oNLPG+TEZ+/TEwiLE36XMJFuezU3lb5K32cYUPoXKW+hUyQ6sSwdaBrkAQmhgl9lLTunuVC1Rj2fa194a7lLwJi/2LVNu0Nzm9Q3xa3eyMQSXBff8HpdV9QhYsy/VlfFPsi9wt0XqefU7uSeaUpVv+L+DvU65f3M0yi6RreDipVz87jut+CU/vm4uzj89x/5FKlhHpab5q9sSTjDcrcjWWJRkmyiZBrm7PFFh5oEb0vB2OI8/RyqlWfo7LJEuKOoJNh05AWH2aKjERtauQTQL56VdhyoYzoU6efOpyEMf7yuJYR0ovl4I8eaBLVFSLP2qJSx3g/tr/Z/r8hPGh+wNoollvE1oQ6Xd6UmTJ3gUUxbZTD8dI2tLuxkFhltX197Aeq2CjTx72F4hL9Tnh3IlH8scVj0X97Wbgoz2kSZSee2NYTKZ9iC6sLpzm2uv7JcVobm+0o+yzd/c3DIaP/hwSBOudzaoKXcm0rUTLOURaaVwd47NtQ7HSoly/W8NkYpXf2lhLH4y9lNWRPNsxqqy7YEnb8ZwpYJ3nXx+BTTrKjTdl7f18DpDXeVDa60k56efJ9ZW/yNuRnO0UpSN4qHoUabyxc1bDPc9B1Gwq/7rXXQ4x2XB2PRIGtefgwjad++LD0EaxO9kYzC4QZb5uev5v12CyaOv0d1DFehrqXOcJGl1TKw/uIB4MvrWKHn2TP9RDnVcd91Po/2xDOJLTkKpQiGxLdJhvE9fXTS+/apCrb/zCaHQuhflJaIK3JpejhmO/vyip0QaMtdE2+e6Coqbm6Ey1m2JSNTGN3Ax/m5hypdTdbqoEasowgh3o9/SySsw764fgs04rVG+27p2BuzMkUrqcV4C96UrVKEV4X2yabNb9Rv1BsUSgkkQfIZFG6EX+BMta28UIPhn/L+oVfHU9QEKA4W+hf7S6x1wZStSFd0bNN13uvPlcyYErMkTLGMNfMOFRJiiM5Ka0+bkEYR4bHf2wgtftWqfSB1f27fu5GMkMkyfhQOPx3Kj4MWXnxQsKEZi8mS2nH5PZGKlOyzPvjLOdl19cgHd2fGl4xVRWUNXR21V0+A5PplEPPOjNVNkouKH8+cy+Q42tJ3BLUUNUXz8B/ZvKjT2kJ1PhPGFo92jJ2eABNbzC5/mywivB5dh2/AbRan/r4bBI1Ll4+Gn6dp9hhzlT6Zoi1kJl4KM0SvQ4MNJkF5LIZ4+bp7RWH9fWZ+EiyDJZClN6QJG26E555kREVea1Ft0D8VJVGCDfAdHvnJrySEpYOsuYpfkk+axtrM+qmfbVUoOSPvVTcbs87v0yA8vEMtrsOMoSzENLKCfEHCSPPHE3oarhiGG7KLwl995qVIhTylItrpKc9uMlUGT71ZJYjMwpaa5VjTQkjZ/S/gBlad+iW3sqJiNuli6MD4xZD8f9GR74d7augCog/obbmRDDlzLrQRYn/l9YJQLHeY50zJ/6IQVvKZGZ9/KR37gTORh9DL3df5mpK9akigBLSVyxjM/u96d/irxjC0RnxI1lrjlp3w7k0m/paPrzz+10vTD44sNCCSXlM0+aMCinvsT7NVoAhG0lOekN03WoMww3CcV5VkMTLuHRIxPrZFQwOY1leEFQlWYLSaL96Q1RCrrefUrrY9D3OqbV1PPnGNR9uikmxpkqHqu2YpkezxxB9MPa76545OmiK8XO9cpmB3XqhKXDXXuK9duJTGvnbb78yHr7fob9nzoYGh43n+SO74jKLiiXnwvOILbZ+BYcJoZidqUxly0yqKfMb9grjPqOe/ozJYtb2c4zTSalkjKxRu8Za5RGvcL3K7DfpZ8D4mEVmhVAjKDN37NKWb/tFXPy8uJJTw5DfQwFSmtsyJB9Z2vp3VNlVgY717lqtVD6YezhwXul8OeLsjAxmJ3vJ+lWra0NIKVkjeL4dyxlWvg3upfxNdre6PNtFzGQkBfHlXPaaEjwdSX5/ImdoYWXhaSj/4uaf7yVPGnO/razq67LiA4u54vI2i+XdeCCZfBc0dLY0PeYRrny7EKB3gBtf4B8KbLmx2T2W41z+frFOwC0ZrV71SMX/cJ5kN0wTWtXXPDla1rethQ1vicUsop7thwNT0gas/bfnQg+UcD3P9vTYNLdRyYzL/k9hBi57ltDpeNGhfWDpoliTR+6CVopuCgoCaybiVhl8E/lyGND5rtMDcmIwHBHEv6QZGIJ0BI9XXj579+Wz0RKbY4dzhnO+t5J2pgPvlb38udEDe0uPu7d1ytrsIP8K/P3Ime8V3cutS3wptJHtyWNVwbSGKHPmIOZZ9Go4jGcnfAjuW471byc7lcoeEdyBHM6Jie7I3B8SPA9lXAl3bn79xz8rtzp/ddjS/4S7mNz70Z53K77zHL1WhfwR2NMfzFQQAALK/c14mizWnlSzZBwD+UsVfAAD/l9XZ0f/f9OHTLQCUMAAABP68l3EPWrNtGmGOPh/OKe26AOAzcJLly5PDLy6kSkSDgBJhFeK6hFUq4eMV2H/6MW6l3U/BABAEwA8AT++nMA6BTioA1dtnt+sRj8H1mODy/+vfzebcj/T6T5SPv8zne4EQPRNr6RuXS1TTHS85GWGr3qk3BXqJF3G46R1oN54JY0DNh+XWgDJda1ArwmbYPkK7mzMzKCfNVpzFPHbS3kGoeMvrMySei6EIpQRyh7eGWGhLQULHezdKVbsTz6FECRVPyrPnzzg5fx06tdOOAmtcTKLCG2AbzZLpbEhNGxp2Y2FDLoSRDdTZCem9VBZPHeBxjmMdktPT2lgdSnhmrI6Idbgn4DenjokEPGYEJz9RdpXdBJAx7RjG1ogUUhxbgHyU8hVkI7hQ0xJSJRcvC+WkxiJcGBMJR4849hSSBGX7kqO9DosYbLAajyQ5R4njRq1NXGIGkFzEA3Wk9HJcmy6pIPcQCEa0CZRMuPBwJwmhiR9oIM8Qbc0AKCCpdTpibQsmKZQTccfwjxc2viNMRIkQk/3GStyGZwgk7v25jlP+mpgyEvmPkKeJ2eSgrNXRmDpNql5wI9zIUM7JInlLrDaeTm6bQZDhJjKkfYIAJVGa70Yt/ewHpg65ydBeFM51JNg+D6Kx+tTBSeKJBgcudKECjWNQCOaE+CPRuL7sqiA1TMy328WsqpULLZtjBXt8+Be51unEBVDEBpeA+WhcuKCVJkBPwZkkVA7fqdqZZEIcKaNtek7aunaZ4kSqCAO/ZfRH8YynoCKlbDyP+SqsZpYpTnsh2xkiVdaVhXKnM/JQ9oBlGGMRL5DIfJngHV7wEugUHWEnqSKyOAfZwolf7LjtmAArJbJyyWIJOIiyY6WAugmJeCamqVIJL1Zz04Rn2BkK7KqKcJvIjCwsoUdAhQLnubV4Dw3hOl90KEus3PKkLPNXC7oOxuIQtXWdlANr7KYR/oCtVhQVxYjZte2sM9FCcQrv0TKZFiLNooOUVc1iu6CUxXtakXaJOSUyk/YjviswZlj1FOfEAc80aJxtAtuUztDaLHPOnGmwQzsBcqi1esJWfQz0yQR5G8JlGKbjngkHzGWF3KJganyiUGgp+Go4xgZ6SVAfemJSvGaYhI7BcLhGTHYpahycGHri9fcj); }</style></defs><rect x="0" y="0" width="1452.6284042512102" height="785.1072998046875" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(68.21875 285.1854248046875) rotate(0 57.140625 41.75)"><path d="M20.88 0 C40.07 -3.44, 67.81 3.23, 93.41 0 C108.58 -1.7, 113.64 4.43, 114.28 20.88 C110.37 31.89, 114.48 43.19, 114.28 62.63 C111.97 77.06, 110.19 79.94, 93.41 83.5 C76.29 85.88, 58.8 83.04, 20.88 83.5 C5.01 86.19, 3.57 75.81, 0 62.63 C2.8 49.69, 3.12 33.02, 0 20.88 C0.67 5.24, 5.02 3.06, 20.88 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M20.88 0 C38.48 1.33, 55.66 1.28, 93.41 0 M20.88 0 C44.6 -0.2, 69.08 0.17, 93.41 0 M93.41 0 C108.93 -0.66, 114.81 6.61, 114.28 20.88 M93.41 0 C108.53 1.09, 112.71 7.42, 114.28 20.88 M114.28 20.88 C112.83 36.64, 115.76 49.99, 114.28 62.63 M114.28 20.88 C113.33 33.37, 113.92 45.86, 114.28 62.63 M114.28 62.63 C115.09 77.36, 107.86 81.53, 93.41 83.5 M114.28 62.63 C116.05 77.36, 107.29 85.79, 93.41 83.5 M93.41 83.5 C67.37 84.88, 43.52 83.69, 20.88 83.5 M93.41 83.5 C64.39 82.39, 36.31 83.79, 20.88 83.5 M20.88 83.5 C7.14 83.77, 0.22 76.33, 0 62.63 M20.88 83.5 C7.36 81.6, 0.6 75.33, 0 62.63 M0 62.63 C-1.85 48.15, 1.08 32.11, 0 20.88 M0 62.63 C0.19 51.66, -0.9 39.69, 0 20.88 M0 20.88 C1.08 6.53, 5.03 -0.9, 20.88 0 M0 20.88 C0.95 6.51, 4.8 2.2, 20.88 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g stroke-linecap="round" transform="translate(85.1171875 271.7322998046875) rotate(0 57.140625 41.75)"><path d="M20.88 0 C36.65 0.88, 53.33 -3.33, 93.41 0 C106.92 -1.99, 112.95 8.68, 114.28 20.88 C113.65 31.24, 112.8 40.44, 114.28 62.63 C112.86 74.18, 104.02 84.03, 93.41 83.5 C75.64 78.75, 55.15 82.05, 20.88 83.5 C6.55 81.54, 0.98 74.7, 0 62.63 C-1.9 48.94, -3.45 40.75, 0 20.88 C2.95 9.1, 6.34 -1.4, 20.88 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M20.88 0 C44.26 1.44, 63.6 0.29, 93.41 0 M20.88 0 C40.78 -0.21, 59.6 0.09, 93.41 0 M93.41 0 C105.83 0.69, 115.59 5.93, 114.28 20.88 M93.41 0 C107.36 -0.58, 116.13 6.78, 114.28 20.88 M114.28 20.88 C115.72 29.87, 113.43 41.74, 114.28 62.63 M114.28 20.88 C115.3 30.82, 114.91 42.41, 114.28 62.63 M114.28 62.63 C112.36 76.73, 105.74 83.18, 93.41 83.5 M114.28 62.63 C112.48 74.85, 108.46 83.79, 93.41 83.5 M93.41 83.5 C67.59 85.09, 44.24 83.88, 20.88 83.5 M93.41 83.5 C77.17 82.58, 58.4 83.6, 20.88 83.5 M20.88 83.5 C8.45 84.11, 0.55 76.75, 0 62.63 M20.88 83.5 C7.06 81.8, 0.99 74.25, 0 62.63 M0 62.63 C-1.18 51.77, 0.62 41.51, 0 20.88 M0 62.63 C0.34 46.95, -0.32 30.63, 0 20.88 M0 20.88 C-0.1 6.15, 6.07 -1.37, 20.88 0 M0 20.88 C0 7.01, 8.25 -0.1, 20.88 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g stroke-linecap="round" transform="translate(290.1015625 640.1072998046875) rotate(0 186.5 67.5)"><path d="M32 0 C140.02 -4.99, 249.26 -6.46, 341 0 C361.27 3.21, 371.54 8.64, 373 32 C374.4 45.04, 373.03 60.55, 373 103 C370.4 126.18, 365.21 132.91, 341 135 C225.99 138.51, 106.01 138.75, 32 135 C11.12 135.2, 3.06 121.49, 0 103 C2.24 85.97, -1.84 69.24, 0 32 C-0.72 14.27, 9.6 1.86, 32 0" stroke="none" stroke-width="0" fill="#b2f2bb"></path><path d="M32 0 C147.2 2.31, 263.84 0.13, 341 0 M32 0 C152.79 -1.4, 273.68 -0.26, 341 0 M341 0 C363.24 1.89, 371.63 8.68, 373 32 M341 0 C361.89 1.32, 374.96 8.55, 373 32 M373 32 C373.51 49.51, 371.4 69.4, 373 103 M373 32 C371.89 53.55, 372.75 74.94, 373 103 M373 103 C372.91 124.05, 363.84 135.32, 341 135 M373 103 C371.37 125.1, 364.41 133.43, 341 135 M341 135 C243.35 136, 143.9 136.22, 32 135 M341 135 C252.05 134.58, 161.61 134.64, 32 135 M32 135 C9.49 136.67, -1.21 123.37, 0 103 M32 135 C12 134.37, -0.77 125.37, 0 103 M0 103 C0.14 78.38, -1.66 53.05, 0 32 M0 103 C-1 85.17, -0.34 65.21, 0 32 M0 32 C0.75 11.29, 10.4 -0.03, 32 0 M0 32 C-2.27 12.93, 10.36 -0.31, 32 0" stroke="#2f9e44" stroke-width="2" fill="none"></path></g><g stroke-linecap="round" transform="translate(304.0703124999999 627.2908935546875) rotate(0 186.5 67.5)"><path d="M32 0 C99.75 -0.07, 161.54 3.63, 341 0 C363.88 -2.2, 374.83 7.14, 373 32 C369.67 56.51, 369.73 80.69, 373 103 C371.86 121.04, 365.88 135.99, 341 135 C256.53 132.69, 168.68 133, 32 135 C10.03 134.3, -0.87 127.4, 0 103 C1.64 86.22, 3 67.78, 0 32 C1.84 9.2, 14.11 0.61, 32 0" stroke="none" stroke-width="0" fill="#b2f2bb"></path><path d="M32 0 C115.52 1.4, 198.1 0.3, 341 0 M32 0 C146.69 2.05, 260.35 1.75, 341 0 M341 0 C364.02 1.02, 374.31 9.03, 373 32 M341 0 C363.28 1.65, 374.07 10.28, 373 32 M373 32 C373.05 49.43, 374.13 67.61, 373 103 M373 32 C373.56 53.48, 373.1 74.79, 373 103 M373 103 C371.81 123.87, 362.02 136.69, 341 135 M373 103 C371.99 126.23, 362.36 135.56, 341 135 M341 135 C247.91 132.51, 156.62 132.69, 32 135 M341 135 C261.96 134.72, 182.4 134.98, 32 135 M32 135 C11.59 136.42, 0.19 124.28, 0 103 M32 135 C8.96 137.09, -1.24 125.29, 0 103 M0 103 C0.44 84.06, -1.82 68.4, 0 32 M0 103 C1.27 79.48, 0.98 56.36, 0 32 M0 32 C0.16 12.48, 10.16 0.85, 32 0 M0 32 C-0.57 10.58, 9.84 0.71, 32 0" stroke="#2f9e44" stroke-width="2" fill="none"></path></g><g stroke-linecap="round" transform="translate(477.3994140625 378.0802001953125) rotate(0 110.28125 47.6328125)"><path d="M23.82 0 C71.25 1.44, 121.04 -1.23, 196.75 0 C215.34 2.43, 217.56 10.86, 220.56 23.82 C220.43 39.4, 220.37 62.4, 220.56 71.45 C220.84 86.46, 210.56 97.66, 196.75 95.27 C137.78 100.62, 81.78 96.46, 23.82 95.27 C10.36 97.47, -2.73 87.07, 0 71.45 C-2.96 52.81, 0.19 35.84, 0 23.82 C0.08 10.72, 6.94 1.73, 23.82 0" stroke="none" stroke-width="0" fill="#b2f2bb"></path><path d="M23.82 0 C67.79 -0.23, 115.28 2.19, 196.75 0 M23.82 0 C72.95 0.25, 121.65 -0.72, 196.75 0 M196.75 0 C211.99 -0.05, 222.44 6.28, 220.56 23.82 M196.75 0 C213.5 0.36, 222.09 8.09, 220.56 23.82 M220.56 23.82 C221.31 37.36, 220.25 56.1, 220.56 71.45 M220.56 23.82 C219.9 38.62, 220.14 51.22, 220.56 71.45 M220.56 71.45 C219.03 87.42, 210.82 93.29, 196.75 95.27 M220.56 71.45 C219.84 88.77, 212.6 93.46, 196.75 95.27 M196.75 95.27 C140.64 96.38, 87.94 95, 23.82 95.27 M196.75 95.27 C160.68 94.58, 125.89 94.95, 23.82 95.27 M23.82 95.27 C8.02 95.61, -0.4 87.6, 0 71.45 M23.82 95.27 C6.83 96.97, 0.75 88.96, 0 71.45 M0 71.45 C0.08 56.74, -0.66 41.56, 0 23.82 M0 71.45 C-0.02 54.9, -0.79 39.32, 0 23.82 M0 23.82 C-1.09 9.87, 7.36 -1.79, 23.82 0 M0 23.82 C-0.48 8.17, 9.74 0.58, 23.82 0" stroke="#2f9e44" stroke-width="2" fill="none"></path></g><g transform="translate(511.02071380615234 400.7130126953125) rotate(0 76.65995025634766 25)"><text x="76.65995025634766" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Endpoint Picker</text><text x="76.65995025634766" y="42.62" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Service</text></g><g stroke-linecap="round" transform="translate(102.2177734375 257.9141845703125) rotate(0 57.140625 41.75)"><path d="M20.88 0 C46.28 -0.94, 80.79 0.72, 93.41 0 C104.19 2.4, 117.1 10.26, 114.28 20.88 C117.53 35.09, 113.39 42.67, 114.28 62.63 C113.78 79.14, 109.16 85.65, 93.41 83.5 C76.92 81.02, 54.36 82.46, 20.88 83.5 C4.7 83.19, 3 78.05, 0 62.63 C1.68 42.54, -0.05 30.88, 0 20.88 C-3.48 6.36, 5.12 0.21, 20.88 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M20.88 0 C46.71 1.43, 72.02 0.45, 93.41 0 M20.88 0 C39.7 -0.76, 56.01 0.02, 93.41 0 M93.41 0 C107.38 -0.04, 112.83 5.4, 114.28 20.88 M93.41 0 C105.18 -1.7, 112.43 9.16, 114.28 20.88 M114.28 20.88 C114.06 31.68, 115.46 44.3, 114.28 62.63 M114.28 20.88 C114.08 36.13, 114.93 52.01, 114.28 62.63 M114.28 62.63 C114.53 77.24, 106.51 82.14, 93.41 83.5 M114.28 62.63 C113.73 75.85, 107.43 85.02, 93.41 83.5 M93.41 83.5 C73.07 83.17, 56.48 82.82, 20.88 83.5 M93.41 83.5 C73.98 83.5, 55.11 83.83, 20.88 83.5 M20.88 83.5 C8.61 83.03, 0.17 77.43, 0 62.63 M20.88 83.5 C7.32 83.09, -1.65 74.76, 0 62.63 M0 62.63 C1.3 47.78, -0.48 30.94, 0 20.88 M0 62.63 C-0.89 52.85, -0.46 41.69, 0 20.88 M0 20.88 C-1.45 5.25, 8.55 1.64, 20.88 0 M0 20.88 C0.61 4.94, 6.82 -1.54, 20.88 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(128.9084243774414 274.6641845703125) rotate(0 30.449974060058594 25)"><text x="30.449974060058594" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Model</text><text x="30.449974060058594" y="42.62" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Server</text></g><g stroke-linecap="round" transform="translate(470.3876953125 140.3614501953125) rotate(0 110.28125 47.6328125)"><path d="M23.82 0 C69.04 -0.44, 115.41 -2.92, 196.75 0 C211.63 1.35, 222.48 11.39, 220.56 23.82 C220.18 31.29, 219.35 45.04, 220.56 71.45 C222.5 85.21, 210.82 94.98, 196.75 95.27 C148.05 99.11, 107.88 97.98, 23.82 95.27 C8.15 91.93, -0.33 86.03, 0 71.45 C-0.17 62.04, 1.9 51.19, 0 23.82 C-1.35 11.01, 11.48 -1.99, 23.82 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M23.82 0 C80.54 1.26, 135.33 -1.37, 196.75 0 M23.82 0 C83.27 0.83, 144.24 0.1, 196.75 0 M196.75 0 C212.38 -1.16, 222.02 7.56, 220.56 23.82 M196.75 0 C210.97 -0.21, 218.68 7.7, 220.56 23.82 M220.56 23.82 C220.3 39.34, 220.95 54.89, 220.56 71.45 M220.56 23.82 C221.75 40.07, 221.52 55.58, 220.56 71.45 M220.56 71.45 C219.87 87.55, 213.15 94.55, 196.75 95.27 M220.56 71.45 C220.64 87.7, 212.04 93.53, 196.75 95.27 M196.75 95.27 C150.02 97.34, 100.19 98.1, 23.82 95.27 M196.75 95.27 C159.18 95.87, 122.12 97.55, 23.82 95.27 M23.82 95.27 C7.17 96.38, 0 86.34, 0 71.45 M23.82 95.27 C9.37 95.14, -1.77 87.34, 0 71.45 M0 71.45 C1.78 54.35, -0.91 36.58, 0 23.82 M0 71.45 C0.11 52.85, -0.74 36.39, 0 23.82 M0 23.82 C1.23 8.88, 8.75 -0.46, 23.82 0 M0 23.82 C-2.1 6.39, 6.03 -2.19, 23.82 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(481.6190081834793 175.4942626953125) rotate(0 99.04993712902069 12.5)"><text x="99.04993712902069" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">L7 Proxy / Gateway</text></g><g stroke-linecap="round"><g transform="translate(583.2613405725397 240.8028564453125) rotate(0 -0.07611351315927095 68.138671875)"><path d="M-1.19 0.76 C-0.89 23.54, 0.52 113.85, 0.88 136.59" stroke="#2f9e44" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(583.2613405725397 240.8028564453125) rotate(0 -0.07611351315927095 68.138671875)"><path d="M-8.04 113.23 C-4.77 120.29, -3.52 125.69, 0.88 136.59" stroke="#2f9e44" stroke-width="2.5" fill="none"></path></g><g transform="translate(583.2613405725397 240.8028564453125) rotate(0 -0.07611351315927095 68.138671875)"><path d="M9.06 112.97 C8.49 119.91, 5.9 125.37, 0.88 136.59" stroke="#2f9e44" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(750.6435546874999 614.4747314453125) rotate(0 192.08007812500006 67.5)"><path d="M32 0 C158.04 4.59, 289.17 2.11, 352.16 0 C374.5 2.14, 385.78 14.17, 384.16 32 C380.34 58.45, 384.72 90.14, 384.16 103 C384.95 121.39, 372.03 134.63, 352.16 135 C283.11 135.67, 217.71 136.84, 32 135 C10.4 134.18, -0.97 122.58, 0 103 C-2.31 73.54, 2.48 47.77, 0 32 C-0.77 8.01, 9.96 -0.29, 32 0" stroke="none" stroke-width="0" fill="#b2f2bb"></path><path d="M32 0 C125.72 -0.2, 220.61 0.88, 352.16 0 M32 0 C100.58 -2.23, 168.62 -2.12, 352.16 0 M352.16 0 C371.8 -0.78, 382.64 12.44, 384.16 32 M352.16 0 C373.2 1.21, 384.15 9.66, 384.16 32 M384.16 32 C383.15 60.37, 385.37 87.56, 384.16 103 M384.16 32 C384.71 58, 384.05 83.35, 384.16 103 M384.16 103 C384.41 125.28, 373.49 136.81, 352.16 135 M384.16 103 C385.42 122.08, 373.35 135.39, 352.16 135 M352.16 135 C252.85 132.7, 152.26 134.2, 32 135 M352.16 135 C277.01 137.27, 202.72 136.84, 32 135 M32 135 C9.75 134.61, 0.37 123.55, 0 103 M32 135 C10.58 134.83, 0.13 123.49, 0 103 M0 103 C-0.39 76.36, -0.28 46.02, 0 32 M0 103 C0.19 85.91, -1.05 68.06, 0 32 M0 32 C1.64 10.1, 11.49 -1.64, 32 0 M0 32 C-0.34 12.02, 8.7 -1.11, 32 0" stroke="#2f9e44" stroke-width="2" fill="none"></path></g><g transform="translate(755.6435546874999 631.9747314453125) rotate(0 186.12994003295904 50)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">            InferencePool API</text><text x="0" y="42.62" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> Selects</text><text x="0" y="67.62" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> - the model servers (the endpoints)</text><text x="0" y="92.62" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> - the endpoint picker service</text></g><g stroke-linecap="round"><g transform="translate(462.5791015625 411.3730470828506) rotate(0 -121.759765625 -28.974548443769038)"><path d="M-0.98 0.09 C-24.45 -1.96, -100.69 -2.6, -141.04 -12.31 C-181.39 -22.03, -225.85 -50.73, -243.06 -58.21" stroke="#2f9e44" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(462.5791015625 411.3730470828506) rotate(0 -121.759765625 -28.974548443769038)"><path d="M-218.27 -55.02 C-225.22 -56.43, -232.35 -56.29, -243.06 -58.21" stroke="#2f9e44" stroke-width="2.5" fill="none"></path></g><g transform="translate(462.5791015625 411.3730470828506) rotate(0 -121.759765625 -28.974548443769038)"><path d="M-226.12 -39.83 C-230.82 -45.53, -235.69 -49.74, -243.06 -58.21" stroke="#2f9e44" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g transform="translate(273.1737523901456 341.5802001953125) rotate(0 68.55846812991925 25)"><text x="68.55846812991923" y="17.5" font-family="Comic Shanns, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Model Server</text><text x="68.55846812991923" y="42.5" font-family="Comic Shanns, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Protocol</text></g><g stroke-linecap="round"><g transform="translate(443.85546875 188.5137939453125) rotate(0 -112.228515625 29.22265625)"><path d="M-0.68 -1.1 C-20.79 -0.89, -83.63 -8.3, -120.94 1.71 C-158.25 11.72, -207.44 49.33, -224.56 58.94 M1.16 0.93 C-18.54 1.29, -80.92 -6.18, -118.67 3.14 C-156.43 12.46, -208 47.83, -225.37 56.86" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(443.85546875 188.5137939453125) rotate(0 -112.228515625 29.22265625)"><path d="M-209.44 37.6 C-215.6 41.42, -218.51 47.98, -225.37 56.86 M-209.44 37.6 C-215.11 44.17, -220.1 49.91, -225.37 56.86" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(443.85546875 188.5137939453125) rotate(0 -112.228515625 29.22265625)"><path d="M-200.78 52.35 C-209.39 52.05, -214.69 54.54, -225.37 56.86 M-200.78 52.35 C-209.52 53.95, -217.46 54.65, -225.37 56.86" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g transform="translate(275.7103710609954 149.0489501953125) rotate(0 51.191972689004615 12.5)"><text x="51.19197268900463" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Traffic</text></g><g transform="translate(468.03412875362244 286.8809814453125) rotate(0 55.69806259269109 25)"><text x="55.698062592691095" y="17.5" font-family="Comic Shanns, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Extension</text><text x="55.698062592691095" y="42.5" font-family="Comic Shanns, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Protocol</text></g><g stroke-linecap="round" transform="translate(822.63671875 380.4942626953125) rotate(0 110.28125 47.6328125)"><path d="M23.82 0 C61.47 -0.69, 93.52 4.98, 196.75 0 C216.1 2.95, 223.17 4.92, 220.56 23.82 C224.42 39.65, 219.59 49.22, 220.56 71.45 C219.08 90.46, 214.22 93.4, 196.75 95.27 C147.6 97.33, 98.46 99.1, 23.82 95.27 C7.29 95.04, 2.09 89.95, 0 71.45 C2.45 56.24, 2.75 44.41, 0 23.82 C0.67 10.72, 4.9 -3.22, 23.82 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M23.82 0 C73.46 0.23, 122.54 1.22, 196.75 0 M23.82 0 C70 0.09, 116.01 0.21, 196.75 0 M196.75 0 C213.09 -1.96, 219.85 9.16, 220.56 23.82 M196.75 0 C213.11 1.41, 220.05 7.44, 220.56 23.82 M220.56 23.82 C219.35 39.84, 220.74 55.1, 220.56 71.45 M220.56 23.82 C221.36 41.8, 220.53 62.25, 220.56 71.45 M220.56 71.45 C220.81 86.59, 213.06 93.69, 196.75 95.27 M220.56 71.45 C221.05 85.71, 210.41 93.9, 196.75 95.27 M196.75 95.27 C158.77 95.3, 116.48 95.21, 23.82 95.27 M196.75 95.27 C151.77 95.73, 105.1 95.39, 23.82 95.27 M23.82 95.27 C8.09 97.01, -1.6 86.27, 0 71.45 M23.82 95.27 C6.69 97.13, -1.41 85.29, 0 71.45 M0 71.45 C0.19 59.05, 0.6 44.44, 0 23.82 M0 71.45 C0.06 53.44, -0.92 36.28, 0 23.82 M0 23.82 C0.36 7.78, 8.38 -1.5, 23.82 0 M0 23.82 C-0.1 8.68, 5.78 -2.16, 23.82 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(839.5780334472656 415.6270751953125) rotate(0 93.33993530273438 12.5)"><text x="93.33993530273438" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Gateway Controller</text></g><g stroke-linecap="round" transform="translate(939.5 142.9864501953125) rotate(0 81.77734375 41.41015625)"><path d="M20.71 0 C56.95 1.65, 89.18 -0.68, 142.85 0 C159.8 -0.58, 166.6 10.18, 163.55 20.71 C161.08 33.25, 165.55 40.16, 163.55 62.12 C166.23 78.86, 156.24 80.86, 142.85 82.82 C99.65 80.64, 52.44 83.77, 20.71 82.82 C7.49 80.52, 1.3 75.62, 0 62.12 C-0.76 50.89, 2.19 39.45, 0 20.71 C2.33 4.4, 3.71 -0.81, 20.71 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M20.71 0 C65.19 -0.08, 112.71 -1.26, 142.85 0 M20.71 0 C46.04 0.33, 70.7 0.37, 142.85 0 M142.85 0 C157.33 0.63, 162.82 8.21, 163.55 20.71 M142.85 0 C157.68 0.45, 161.53 7.71, 163.55 20.71 M163.55 20.71 C165.74 33.72, 162.01 49.31, 163.55 62.12 M163.55 20.71 C163.68 31.27, 163.54 43.83, 163.55 62.12 M163.55 62.12 C164.24 75.7, 157.52 81.56, 142.85 82.82 M163.55 62.12 C164.79 76.17, 156.97 81.05, 142.85 82.82 M142.85 82.82 C99.61 85.16, 56.9 82.6, 20.71 82.82 M142.85 82.82 C111.28 81.63, 80.2 81.85, 20.71 82.82 M20.71 82.82 C7.12 82.37, 0.01 77.24, 0 62.12 M20.71 82.82 C5.96 81.25, 0.02 77.13, 0 62.12 M0 62.12 C0.89 47.15, -0.73 31.99, 0 20.71 M0 62.12 C0.69 46.92, -0.55 31.39, 0 20.71 M0 20.71 C1.74 6.85, 8.29 1.3, 20.71 0 M0 20.71 C-0.27 8.52, 8.72 -1.06, 20.71 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(994.1373672485352 171.8966064453125) rotate(0 27.139976501464844 12.5)"><text x="27.139976501464844" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Client</text></g><g stroke-linecap="round"><g transform="translate(922.86328125 183.162400055984) rotate(0 -105.361328125 -0.8692249303357471)"><path d="M0.05 -1.15 C-35.27 -1.48, -175.62 -1.12, -210.8 -1.08 M-1.38 0.86 C-36.97 0.11, -176.69 -2.25, -211.78 -2.85" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(922.86328125 183.162400055984) rotate(0 -105.361328125 -0.8692249303357471)"><path d="M-188.15 -11 C-199.38 -7.88, -205.73 -5.01, -211.78 -2.85 M-188.15 -11 C-196.2 -7.3, -205.19 -5.52, -211.78 -2.85" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(922.86328125 183.162400055984) rotate(0 -105.361328125 -0.8692249303357471)"><path d="M-188.44 6.1 C-199.68 2.44, -205.91 -1.47, -211.78 -2.85 M-188.44 6.1 C-196.43 3.45, -205.31 -1.13, -211.78 -2.85" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g transform="translate(769.3978710609954 147.5391845703125) rotate(0 51.191972689004615 12.5)"><text x="51.19197268900463" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Traffic</text></g><g stroke-linecap="round"><g transform="translate(928.5772506621181 349.6577824771475) rotate(188.5660498991342 -120.40162861425495 -46.92349377479326)"><path d="M0.36 0.29 C-18.72 -4.9, -73.42 -14.9, -113.8 -30.55 C-154.19 -46.2, -220.65 -83.14, -241.95 -93.61" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(928.5772506621181 349.6577824771475) rotate(188.5660498991342 -120.40162861425495 -46.92349377479326)"><path d="M-24.48 3.06 C-15.16 2.08, -6.74 -0.91, 0.36 0.29" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g><g transform="translate(928.5772506621181 349.6577824771475) rotate(188.5660498991342 -120.40162861425495 -46.92349377479326)"><path d="M-20.45 -13.56 C-12.49 -8.61, -5.51 -5.67, 0.36 0.29" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g transform="translate(808.2207168425398 268.5841064453125) rotate(0 65.25584565746021 12.5)"><text x="65.25584565746026" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Configures</text></g><g stroke-linecap="round"><g transform="translate(936.1958922859567 493.1307373046875) rotate(0 -27.263694847254442 54.974243164062386)"><path d="M-1.13 -0.25 C-2.06 8.87, 2.63 37.08, -6.23 55.34 C-15.09 73.6, -46.22 100.06, -54.29 109.32" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(936.1958922859567 493.1307373046875) rotate(0 -27.263694847254442 54.974243164062386)"><path d="M-43.75 86.65 C-46.66 90.48, -49.2 98.19, -54.29 109.32" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g><g transform="translate(936.1958922859567 493.1307373046875) rotate(0 -27.263694847254442 54.974243164062386)"><path d="M-31.64 98.73 C-37.62 99.45, -43.17 104.16, -54.29 109.32" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g transform="translate(916.1386855925398 541.3812670878817) rotate(0 65.25584565746021 12.5)"><text x="65.25584565746026" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Watches</text></g><g stroke-linecap="round"><g transform="translate(588.3232087702838 481.6697998046875) rotate(0 121.13727580091177 53.65456432845673)"><path d="M0.47 -0.11 C23.69 4.93, 100.2 12.29, 140.47 30.06 C180.75 47.83, 225.13 93.74, 242.12 106.51" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(588.3232087702838 481.6697998046875) rotate(0 121.13727580091177 53.65456432845673)"><path d="M218.74 97.67 C227.73 101.01, 237.6 104.27, 242.12 106.51" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g><g transform="translate(588.3232087702838 481.6697998046875) rotate(0 121.13727580091177 53.65456432845673)"><path d="M229.89 84.71 C234.49 93.18, 239.98 101.53, 242.12 106.51" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g transform="translate(548.2324355925398 511.3304858378817) rotate(0 65.25584565746027 12.5)"><text x="65.25584565746026" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Watches</text></g><g stroke-linecap="round"><g transform="translate(576.5876850571794 482.7557373046875) rotate(0 -51.44594701271518 58.185546875)"><path d="M0.29 0.13 C-8.59 7.07, -36.33 21.81, -53.51 41.35 C-70.7 60.88, -94.76 105, -102.82 117.32" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(576.5876850571794 482.7557373046875) rotate(0 -51.44594701271518 58.185546875)"><path d="M-98 92.79 C-99.21 99.92, -98.9 106.64, -102.82 117.32" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g><g transform="translate(576.5876850571794 482.7557373046875) rotate(0 -51.44594701271518 58.185546875)"><path d="M-83.36 101.63 C-88.64 106.32, -92.43 110.57, -102.82 117.32" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(319.9375000000001 612.9627685546875) rotate(0 196.5078125 67.5)"><path d="M32 0 C127.13 2.17, 224.31 1.2, 361.02 0 C381.26 -2.23, 396.05 9.95, 393.02 32 C392.75 47.4, 390.84 64.23, 393.02 103 C390.78 124.97, 379.49 134.65, 361.02 135 C259.59 135.34, 162.24 135.32, 32 135 C12.11 132, 1.72 125.61, 0 103 C1.89 83.85, 1.87 72.43, 0 32 C-3.44 11.92, 9.2 -1.19, 32 0" stroke="none" stroke-width="0" fill="#b2f2bb"></path><path d="M32 0 C106.07 -1.26, 182 0.52, 361.02 0 M32 0 C104.51 -0.82, 177.46 -0.62, 361.02 0 M361.02 0 C384.32 -1.79, 394.01 10.59, 393.02 32 M361.02 0 C380.92 -0.61, 390.82 11.87, 393.02 32 M393.02 32 C392.32 50.05, 395.41 68.55, 393.02 103 M393.02 32 C392.9 60.8, 393.6 88.87, 393.02 103 M393.02 103 C394.39 124, 381.1 136.9, 361.02 135 M393.02 103 C391.38 122.77, 383.09 133.82, 361.02 135 M361.02 135 C269.17 135.48, 175.48 134.2, 32 135 M361.02 135 C293.83 133.74, 226.2 133.19, 32 135 M32 135 C11.51 134.85, 0.4 125.7, 0 103 M32 135 C8.6 136.46, 1.03 122.73, 0 103 M0 103 C-0.97 75.24, 1.04 47.9, 0 32 M0 103 C-0.29 85.46, 1.51 67.2, 0 32 M0 32 C1.75 11.96, 11.27 0.67, 32 0 M0 32 C0.96 9.77, 10.61 1.16, 32 0" stroke="#2f9e44" stroke-width="2" fill="none"></path></g><g transform="translate(324.9375000000001 630.4627685546875) rotate(0 188.9198760986328 50)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">         InferenceModel API</text><text x="0" y="42.62" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> Defines</text><text x="0" y="67.62" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> - the model/adapter to serve</text><text x="0" y="92.62" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> - the serving objectives for the model</text></g><g stroke-linecap="round"><g transform="translate(466.70349253341556 449.71871084230554) rotate(0 -133.21484375 45.69419410734173)"><path d="M0.85 -1.12 C-25.83 1.77, -116.7 1.09, -161.23 16.46 C-205.76 31.83, -248.8 78.57, -266.33 91.1" stroke="#2f9e44" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(466.70349253341556 449.71871084230554) rotate(0 -133.21484375 45.69419410734173)"><path d="M-22.02 8.98 C-19.1 7.61, -11.91 4.81, 0.85 -1.12" stroke="#2f9e44" stroke-width="2.5" fill="none"></path></g><g transform="translate(466.70349253341556 449.71871084230554) rotate(0 -133.21484375 45.69419410734173)"><path d="M-23.16 -8.08 C-20.13 -5.94, -12.71 -5.22, 0.85 -1.12" stroke="#2f9e44" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g transform="translate(277.3282506200807 477.1658935546875) rotate(0 89.76159312991925 25)"><text x="89.76159312991922" y="17.5" font-family="Comic Shanns, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Observability</text><text x="89.76159312991922" y="42.5" font-family="Comic Shanns, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Metrics Scraping</text></g><g stroke-linecap="round" transform="translate(10 530.4119873046875) rotate(0 85.671875 55)"><path d="M27.5 0 C57.96 0.23, 92.07 -2.16, 143.84 0 C161.98 -1.62, 171.53 10.07, 171.34 27.5 C172.01 46.69, 172.38 68.01, 171.34 82.5 C169.13 104.28, 159.03 113.05, 143.84 110 C96.78 106.99, 54.06 111.19, 27.5 110 C8.1 113.16, -3.25 101.52, 0 82.5 C3.07 64.43, 1.44 46.39, 0 27.5 C-1.67 6.06, 12.67 3.19, 27.5 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M27.5 0 C58.62 0.1, 86.75 -0.75, 143.84 0 M27.5 0 C66.17 1.24, 103.86 0.14, 143.84 0 M143.84 0 C160.73 1.75, 169.79 10.1, 171.34 27.5 M143.84 0 C162.38 2.15, 171.96 8.78, 171.34 27.5 M171.34 27.5 C170.44 50.01, 172.38 71.02, 171.34 82.5 M171.34 27.5 C172.51 49.03, 171.57 70.72, 171.34 82.5 M171.34 82.5 C171.08 100.74, 161.79 108.79, 143.84 110 M171.34 82.5 C169.18 99.21, 163.59 112.09, 143.84 110 M143.84 110 C100.17 110.08, 56.23 110.56, 27.5 110 M143.84 110 C97.23 108.17, 51.87 108.41, 27.5 110 M27.5 110 C8.79 111.81, -1.3 100.22, 0 82.5 M27.5 110 C11.27 110.65, -0.82 102.29, 0 82.5 M0 82.5 C1.49 66.6, -0.48 54.73, 0 27.5 M0 82.5 C-0.44 69.52, 0.7 54.3, 0 27.5 M0 27.5 C-1.19 9.05, 11.1 -1.12, 27.5 0 M0 27.5 C-1.28 8.1, 10.63 1.93, 27.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(33.09192307293415 560.4119873046875) rotate(0 62.57995192706585 25)"><text x="62.57995192706585" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Observability</text><text x="62.57995192706585" y="42.62" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Dashboards</text></g><g stroke-linecap="round" transform="translate(1188.15966796875 422.12890625) rotate(0 19.009765625 19.9765625)"><path d="M9.5 0 C17.2 -1.91, 23.8 -2.55, 28.51 0 C34.45 -2.93, 40.84 1.97, 38.02 9.5 C35.2 16.34, 40.22 20.84, 38.02 30.45 C40.35 33.57, 31.7 36.44, 28.51 39.95 C20.78 41.88, 17.07 42.29, 9.5 39.95 C3.11 38.32, 3.04 36.29, 0 30.45 C-1.02 21.62, 0.3 22.26, 0 9.5 C3.55 3.04, 4.96 -2.37, 9.5 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M9.5 0 C12.18 -0.35, 19.86 1.97, 28.51 0 M9.5 0 C14.27 -0.61, 17.82 -0.66, 28.51 0 M28.51 0 C34.98 1.32, 38.29 3.39, 38.02 9.5 M28.51 0 C34.94 -2.13, 36.52 2.08, 38.02 9.5 M38.02 9.5 C37.4 16.48, 36.07 22.88, 38.02 30.45 M38.02 9.5 C37.21 16.76, 37.8 23.99, 38.02 30.45 M38.02 30.45 C37.64 35.02, 33.72 40.39, 28.51 39.95 M38.02 30.45 C36.06 34.72, 37 37.72, 28.51 39.95 M28.51 39.95 C22.61 40.79, 14.26 41.35, 9.5 39.95 M28.51 39.95 C22.65 39.96, 14.96 39.51, 9.5 39.95 M9.5 39.95 C3.7 41.27, 0.1 35.19, 0 30.45 M9.5 39.95 C5.16 37.7, -1.03 36.06, 0 30.45 M0 30.45 C1.08 24.65, -0.89 20.64, 0 9.5 M0 30.45 C-0.05 22.97, 0.57 14.93, 0 9.5 M0 9.5 C1.06 3.51, 1.7 -1.87, 9.5 0 M0 9.5 C1.87 3.84, 3.92 -0.55, 9.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(1240.3881973112898 420.1015625) rotate(0 92.18748628246021 25)"><text x="92.18748628246026" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Standard Gateway</text><text x="92.18748628246026" y="42.62" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Elements</text></g><g stroke-linecap="round" transform="translate(1189.40771484375 494.0390625) rotate(0 19.009765625 19.9765625)"><path d="M9.5 0 C16.94 -3.63, 19.26 -2.83, 28.51 0 C36.94 1.41, 34.54 6.28, 38.02 9.5 C41.52 11.8, 36.14 16.95, 38.02 30.45 C40.04 37.07, 32.03 36.51, 28.51 39.95 C26.01 36.63, 16.57 40.91, 9.5 39.95 C4.3 43.02, -0.42 33.87, 0 30.45 C0.8 22.84, 0.86 14.53, 0 9.5 C0.66 5.06, -0.06 -0.13, 9.5 0" stroke="none" stroke-width="0" fill="#b2f2bb"></path><path d="M9.5 0 C14.98 1.17, 21.64 0.19, 28.51 0 M9.5 0 C13.88 0.31, 19.36 0.96, 28.51 0 M28.51 0 C35.95 -1.88, 37.85 4.17, 38.02 9.5 M28.51 0 C36.74 -1.67, 37.97 1.05, 38.02 9.5 M38.02 9.5 C36.58 16.46, 39.49 20.96, 38.02 30.45 M38.02 9.5 C38.5 16.62, 38.74 26.02, 38.02 30.45 M38.02 30.45 C36.7 37.35, 35.52 39.15, 28.51 39.95 M38.02 30.45 C36.32 38.33, 32.93 38.91, 28.51 39.95 M28.51 39.95 C21.83 40.67, 16.54 38.71, 9.5 39.95 M28.51 39.95 C24.82 38.9, 19.76 40.06, 9.5 39.95 M9.5 39.95 C3.91 41.69, -0.87 36.75, 0 30.45 M9.5 39.95 C1.02 40.41, 1.67 38.9, 0 30.45 M0 30.45 C0.31 24.1, -1.79 18.3, 0 9.5 M0 30.45 C-0.07 23.16, -0.08 13.24, 0 9.5 M0 9.5 C0.94 3.17, 1.28 1.06, 9.5 0 M0 9.5 C1.08 4.86, 5.08 -1.29, 9.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(1243.2768691862898 488.15234375) rotate(0 99.67576753246021 25)"><text x="99.67576753246021" y="17.619999999999997" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Inference Extension</text><text x="99.67576753246021" y="42.62" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Elements</text></g><g transform="translate(420.6089004362898 10) rotate(0 178.3730331574602 22.5)"><text x="178.3730331574602" y="31.716" font-family="Excalifont, Xiaolai, Segoe UI Emoji" font-size="36px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Inference Gateway</text></g></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1162.7099609375 654.745849609375" width="1162.7099609375" height="654.745849609375"><!-- svg-source:excalidraw --><metadata></metadata><defs><style class="style-fonts">
+      @font-face { font-family: Excalifont; src: url(data:font/woff2;base64,d09GMgABAAAAAB24AA4AAAAANKAAAB1hAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbjgwcgXIGYACBHBEICs48ugALYgABNgIkA4FABCAFgxgHIBsPKSMDdYrTCofsLxO4w8gHN0BNbIcMe0A7YXjmsBvrktWKoiXr/EcoaXh+br33/9//i/qrIMZG5CgZvUhyjMiy0OZOwCbsulIw7xpFj/Mabe4M9CqshiJ/j5vb1298nWgqTH1N0xBCExTCEaTHC3jtZkcIqQD+f9KtPvm/g9ZOtfoqlRosv73qV1f0k3amfRKBwC6TBNvdE2DNTmUy+b+cpnTVXP/MCAILlmU7tBAvYREMhVPa12PvPcZX5yp2nCWhIclrnHUWgEeagg+/5m71pG2o6RMkEUIhktKXzN+vtXofr59GvHMiIZp0GolSlt2zt4vZv0VMdmji3TwkhtDMpB3tSF4akRRoxKuZSCmJdaim79ui6s9F1GUVzZyj4LB9RwACgIkAIOiYEAgKQfC6AKDT0sMu15QsIHt0dTQB2VtHdSOQvcpntgAZDABAPMp8PDtaANUKgJRj5LgHhwBUBuT0l+HHTPk+1MTkwPQdQBH8+vv/mNcUaPP0xwONozWd9wUdT/dJm772jjLXOyByuozDnG17eB9A6shfA2LNPi5R8vRZbutAbDHsnMP0P7+3+Z4606l2B+pDw8w3Bg3f9cr9YcDcq0BN1+tmvC3Tw3y0+g9Rx5DcDQCCVgVaiqIxas1tFOJ2/C7179zNjWHmAsD0oSA5DBUNHQsHF4mHT0BITEJKQcmdihc1DT/+AgTK7dSoICQ+MQCgRFigjCUMgKwkABgpAoEyAHyWI4CQImIQAlUJmYR4WESYi40DiAQkDQok4mQIYl37KZB2mdmk0zEEhQIWNkAHLkqFSCCYVyYaOKbIE8THJDEiBZazRw40Xh8Rr0+eftuMRo2e5oNDHOMRzBITFBUxxMEQDyMETjEiYjgJppFhChXGqTHOGxMCaCJGYBgAgCE2feYVRPlOERQQZevSleKEQX+GSaEJfBO83mvLgeCzo6qFOwxBDrJcdpEYgegxJiwyz+aDBCuA16oEDgGVtixUQAR3D9QkQKdsRMk19ug4IOac6ty6LFdMEICAI2NNoxAbQ9IkDLiygJlFy5pRUFtRHgCSj6OBd2FeAK/QrOabLQ2M8tC1/Jco61LjGdg5ioQ/dkI9PiHkogAQuMccMabvYtxwodg8+AkSIoqBhY1DKqcsubr2tIVQX52lSZwiXaao/JOcnjr56it/+OVzzx57+ujP96f7GNh9NXXIA6AdojIRINGOhYZwJMSWGgqRRVTNeDPkXNdAc9XOaiJCTw0Gh7hp7NnCJJNbp6sytkrpF+2Zkd4eLvAWR8ax/QSZOSaZQqRJwfMzSd38OSFkpL4w2ZZe6Ajzj86WamerP95I75M3ady68NtcYegBwOmCfvm2bUYahseDe15qpXi5OwFJXdo90fUch/KNN9oqb1iFOQGg2e35Lc2LYzR7l8XVPKLNZo2nxRGNvmSkPsYnGLdDPJT9IxBdJSUYjepQIW31//ORSpM7HXryVzE2srmAAQ1YyYQAf3NQuKGfk8P1/sEr+jHZpN4NI2mebL3HXOSoTUqSSbK4O8PjbUM1W/XP6sUoDsBncqNSVvqG7H+ma4YiFTp/SkLzNbpCPJWkmmYFLUlSgps3AV6CFOOF1lFeZr6xtaV5F8jYqKtUbsBFFxYvMgGRCi3LwmgCHAGATMCu5wL8psbxOI5p/aK7MMBgwgCsJZmf2syn2CRb1U9IAlrmDs0UxLL4oDjlS3Ou9h7vCQn1IpCjIDEHYJgTseJGhtQjjMswSI6p58MZjsfoaoKvZp5STRJa93PRjfkU9WmtZtOvGiGFqwnO/5kv5iPgJiM7c8eo4F4IG9991yrMdyiLJ+L89imrEuIgk3PmnUAWUGmmBEBXSG21mGsurYnxNMcxnVE1jl9QfjJGXP2k+tprdcyA0G2wALYDFdOboXLG+bTJXNt4Qw4KcFV6EKAZnP4GQFjjK/EKzTgqiB4ATFkBHj5sw4jcBNsn8bQJupeOrO/ybwszuvpjMlRufXTv7ooeBTvBTfMlGC5mH8/44SL3UZ53jXwtNnAchhgRcsxj/HjUADYH0JzOX2xlNOJaMUaSHEkgSZJO0R0j08sZ5T7NcJljx7FwORnKEASm2W5LsiDhEkjSFNpsAi66irBwsalCK7QwuqBrEj4GaVoqXdEPl2QO5spupfenlxYKd7nmtWzSpWtIKWagxwDcLmA1QcoortEJrRBjaFmC4xduQkTS9cskzFXKVY+Ekr/JYLC42aD1v8mHBgZgmmbbtCE9EGrj88w3uBZxrU6NI0kVtHC1KTBzerdJnT5VIa5iijHDwbKSE+9hTH6XecO6yM/ljOuY6Y8jxVA4JWomwKh9XhQd33jzoL8YW8mPzSV5AhJBBzvyNoBruhh3B7fS8rC+Kb6WoN9IyUgL70yqYdQRJShvlnN4lguTI+usMD10bwLumteTe3Nomi5s/5pxg+M2E8Gt5nyPEZnnRRmZAKsATCmr341SsimGfbpWxvLGxyrj03tqmBOrea8S7o2OqzHifnyjvelfqEf94xfoucKkKCOJggA0AzPheNcynPP2RJstPvrR88SJl1PvSkslYjcaAOuLT/pJK64L8zimKgwNxZvIH82iZ2IwIW0X5EgqVfiYPoZMwGzSMUsAp1DXlRqJ9ZNxw5uKRZpyozs6z72DuztKgKtI6zwI64+Qo93MVFBw2oITINZWF+5O95sffVRTmufQk4yUjorA7dlb8qRm2sAGd2W/BEUiaaU22nPCs6ExKIEZ1HVeIdu3/Rbt8jvHme4hVcfQgmqCsY4ZXsZV+Q07RLCgT2phwwQp4+nx0bB3QbbW8XIwO5gbLt2TlR1uRXwv++PzQmqyzWTD8eGHlfp8lk0Em0nJqBiP7hdTSX4FJgZr2QLTwfcbOWpfJfZspdl9cHqPV7NraTnwZB9kYJOY0FWYvp0Vqx4OPk8yo4WpII5M67JCJMw1t8icZUr9bOssX+lcoBEXIwOv4WB3Q9R8JjvKB8EwwwGAND/Gxv6Eubmn9i2kaGGIJHthvMTPF65n+H4cXWQfaUl+ccUXFrNPZ19ezT7NFOfm4iWzZWSdILTClRWU3dGiL67InaR0rEnM7ZXYFhE7HPZ13qYLcbP74/g4j2lzhtHysNis1y9Sj6SLMiBzVjOj1VmmP57FpMuvPydzSRYc2VnNFGEGfzxRGvXU2Bi3+Wr3Ul3RbIsLyiHvlfKTzXyqz49vIXVWgJAkoU/SnUEJAEwmjSBBir/pL7bLyVy11mGyQXtzdlKAJVlcyVU7pV8mDCZHQJLzJHp+y6FdfjlX+/nei+Q4jmUhC4IcIttVOBuWLu9ku/MB0TAX+RWi5yRd06IbOjoWjIfxJK7Cf7oyIrJIjSeOqqiIrncJi1VXIJRKc7K5d7Uccanl7ZE3lkj+kl/MG+m6Fq33j3GI80pp/ZyEed5HfbwxmX8uzq7/usUNvuHELZkdfhK41wCetdF8+VlONDI8rA0OWVGPeFIJmNwuTNWVae50RF4T341z3sd6tl9kWW8gNLEerM5qzb8s9vn0Et8TIVUWFm6i0GOsCLJuV0GA+lQlX3QL9pDi4/7uo+GxuqUnc06fa6vGrHy77ne769kgIKlK/pp9WQwlSCAZKl9XjvOZoCNColsiMIClNxuH2DFaI9STZNIkmewXv3UjTj2VRK+PlRIIYlXgjQ3K/T4dH+ZwaCl50RRdIQAI6g/+rq9PtahFt5pbSGVn8xUDGAWPm4rzYfJ9u0dsKUEDJLAug9sVcIiTn8G0bZtYeXmL+9CID1++f/eb8zXa7JNpfqokmGAYyINf1UKh0eOP1mvB0Y1q8oeeD1ucD7mvcK+UlSeKt24cLyoVPsP1HAf+6rBUp2aIy9V6utEva3yBHVonXzJ4xODar3eP7336cHcoCBhIMiKlaenaBGAAPWVgMF2z+yXfVhdi3K8WGRxitARRb3GH3j/E7e3wCVIGd0iakxqdwifx8T8Lq3CllZ1fpyQfmqMgAHDxRlbOC1G7l/bmS/MK/b2m2fFoKiQa5IiI1L7pAv1q7dO6O64OFczw5exJXP1kNjEAPWIgFyu+pIqYw9BgAGq+zkhnSzneg0ny8jMYLckoIuTblRxmcF1Xz75Nwss+F1l0aS/3KW+jF52vMhF6cxhaSM0UPtv1fQdDbIV4OCGgvZxNdkpQlzYZ3Z+3Q+G5WHvSPscG31JyHg+8FCPlO86G0+/QaPruDOuIPBw70V7YBCMBILfdrsvgIcID4eXL6gnPFze83XIazWwpdoRgEhH3N2g92hokf6osDzaElxVUro4f8H4+yKfZCelwIsjvcUd6IUMormguH+cvmWvk98hhn8szjNQs7jpmIyGqMze478Rgb7A1jyA8EwYFA8BN1D+elA5AFCiI6uxeqC3p5CbAW9D/tsmK6K42Iz69H0pZ2WyErStc6yKFhzKUevXgls5xv7Ph1XK54zjU05zW8EwDXAEYtNk+ME1X9gv/p74KO/ColO9Fb2YcG9kYIev1ISUXYRRENr3PMI6Nxj1SQ3TBT2qf87sv43jy6fwqrBQp49eL5vteWrP23iA1RI8PsYuXa5UJuze3qbjqdbjcZ3AwQnqIsOm3QyEQULPBsZFVg0DlpLxY0MWS+P/LmN5kVWXxk7FRzA43F3+QbUgLWuoBp40br/9m3/Akm55M9iR+6krbaNBoyJLueDReYM8xzyxt+ijBspJmZJWZ9z8e5p5J+Za74dzby5lLQes48RjnU6FtBVTvaJg6JN9NGMmt7jntOSs+M78CJPfWR1KAt9TD1snwYqW5ybNSuoGWpwx5fySrFtRfIre8qxTbH4oFT4eJO2W79lSM5U/VLBkUlfn0f2UGQQeOfS4pfr8X21kygMjMYNXn+cpI0t7xYOgwI+PZleWaXP+YWdYVTWd0BT9qw6hAGmis+U+59MtSrufuMX8Fh5O/tBZfp0nNi0/M5HqrNU7f4MV0ng/zRcHHZizMLRvJQk+/c7qDNqIMEZ+MqflG41rDj9WEJj1cL8zj+DahVtiLLgDScNaJv2c6mBMK+oZsuM7cJ9osYDDv4mEfV1Ud5B7y4jsvluQ+mbX70Y4gi+m5oAh2w9a2YcEngKjneLnhECIVss1shDcw1quBDPjOb9rwVNJBoWbxt5zfjz/G2zyMnVePV2mDQW7wc0/Tz9r8tu3ABNbDuGW+Ex8as3cI6wsHjQUGRW2nB47M5mLIXU/Ls5bFPgu/Ske+kNWZSC6AF49b6rJWFk+Q9KJ//n9iKdiU5owwtCiGAOrC16F8tjW7Szo3Y0myBDg871M/6qm6dBQZdra7jh3DKeSsFwW1dCtCF1PP2GhnIfBKETt9jkbfkDP2PjN59Hmz+zKyrS6rl/6j0uu22xeul527Y3CvIldx1HOs/87fSa9JCONZswlKRmhSbmVPYYuCMM/4FBoSYAFm5DtakrxpmZ+CXUzBdHa+D18dT+RTTVQiP7s0/A5Fb/amneTaJoR/Hjo+dOZwj2yXZsaGjZu+pyRGje8J1Yy0YlbxPpPo+Otqoratxi8QLVGYOcP04VHT2He1MyZdi7Crs8Tpco3L68OlduxSebsecXfi3KpZOCUNzeJc+iNh3sH+NZyJsvP5e5c0Z4Bsv/Lx+6QyVe/XpygEs5pmpFoqdM2u2sbZDfbDcRlqvN38m4C+Nw0hZn76otd/4JDMXFGM2fWZZjJyhbDFoTJGjYFSrJJiACfUbp+2QW3f8mxiMAvNGjR7LKaT9d6OJKrvc5AvjVowUCvNCjpEfmThtNt/ZVPN9Jls8nhqBDUioHxxihBwc9pGdgTuzgr9sf+2xHHTdblWc/QezkdlYSjXxEWhGXZ7/N1G1eMY8pWziUXCwTOR7xK+K8onOwQULaqlCCvcNwB/8IxL62GPVFMH7Fjwvw6tuiByrjApNKAkkIqXwj83BjH4e1lJB/7Je+RXrODT8lv+UnvCAjx3l2ulayEg5TWLaGhjMPjaPnH3myTnU927/PLNQUTOTED4oUvMYktpS2eeyjAjJAbSODlyZ9xulRV87HkevRJWJly6oWt3WrJXJlVoLjLxhz6/yyAu2/q+RBaoNQm/oB3vuucWbsTzRG0igHUM7Obus5yi6SEY6SYao3aKMIotFsTC4qFSbqpPT0CW0l4xt9sfFouWDOWLFLjJHKyHwdT1XtJklb2mODXI5Z6Ux/a2fF8+NVcc+r3cPBGQm9bfJdO2eTfCA+/kDKcGCrcnpnqH7KvtWjL6ENTwi4OgkV6QJF+T8huS6ftRl04XKWOdyN6WjW/Dm/kV6rUB1hLhsWSQa31297ykqtWoXh0uSYkVAw8Wnpg8gICRPl4neVf/eGy2eBlgAGtG3BFSPRiyFzNMRXrdBkxZBUKXAynSiaSpDr5b6MUNnvLeGArffeSth0m0v/o3ZlpCs5t95sdxrm4fbndq4Xz0w9srl9hAx+AL4+n1FT16BqW/BymCTn6d9vCCiBOpCjp+emuye2d/ZGLaspLHhrjmajAiNYVXwzQKHzsfzC7SOs3cdLio3W2620vIiVO+qPDbmCkuIvSU6mXorjYupY1uh1NJWABu9XSnws3ctt1tzP1MPkV/V0/5i8gFP1LptC17UMli1Sfcc2ADQ5Ow0sFXRtVj1aLiereAJxVmc8TzJ+ymSKkzwupR9q5D87bWmnkqd/XOAQlv5Tefe5G1KdrZ9Ht/JNqe/X5Wnb6JhcBwiIM7r8VC1sxIqu9AzegaH6ldbtXZvZKjaHd/fGLKrcgwz+/zLk/DerW6pJTV/33zDTiD3zVIvFc3XEvPFvpDf8tHgVWqATsnnSDrt+i+LSpcI04Tqwolq9np2EtACag4ZB1TR7wjMviY2rOMxeRVuKDajs4lIpKw8KG8Y21YvQzQGVU2v6RgWhHMXIhnyYX/sYQNP5Mb6Yp7FE6vgrMKdS5R/+Fm3+Ie7FTp2pZvTIkIzc/hjs/7ajyLtD36a0egOp32hfVm9jdkAShijcoyHlRyf3qBW1vWdotKff7Qj3vWTCRqxkfRC4+jL6z/c+C+b8QniDF238Owl6nwaCOlI4KQzC0GB3ih5ycPP8cz4gla+lvz0phTSb4JKIF2EbhWVJXG45YgcR/ec8k3RgCnhtmodk9V68tDchVyfZLb35GEoPk/aUsLx+YYG4/Y13bCU/w0NzB+vXA3YqNlVYcDn5yz6pqGhIwUyYPK0faMRG8sIx8VCcObbp5nH6xIeYu/dPwnU4dGJbjT4xRlpGNGP7NXwV9zKJ2PDXQlkvlL+Jp2oeCbsNrdYIQ+8Ky322+ekGdaMu9gvnCxlzu3P+YYbBRJM1ZIIo51DnU4kfkH3nr3KY/SFDpy+//ys+pdmXC2Niayg5VGtV/40rGA//TixoQA8FAoNwl3eYuls6kUqk6xmEH8nAoEs/nWqILmrXppWrmY94l58KkKBZPdtNQSHpaBrJkRGtsbY6dH5tU9TYuyAQpDy6DMOWlxvn7QaFWZY2Md79Z8TP6k9jAKSt2ps7ejB3vUQK7blu5ez57jUbX158A/wH0h1ftSQIeYY/rjE7/GCEcdi3mFIe5TARRjhYRrkWQeWoiI2K/8+BSdcaBsGILp7w/ZYuxhIlFuLWhzhYtEnnaBe95ORZ4/jOJZ2sHa03eeKz3oB7rL+aTTtV7fFzbPqwtGk7lkr+TbfYCllBNOIo+QKf/0PveDsLn1YhBVFQKREL8GcHiHwRoQWrrBKXIPzzK8OypRjzfPlHC7oYnvdzY1LSw/zZ7xkYi9LI8FzTPC3E+s9HnCDmcVse3vs5/d3hIeckUiSv+7AByUX6+0rDJofzvAJPFaFLc+OzPTOfYW+Gc8vqzAoTzzwcQiC9s4icz2Ka9S+X8IESqOFIdeCbSM975BG3151C5CGYk2QSt9jfakmoKk4/WaQi+4xw6W8sXjN+FCCYugM76SIYzvA7tECndkMQW10VlBrI+I9Q6IWjyO7GXNGwfzwL4y9Q7kYYyIOVBYGrnt5d08vw8fC6I6+fGZU9eOrEsapebD3C+UW72Zc85kTTNYEbQAqaSFZprnktvTt4en/DuE/JyYy+hEQsGMlPDSleAYQpfyamp5hiLvw3axCqd6GqIiXfzgtPbd5k/dHYz1SkoqSuOa7nmMNQSwo6Dp6GWvnFavSb3n3ob+xqNutmxeBnoayv7yqAM/Y/71nzteYvUN/vWHDb6bEpP6EsfDrR8kNi9UPK5u03ok++aIHDorw7CrFqqyggPdz31MZg2YqT4BDEhvvne0EWzraGubzPmM9LHRD1JBjQy6imjmxffO8y0sYmiWm9b+mrnov5YE1aQrYjtGQ3o8iYaYqsHNMzZ8HicXOuzWrMOaJ4xkzs6F7HlgS8UfyScKmQWsTjT9XJr4BOLb8Qksz5zrTsnQzSN/R7rDb+amEHw+zkCIVloPcjxamkDV/QK+uT6VY3wN5RgW9xKxYq0BCNMxYwis9RpimwWUERVTHK5iwb27xPtXFXaXCig02Wq7gHnItnA5na9ZATpErFXRsfunJuLZqAMVIWZgsPAva3Rhfyv3jegZiq+HImcH7Ug1ZssMkdaKC3K8+fcidSYF8UTvhx4zz7YLXcsoGfeOz3p59dKyp/8fy76fF2UsuUOQ7Z6LFgGBbqJQc+GkhjHfW2DPMZ25RlOOVPx02xTNz2OO6mo/rBPtC/ZB22o0oZMjhon974Gl5U+t3BFxsZWjo6cfkb2pjtA+dB4zvG2ZU7/Ahs0SHB6duJGhL5sfleps91gEJpk4EWNY/sfiaokLSZjf5e6x72hPZPihAQm0MLJZePATvip0qQ31CEbUmpgQ1w8VvmM05adJNYokX913HxAoVraX7RkS4K3D4lm2B694+eAmQY59dF5XLHUemSNWLgUq6AnUzscgDDVJG3t7P9zx8O4rlSR313bZlcJLv2Xim0Y8sNEUDnFbZ5hrzrIUr4q6YThAVnmatAacAF+yUQ/GReNU3cZlreGxcBuCe7PIABWZu4SYTWYVKxdaKev9TbnJho6aO96ow+SZjAfwlOeCq7eFZh6N/gXuzL5fru8/bGuPSFIZE6zfTwnnyF0xdcAevzt9SyNWn9ydXmPUrcu/X51zeyhINCeHirUPcfvei8ss16O7ZrqM0ab1GxYKL3NJl4eFNwOiiL95f01hvN4iFNl1ZJdHxaXwF4Gy56MZ3evW5hv/4tIR0bkVpmzJTyHgZqfHeo0nsyR6zfvxgxeuWaM9pZWX5YVNhnK6XbzEl3y6xIYH3EPL2IG2H+dtvn0191V0ei1mjluduUCiUKXOS2iP+A+J0bRJhhM+CIuKoSV4yejAdML1TNMZ0X5RqOnxU80xbe32vCHvRkJXfsHlR+rzKshbNOI9VsvMPdFjuQy0kjWb/j9dtGpy7xe8YSn9v1+YfCWgAA808uV5eMUqEtw6frwyGmXkJi8jfuDw3iZ71KCN/F+RL/SzGdbufsiRcu55hCT3+gQmBVKtQrqTIxQ6Fr//0wzGIPjsRn8U4tnbPcfSX02PEXUeH4BNPd1I5+ZOdRJqVg+389VHunEL6O/4ssqJZ/6v+3GEn9F/+9gjGYAgqMbWsc8gpZy4x1QG+gcA8VSXvxlMeGfP3/OnezMf+wuL/i80eE9kGgT+9Q07eBq7v1e1/9d6utpVwTID8FfgDPKdrfiFwgqGtA9AvogXE7AaE3YUTr/Ok1vu4k/9DUHTgNfHDIG28sHFE5eedwEi5xmPivklJZ/7nxcgoCiRHuGOfR9IKMiUiDaKiw2iy6NNKio5n9kmNHe++YGphcYCrE4IKh0nnrA5QKH4DftNaaRaV+GhyH/7MXqwFKEACp5oAIAmF65ySOBzOYJtWI7y1yPHqFXIKRKoAZ/uFQCLuSqVa1KvRqsWMwVxqVZrVk5OuQ45sbgOnVpmWtZDqGBaJLFs+pwubeqGVC4Kh7Aj+M5QWM9R/Ky74FHTWkmzTDZpwzpJNad1a8F0JG26NFBvxNU9CXwNwO9IwmgVRJyhQtvSg0qqdAzJHMF5xKAJm3vQuc4YVB9RNcyeQpVRJAoCmn6DAgAA); }
+      @font-face { font-family: Comic Shanns; src: url(data:font/woff2;base64,d09GMgABAAAAAA/cAAsAAAAAHUgAAA+OAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgQwRCAqffJpVCzIAATYCJAM0BCAFlRgHIBuuGaOibpNWNLK/PLDJkPnjqiFKaRLnjrIb6gm3G3y04yBHnnTnJjGJ4ZVO8/W3+/kYNWoqpsXv/YSb/ru7JEhCEqDQsIVCjYoLFadT0X7RthO3TkX4PzeRvHRi6tvtV5wQkwk7ArGL6IgcyWGeLHPf3m0sTx83evuLmwKQwNIE4mYyP4bbrbVsbd92qmWdTmxid/noCVABzbtfmtjkzX2iEuOQnp8w9+1q8Yp0UOCtABCYcOt/gPTwGdD/73+tlXb6wnLc2QC5i7ARKk4tvP3bPV1/u2YT7vwjmnRg4VR4dgMkDDpUJByRIrJhl4olJSK8yavUVOlXq6LZILTm1hhhjJX++OUFgIwNzQYa4AdXY8B+fWN0YtAGt2sCgv+++LlAAJ7zqowj1CwcCQzUzIp/M5WtaIUVCS6aUBm/MfhjNPJWk5oVsrZ1QFC+SK70rDNhhWcZcSiN6n+xvdvQQE9RTkZaLBKG3AZUTT5LUqGRPJ9+V2I+AOAHVoKcUR3h3NPGChyHih97b+lY1cXIkGqixDSpMsPKfFGt6WJjS0tcdWru525EsRX3Pooxx5Q9O58JUXiPlOcQRRb2NOdyNzSCKMe292E9LQ55F43Ie0UQBCI0yCwgG8IDApgPfTF7RehHRJqR9YwPi7LcIWvM4mz/VUxFvD1JSnKMsc6EtD+NAKDHA2EOESqMQORhWV5t8VHFttQOT6shvR0OifnLdhOfDMTrqm1RJQDB7FKkgkYVBaX+FmSsY8CYFUG8fsjLLsdMH2lIaFqPAkXKLW5IJ/M0Pcnt+sWtDENEnMQxANSQLu9+pbPIl/kC0rYUJAUH6F3GVmAr6n/ftMteLp6fb+50iwnk9rnfEAkP2hMAQK5j5seTEIN/NtrcPLB9PhljLzFf3x9DHNljnYOrvSDE1UrWy1Yx7xVMOB3C4zYQnWz5ATxWvOgjBbQrI2I/EyNIwgFiWcxrUJoakGrA2IAdsd08tot+gvHANua/+6s68rB6z4sd8t8DwGjtYizWTAnL3hliJ7rww230yYxZlADaAVQ57tNHMwT/x78xFw3EKV8Ce5ZtIWou+OdnWq30MwcRbe0QBwCoNrCdwZijinIcpYnQ7qaInYv0HiJuleNQvsIgX83c8l6nlW6GGUtthHH3BDt+5llMYz5cj324+EbAEEJAmg57O3nT55MRKog6DsJK7gQR2uXPABTMMX+tZY8QoXfnG2JaN8EtLnd3VdnfPyeUhrHw8LBi35K/5fpq1KHipPmgN7S1s2Toc87jGn9eMu5nfLta5HIeljvRJ/gwn89qU+eevtazLyNfwDN879U+DVXUgIBehmihVdZvRbdQPUTbcUffqazVtoiFvleOReZXjAK9LhvVgqYmLDeMhn3CvHJ0fdDJS4qVL8uztzybr22fl4w5qfsSnyVxgYi0A4CE+lsh+P3rrKHLZHgYbIlkqqazjFY3kXD1G3/AKtgrRKAqfPk8V/vb1V6e3rDx2fKqncd8fh1XhRhZuGKZlz2I57gMD4PltfAvaFADGp1cfLolAFFOr4t9eqva61rg3dHPufScOaU6cs9uZ8N+fg/IOIhTLHqIElrKh3lbnD0Mxp4WI14g+pcklUt5jOuG8PHkKjXrp1W92z6LqZkZicqwrJuvYuDDX/qvR4VZt/laYYWlg50doWRCeT9xAu2m9/eP4zYsdulf6a4YGdjdVZc8rtrdTaiR4l/hkCaUvWfb1K/nv3ah5SXn1OVpqavVupeps2YPV8+GKUTCz7yZC1D5cDHrp1qj1wueAETog8VKVVT5n6jo/LhU2uySE6/ci5HVMzJ+MDTQNKPdN6cDnZaql0tDNyd5FUP7QWZaNggE1Fu09TGdF7WjWhaTsr73OKFHNxdC5p5pHVhSX0yfp3CLxKC2lIPKJqL0kBOemoRiuhXTirYIuW4hvjVV7UhT5t46lbFrPSes/t9IIFNoflXERPx9c4DDZaBxrlSnTO2pnE07SHaLaBegaZDrRIRCL8t6tnNhmGqwuhtX1uO3GBuPseZ75Vj9eO3v4tzWPuoRTI6dq9TkbU2uzPYSMNZsSY5n53ObuP+zUji1T+mjtkpVjaK2XD1UWcusRNmDDeOpnBiuK1e1Az4Y1+b6RGTevBZCkURmoVzQbUCR3TtTrvIqjbQqiR9RMnmdHwVnNxTwgUWhTSKCjJ2pYg1D+0XbM8vDI9MLXq3zslgNNGIzBvQGdMl3gCdOS2bKFS5fvuoQhmtb9YSQCtQNj+BYM6+28jr3apUyZ85+z801ZxUhpaZ57vlCpLVZYka5LXCANpN6p0E5+nhJujDZIznTm+lp8jg55RskjeFpkvqI0SB8Rvm5Llo+H+llNR7/vcycyejt0WaDj0deRkx7j3R1WDvvsbYbbjZ3htbMjTwSYjn1vMHkeW5+OnbYfPTp1phAhz2xrTU6q200PP5zeIq3l0rJctVbGinFScdFjIVLn0e6tbB0zEuIHp3ufUXKtDYPHJqb29rcMdvb46txbh5nlP6Orh/gSaqrQ4It+ohTlkL4QitJshNPMvI9bMHZ0lhp5hmM+MtP3ZOhOrBpEDRB9ayl3xuMxCdP3IyQnmSfk+UadifPo/HRzUFXZmPiddNZhmAiquzjnRluLbbWDfv+zKV+ySxfvfpTDVa28fp/arCv/t0qp8hfoRRAsp8uZZjgla9b7vVso2BrPo30UvA1PXX2XEUATd/J8fi8ccmTECgJGJxb2MIWHlGYDz/dPHrfa80Y6g6GBLyIsxW4J6RrhWSKEBJ48Ird7n4nONc4GvLxEJPnQ/HNtnmZopVULzwaj/RTKTIHZjyRzaO2pYwwSgqlCCIvBksKH4TXceakYg2fiOFWTE3D5mYU1Rwi0sNSe6VGuienOzzCDeFvRk4NnPYlsn3rHKvdnOM6uOuLMEKk7I66Ml1zHUX4JVdLCC2cKNbPc9QGzN2d5ZphtjZzQosiiy21RBYQHoam4um4xOpt/H86r7UZQtCdtTTNvmEmGksdtJV0wH2gvRDopcWSmVe+yUEaeep/Aj/sf4umJfSF3uBmlHT88BmwZjkjKIKKw5PSU9ugUmRn0zTlvvLyEyLC4nPWEq/pHUIKmnhYjG2OjFEoOZMmUF1ocvv65ED4zni1MBQzUnQGk8/y8jcRI+21ZUYafkl38vzCM08cCaRIrNw6NrvCN8avwByX/mF7Di8wPYoS+2FtESHRtetwHqt2XAqIi43tRCoZOq1ZL9g906yZffDX0p+BND3/Xg8JEZfE8FYHQiluyXWLO08RjMQVvhmewc7EBmYYjgtUlbIYmR43CBi/Ga2gOkwbYzMVdpZn9Npj22Q15CSlcGpbyaOFnGps5fJlk331RSrRQydK8WcKRXtptW/ufMdS1a0/K2iKaOQU774KdsK3ePvELqYnZfwPHbvl96vM/q1FxtmP9ksMnRuUmhXQzDU8okUQrFUc08+VGCYTdahAJSopQBcbHmx6ygtPTEbNGcqVVXvGcJxWHCRrZYXCR5jdhehNTwXuoWTsCHsxyZIVSgWvdDXspSlDuwMnLvYKIxS//BSkMHGO0Z1z04ZU7HQracOzOXMe9VOr5jsWNm6aUSunBVZl1bna58TUqFRtG/rEsnxprZzh3zRhKPxH3bZXFvscGEl3YUQEcPzvFEzxB+scJ9/5t8nP6vFRdHl+1Ldq+QeT/9mUxPJKTxxKcX8uLaFoza516aWbQftnUf4CX37KyjCMXACm25rNyxz5bZRPG4bberSVQcF2dyaWm2K7NT3UOK8tz9rGPBrPqsZWLpRK7EutGf5VeXXmgn22Gl2/hvkxnAa6pM7x0NJ8Eteo8V2RrbcaWU5v0AiSfl2feosoCoHz3Sm6IJ3nUSFpOkC6xGu+uIrNUHfogsymZ7zwGEQbuAKICsBAsDHFeRsccb5DrWE8eDtf5iv+DWTnJ8zjGghxPs03XAdBoad9jP8Bf+fDQXgRpDqv5RN6DLnO99DNTkOG814eoZctNxsvwJAgTKM3eULsk30b83aR/YJ+TgOlz7zOPZM+8jjPnPrUzdJOsf76jMWUAtn3XMG3P9eHXMX9L2EVukXsa29zQgMAAGxdJvRoJSR+VLLkCQbghir3AgbgfnQFO98NXkjNBgAlDAAAgX8d67gamP9YTWFufxWcD3pjAwaOwDfvtLX8JtDIZhDRgGLiRDE1wOOIGgAkf9FqUTAABAFIxQCGACg01YRWFYDq9v9jKeLr31KMN3cp0VbnWApeSlOzWeby+zGQIRKgLAcPhlAo07JH3BV8hlQXr4/XoYqE8samYCBAL3glmAGq46FdHRAy6xprPamO6p2hZ4A5MlTZmu7Y8grHBA4ESx29auwpRd2zHPiZyy+Q7vSuCS2kebAuzrdixMY9fbvIJVOw4nl84bwYfMTL7hHObmzUeImBWpnK5AyxEVZQnY1Uh02qBlYFJEQ5skF1dVKRKlaWnjLAJyMICyW+p7a2ZCypgONAhmqHkYBH2BNmIeDOGc4pTWIbxw4ASht9MOTO8BQgzjUAHrEcE7mMXCKmJiRKQncU4kmMY+lUTkw4m3BuKVISqbKhBy53WCiDG7TGJBQChDGCWpo4qBqg5J/0oDrTZ4d86LNfIsg8OIJZtinEdGwCqFBAIoUdCFQsg7cNB5CCxFt8jLM16BIpPmqO4Z9PbGyHm4glXEz6Gy3xoQIkSJ3xscSoECuYaSTzmACnGbPJg1Czs/w2TTkruO1uIGLCd2x6R7U2lnbXzVCQ4sYzJL2Dg9IM5kqpUw/sQJmxOirGLhR4LEnB9pPKDpIXu0iaF5o4ciALG9AYBoHgnFJ7JDPbXq4iwhvMUkoE2WXTSiiKO8Zydt79J4m3aecICGKDlwBzknMXpFIB6kMwJk2Fw3ba7EyRSA7ISDs8Ix0vXTQI8Jg6Chei/cTqrQfbIsbOQYEom3BAdID4sxVyoVN47PTiIL7UrizaOLqBlmGMxi4L2VDiBLnSC3IgzLA9tszWtlaFQxigrTyRE+VjxxyQUskGfgGWflMRyx1HGIjryAik6YGVXY927Mk0IIgkOhW4xxwWH+mGI6st5EAfkIIuyE5WIwTUyW9hrEPCncKUN/wHVHsZjJIjqeNlEgbauHMQ9oDb0MpKkGUbd9I93Wu3EMgw36hlTosEzCsDCTUgQXpBqF3lRpAxiWUholtfWeVD1kSu1QJPxAOWGSKjG3kDkEYYaU58Ylk16KGNAHOIdXvAcTaqfZeEfHFhD4LqGBl3QF3GzB3rTE2fYhbVVLA1x8M4+pRge+jCQHzi0IUdg+IwjTi5Q1JjYGfSC+c13QIAAA==); }</style></defs><rect x="0" y="0" width="1162.7099609375" height="654.745849609375" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(68.21875 154.823974609375) rotate(0 57.140625 41.75)"><path d="M20.88 0 C40.07 -3.44, 67.81 3.23, 93.41 0 C108.58 -1.7, 113.64 4.43, 114.28 20.88 C110.37 31.89, 114.48 43.19, 114.28 62.63 C111.97 77.06, 110.19 79.94, 93.41 83.5 C76.29 85.88, 58.8 83.04, 20.88 83.5 C5.01 86.19, 3.57 75.81, 0 62.63 C2.8 49.69, 3.12 33.02, 0 20.88 C0.67 5.24, 5.02 3.06, 20.88 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M20.88 0 C38.48 1.33, 55.66 1.28, 93.41 0 M20.88 0 C44.6 -0.2, 69.08 0.17, 93.41 0 M93.41 0 C108.93 -0.66, 114.81 6.61, 114.28 20.88 M93.41 0 C108.53 1.09, 112.71 7.42, 114.28 20.88 M114.28 20.88 C112.83 36.64, 115.76 49.99, 114.28 62.63 M114.28 20.88 C113.33 33.37, 113.92 45.86, 114.28 62.63 M114.28 62.63 C115.09 77.36, 107.86 81.53, 93.41 83.5 M114.28 62.63 C116.05 77.36, 107.29 85.79, 93.41 83.5 M93.41 83.5 C67.37 84.88, 43.52 83.69, 20.88 83.5 M93.41 83.5 C64.39 82.39, 36.31 83.79, 20.88 83.5 M20.88 83.5 C7.14 83.77, 0.22 76.33, 0 62.63 M20.88 83.5 C7.36 81.6, 0.6 75.33, 0 62.63 M0 62.63 C-1.85 48.15, 1.08 32.11, 0 20.88 M0 62.63 C0.19 51.66, -0.9 39.69, 0 20.88 M0 20.88 C1.08 6.53, 5.03 -0.9, 20.88 0 M0 20.88 C0.95 6.51, 4.8 2.2, 20.88 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g stroke-linecap="round" transform="translate(85.1171875 141.370849609375) rotate(0 57.140625 41.75)"><path d="M20.88 0 C36.65 0.88, 53.33 -3.33, 93.41 0 C106.92 -1.99, 112.95 8.68, 114.28 20.88 C113.65 31.24, 112.8 40.44, 114.28 62.63 C112.86 74.18, 104.02 84.03, 93.41 83.5 C75.64 78.75, 55.15 82.05, 20.88 83.5 C6.55 81.54, 0.98 74.7, 0 62.63 C-1.9 48.94, -3.45 40.75, 0 20.88 C2.95 9.1, 6.34 -1.4, 20.88 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M20.88 0 C44.26 1.44, 63.6 0.29, 93.41 0 M20.88 0 C40.78 -0.21, 59.6 0.09, 93.41 0 M93.41 0 C105.83 0.69, 115.59 5.93, 114.28 20.88 M93.41 0 C107.36 -0.58, 116.13 6.78, 114.28 20.88 M114.28 20.88 C115.72 29.87, 113.43 41.74, 114.28 62.63 M114.28 20.88 C115.3 30.82, 114.91 42.41, 114.28 62.63 M114.28 62.63 C112.36 76.73, 105.74 83.18, 93.41 83.5 M114.28 62.63 C112.48 74.85, 108.46 83.79, 93.41 83.5 M93.41 83.5 C67.59 85.09, 44.24 83.88, 20.88 83.5 M93.41 83.5 C77.17 82.58, 58.4 83.6, 20.88 83.5 M20.88 83.5 C8.45 84.11, 0.55 76.75, 0 62.63 M20.88 83.5 C7.06 81.8, 0.99 74.25, 0 62.63 M0 62.63 C-1.18 51.77, 0.62 41.51, 0 20.88 M0 62.63 C0.34 46.95, -0.32 30.63, 0 20.88 M0 20.88 C-0.1 6.15, 6.07 -1.37, 20.88 0 M0 20.88 C0 7.01, 8.25 -0.1, 20.88 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g stroke-linecap="round" transform="translate(316.1015625 509.745849609375) rotate(0 186.5 67.5)"><path d="M32 0 C140.02 -4.99, 249.26 -6.46, 341 0 C361.27 3.21, 371.54 8.64, 373 32 C374.4 45.04, 373.03 60.55, 373 103 C370.4 126.18, 365.21 132.91, 341 135 C225.99 138.51, 106.01 138.75, 32 135 C11.12 135.2, 3.06 121.49, 0 103 C2.24 85.97, -1.84 69.24, 0 32 C-0.72 14.27, 9.6 1.86, 32 0" stroke="none" stroke-width="0" fill="#b2f2bb"></path><path d="M32 0 C147.2 2.31, 263.84 0.13, 341 0 M32 0 C152.79 -1.4, 273.68 -0.26, 341 0 M341 0 C363.24 1.89, 371.63 8.68, 373 32 M341 0 C361.89 1.32, 374.96 8.55, 373 32 M373 32 C373.51 49.51, 371.4 69.4, 373 103 M373 32 C371.89 53.55, 372.75 74.94, 373 103 M373 103 C372.91 124.05, 363.84 135.32, 341 135 M373 103 C371.37 125.1, 364.41 133.43, 341 135 M341 135 C243.35 136, 143.9 136.22, 32 135 M341 135 C252.05 134.58, 161.61 134.64, 32 135 M32 135 C9.49 136.67, -1.21 123.37, 0 103 M32 135 C12 134.37, -0.77 125.37, 0 103 M0 103 C0.14 78.38, -1.66 53.05, 0 32 M0 103 C-1 85.17, -0.34 65.21, 0 32 M0 32 C0.75 11.29, 10.4 -0.03, 32 0 M0 32 C-2.27 12.93, 10.36 -0.31, 32 0" stroke="#2f9e44" stroke-width="2" fill="none"></path></g><g stroke-linecap="round" transform="translate(330.0703124999999 496.929443359375) rotate(0 186.5 67.5)"><path d="M32 0 C99.75 -0.07, 161.54 3.63, 341 0 C363.88 -2.2, 374.83 7.14, 373 32 C369.67 56.51, 369.73 80.69, 373 103 C371.86 121.04, 365.88 135.99, 341 135 C256.53 132.69, 168.68 133, 32 135 C10.03 134.3, -0.87 127.4, 0 103 C1.64 86.22, 3 67.78, 0 32 C1.84 9.2, 14.11 0.61, 32 0" stroke="none" stroke-width="0" fill="#b2f2bb"></path><path d="M32 0 C115.52 1.4, 198.1 0.3, 341 0 M32 0 C146.69 2.05, 260.35 1.75, 341 0 M341 0 C364.02 1.02, 374.31 9.03, 373 32 M341 0 C363.28 1.65, 374.07 10.28, 373 32 M373 32 C373.05 49.43, 374.13 67.61, 373 103 M373 32 C373.56 53.48, 373.1 74.79, 373 103 M373 103 C371.81 123.87, 362.02 136.69, 341 135 M373 103 C371.99 126.23, 362.36 135.56, 341 135 M341 135 C247.91 132.51, 156.62 132.69, 32 135 M341 135 C261.96 134.72, 182.4 134.98, 32 135 M32 135 C11.59 136.42, 0.19 124.28, 0 103 M32 135 C8.96 137.09, -1.24 125.29, 0 103 M0 103 C0.44 84.06, -1.82 68.4, 0 32 M0 103 C1.27 79.48, 0.98 56.36, 0 32 M0 32 C0.16 12.48, 10.16 0.85, 32 0 M0 32 C-0.57 10.58, 9.84 0.71, 32 0" stroke="#2f9e44" stroke-width="2" fill="none"></path></g><g stroke-linecap="round" transform="translate(477.3994140625 247.83984375) rotate(0 110.28125 47.6328125)"><path d="M23.82 0 C71.25 1.44, 121.04 -1.23, 196.75 0 C215.34 2.43, 217.56 10.86, 220.56 23.82 C220.43 39.4, 220.37 62.4, 220.56 71.45 C220.84 86.46, 210.56 97.66, 196.75 95.27 C137.78 100.62, 81.78 96.46, 23.82 95.27 C10.36 97.47, -2.73 87.07, 0 71.45 C-2.96 52.81, 0.19 35.84, 0 23.82 C0.08 10.72, 6.94 1.73, 23.82 0" stroke="none" stroke-width="0" fill="#b2f2bb"></path><path d="M23.82 0 C67.79 -0.23, 115.28 2.19, 196.75 0 M23.82 0 C72.95 0.25, 121.65 -0.72, 196.75 0 M196.75 0 C211.99 -0.05, 222.44 6.28, 220.56 23.82 M196.75 0 C213.5 0.36, 222.09 8.09, 220.56 23.82 M220.56 23.82 C221.31 37.36, 220.25 56.1, 220.56 71.45 M220.56 23.82 C219.9 38.62, 220.14 51.22, 220.56 71.45 M220.56 71.45 C219.03 87.42, 210.82 93.29, 196.75 95.27 M220.56 71.45 C219.84 88.77, 212.6 93.46, 196.75 95.27 M196.75 95.27 C140.64 96.38, 87.94 95, 23.82 95.27 M196.75 95.27 C160.68 94.58, 125.89 94.95, 23.82 95.27 M23.82 95.27 C8.02 95.61, -0.4 87.6, 0 71.45 M23.82 95.27 C6.83 96.97, 0.75 88.96, 0 71.45 M0 71.45 C0.08 56.74, -0.66 41.56, 0 23.82 M0 71.45 C-0.02 54.9, -0.79 39.32, 0 23.82 M0 23.82 C-1.09 9.87, 7.36 -1.79, 23.82 0 M0 23.82 C-0.48 8.17, 9.74 0.58, 23.82 0" stroke="#2f9e44" stroke-width="2" fill="none"></path></g><g transform="translate(511.02071380615234 270.47265625) rotate(0 76.65995025634766 25)"><text x="76.65995025634766" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Endpoint Picker</text><text x="76.65995025634766" y="42.62" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Service</text></g><g stroke-linecap="round" transform="translate(102.2177734375 127.552734375) rotate(0 57.140625 41.75)"><path d="M20.88 0 C46.28 -0.94, 80.79 0.72, 93.41 0 C104.19 2.4, 117.1 10.26, 114.28 20.88 C117.53 35.09, 113.39 42.67, 114.28 62.63 C113.78 79.14, 109.16 85.65, 93.41 83.5 C76.92 81.02, 54.36 82.46, 20.88 83.5 C4.7 83.19, 3 78.05, 0 62.63 C1.68 42.54, -0.05 30.88, 0 20.88 C-3.48 6.36, 5.12 0.21, 20.88 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M20.88 0 C46.71 1.43, 72.02 0.45, 93.41 0 M20.88 0 C39.7 -0.76, 56.01 0.02, 93.41 0 M93.41 0 C107.38 -0.04, 112.83 5.4, 114.28 20.88 M93.41 0 C105.18 -1.7, 112.43 9.16, 114.28 20.88 M114.28 20.88 C114.06 31.68, 115.46 44.3, 114.28 62.63 M114.28 20.88 C114.08 36.13, 114.93 52.01, 114.28 62.63 M114.28 62.63 C114.53 77.24, 106.51 82.14, 93.41 83.5 M114.28 62.63 C113.73 75.85, 107.43 85.02, 93.41 83.5 M93.41 83.5 C73.07 83.17, 56.48 82.82, 20.88 83.5 M93.41 83.5 C73.98 83.5, 55.11 83.83, 20.88 83.5 M20.88 83.5 C8.61 83.03, 0.17 77.43, 0 62.63 M20.88 83.5 C7.32 83.09, -1.65 74.76, 0 62.63 M0 62.63 C1.3 47.78, -0.48 30.94, 0 20.88 M0 62.63 C-0.89 52.85, -0.46 41.69, 0 20.88 M0 20.88 C-1.45 5.25, 8.55 1.64, 20.88 0 M0 20.88 C0.61 4.94, 6.82 -1.54, 20.88 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(128.9084243774414 144.302734375) rotate(0 30.449974060058594 25)"><text x="30.449974060058594" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Model</text><text x="30.449974060058594" y="42.62" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Server</text></g><g stroke-linecap="round" transform="translate(470.3876953125 10) rotate(0 110.28125 47.6328125)"><path d="M23.82 0 C69.04 -0.44, 115.41 -2.92, 196.75 0 C211.63 1.35, 222.48 11.39, 220.56 23.82 C220.18 31.29, 219.35 45.04, 220.56 71.45 C222.5 85.21, 210.82 94.98, 196.75 95.27 C148.05 99.11, 107.88 97.98, 23.82 95.27 C8.15 91.93, -0.33 86.03, 0 71.45 C-0.17 62.04, 1.9 51.19, 0 23.82 C-1.35 11.01, 11.48 -1.99, 23.82 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M23.82 0 C80.54 1.26, 135.33 -1.37, 196.75 0 M23.82 0 C83.27 0.83, 144.24 0.1, 196.75 0 M196.75 0 C212.38 -1.16, 222.02 7.56, 220.56 23.82 M196.75 0 C210.97 -0.21, 218.68 7.7, 220.56 23.82 M220.56 23.82 C220.3 39.34, 220.95 54.89, 220.56 71.45 M220.56 23.82 C221.75 40.07, 221.52 55.58, 220.56 71.45 M220.56 71.45 C219.87 87.55, 213.15 94.55, 196.75 95.27 M220.56 71.45 C220.64 87.7, 212.04 93.53, 196.75 95.27 M196.75 95.27 C150.02 97.34, 100.19 98.1, 23.82 95.27 M196.75 95.27 C159.18 95.87, 122.12 97.55, 23.82 95.27 M23.82 95.27 C7.17 96.38, 0 86.34, 0 71.45 M23.82 95.27 C9.37 95.14, -1.77 87.34, 0 71.45 M0 71.45 C1.78 54.35, -0.91 36.58, 0 23.82 M0 71.45 C0.11 52.85, -0.74 36.39, 0 23.82 M0 23.82 C1.23 8.88, 8.75 -0.46, 23.82 0 M0 23.82 C-2.1 6.39, 6.03 -2.19, 23.82 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(481.6190081834793 45.1328125) rotate(0 99.04993712902069 12.5)"><text x="99.04993712902069" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">L7 Proxy / Gateway</text></g><g stroke-linecap="round"><g transform="translate(583.2613405725397 110.44140625) rotate(0 -0.07744763001983301 69.37890625)"><path d="M-1.19 0.76 C-0.89 23.95, 0.52 115.91, 0.88 139.07" stroke="#2f9e44" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(583.2613405725397 110.44140625) rotate(0 -0.07744763001983301 69.37890625)"><path d="M-8.03 115.71 C-4.77 122.76, -3.52 128.17, 0.88 139.07" stroke="#2f9e44" stroke-width="2.5" fill="none"></path></g><g transform="translate(583.2613405725397 110.44140625) rotate(0 -0.07744763001983301 69.37890625)"><path d="M9.07 115.45 C8.49 122.39, 5.9 127.85, 0.88 139.07" stroke="#2f9e44" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(768.5498046874999 490.203125) rotate(0 192.08007812500006 67.5)"><path d="M32 0 C158.04 4.59, 289.17 2.11, 352.16 0 C374.5 2.14, 385.78 14.17, 384.16 32 C380.34 58.45, 384.72 90.14, 384.16 103 C384.95 121.39, 372.03 134.63, 352.16 135 C283.11 135.67, 217.71 136.84, 32 135 C10.4 134.18, -0.97 122.58, 0 103 C-2.31 73.54, 2.48 47.77, 0 32 C-0.77 8.01, 9.96 -0.29, 32 0" stroke="none" stroke-width="0" fill="#b2f2bb"></path><path d="M32 0 C125.72 -0.2, 220.61 0.88, 352.16 0 M32 0 C100.58 -2.23, 168.62 -2.12, 352.16 0 M352.16 0 C371.8 -0.78, 382.64 12.44, 384.16 32 M352.16 0 C373.2 1.21, 384.15 9.66, 384.16 32 M384.16 32 C383.15 60.37, 385.37 87.56, 384.16 103 M384.16 32 C384.71 58, 384.05 83.35, 384.16 103 M384.16 103 C384.41 125.28, 373.49 136.81, 352.16 135 M384.16 103 C385.42 122.08, 373.35 135.39, 352.16 135 M352.16 135 C252.85 132.7, 152.26 134.2, 32 135 M352.16 135 C277.01 137.27, 202.72 136.84, 32 135 M32 135 C9.75 134.61, 0.37 123.55, 0 103 M32 135 C10.58 134.83, 0.13 123.49, 0 103 M0 103 C-0.39 76.36, -0.28 46.02, 0 32 M0 103 C0.19 85.91, -1.05 68.06, 0 32 M0 32 C1.64 10.1, 11.49 -1.64, 32 0 M0 32 C-0.34 12.02, 8.7 -1.11, 32 0" stroke="#2f9e44" stroke-width="2" fill="none"></path></g><g transform="translate(773.5498046874999 507.703125) rotate(0 186.12994003295904 50)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">            InferencePool API</text><text x="0" y="42.62" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> Selects</text><text x="0" y="67.62" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> - the model servers (the endpoints)</text><text x="0" y="92.62" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> - the endpoint picker service</text></g><g stroke-linecap="round"><g transform="translate(462.5791015625 281.07421875) rotate(0 -121.759765625 -29.005859375)"><path d="M-0.98 0.09 C-24.45 -1.97, -100.69 -2.65, -141.04 -12.38 C-181.39 -22.1, -225.85 -50.8, -243.06 -58.27" stroke="#2f9e44" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(462.5791015625 281.07421875) rotate(0 -121.759765625 -29.005859375)"><path d="M-218.27 -55.08 C-225.22 -56.5, -232.35 -56.35, -243.06 -58.27" stroke="#2f9e44" stroke-width="2.5" fill="none"></path></g><g transform="translate(462.5791015625 281.07421875) rotate(0 -121.759765625 -29.005859375)"><path d="M-226.12 -39.89 C-230.82 -45.59, -235.69 -49.8, -243.06 -58.27" stroke="#2f9e44" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g transform="translate(273.1737523901456 211.21875) rotate(0 68.55846812991925 25)"><text x="68.55846812991923" y="17.5" font-family="Comic Shanns, monospace, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Model Server</text><text x="68.55846812991923" y="42.5" font-family="Comic Shanns, monospace, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Protocol</text></g><g stroke-linecap="round"><g transform="translate(443.85546875 58.15234375) rotate(0 -112.228515625 29.22265625)"><path d="M-0.68 -1.1 C-20.79 -0.89, -83.63 -8.3, -120.94 1.71 C-158.25 11.72, -207.44 49.33, -224.56 58.94 M1.16 0.93 C-18.54 1.29, -80.92 -6.18, -118.67 3.14 C-156.43 12.46, -208 47.83, -225.37 56.86" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(443.85546875 58.15234375) rotate(0 -112.228515625 29.22265625)"><path d="M-209.44 37.6 C-215.6 41.42, -218.51 47.98, -225.37 56.86 M-209.44 37.6 C-215.11 44.17, -220.1 49.91, -225.37 56.86" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(443.85546875 58.15234375) rotate(0 -112.228515625 29.22265625)"><path d="M-200.78 52.35 C-209.39 52.05, -214.69 54.54, -225.37 56.86 M-200.78 52.35 C-209.52 53.95, -217.46 54.65, -225.37 56.86" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g transform="translate(275.7103710609954 18.6875) rotate(0 51.191972689004615 12.5)"><text x="51.19197268900463" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Traffic</text></g><g transform="translate(468.03412875362244 156.51953125) rotate(0 55.69806259269109 25)"><text x="55.698062592691095" y="17.5" font-family="Comic Shanns, monospace, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Extension</text><text x="55.698062592691095" y="42.5" font-family="Comic Shanns, monospace, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Protocol</text></g><g stroke-linecap="round" transform="translate(822.63671875 250.1328125) rotate(0 110.28125 47.6328125)"><path d="M23.82 0 C61.47 -0.69, 93.52 4.98, 196.75 0 C216.1 2.95, 223.17 4.92, 220.56 23.82 C224.42 39.65, 219.59 49.22, 220.56 71.45 C219.08 90.46, 214.22 93.4, 196.75 95.27 C147.6 97.33, 98.46 99.1, 23.82 95.27 C7.29 95.04, 2.09 89.95, 0 71.45 C2.45 56.24, 2.75 44.41, 0 23.82 C0.67 10.72, 4.9 -3.22, 23.82 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M23.82 0 C73.46 0.23, 122.54 1.22, 196.75 0 M23.82 0 C70 0.09, 116.01 0.21, 196.75 0 M196.75 0 C213.09 -1.96, 219.85 9.16, 220.56 23.82 M196.75 0 C213.11 1.41, 220.05 7.44, 220.56 23.82 M220.56 23.82 C219.35 39.84, 220.74 55.1, 220.56 71.45 M220.56 23.82 C221.36 41.8, 220.53 62.25, 220.56 71.45 M220.56 71.45 C220.81 86.59, 213.06 93.69, 196.75 95.27 M220.56 71.45 C221.05 85.71, 210.41 93.9, 196.75 95.27 M196.75 95.27 C158.77 95.3, 116.48 95.21, 23.82 95.27 M196.75 95.27 C151.77 95.73, 105.1 95.39, 23.82 95.27 M23.82 95.27 C8.09 97.01, -1.6 86.27, 0 71.45 M23.82 95.27 C6.69 97.13, -1.41 85.29, 0 71.45 M0 71.45 C0.19 59.05, 0.6 44.44, 0 23.82 M0 71.45 C0.06 53.44, -0.92 36.28, 0 23.82 M0 23.82 C0.36 7.78, 8.38 -1.5, 23.82 0 M0 23.82 C-0.1 8.68, 5.78 -2.16, 23.82 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(839.5780334472656 285.265625) rotate(0 93.33993530273438 12.5)"><text x="93.33993530273438" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Gateway Controller</text></g><g stroke-linecap="round" transform="translate(939.5 12.625) rotate(0 81.77734375 41.41015625)"><path d="M20.71 0 C56.95 1.65, 89.18 -0.68, 142.85 0 C159.8 -0.58, 166.6 10.18, 163.55 20.71 C161.08 33.25, 165.55 40.16, 163.55 62.12 C166.23 78.86, 156.24 80.86, 142.85 82.82 C99.65 80.64, 52.44 83.77, 20.71 82.82 C7.49 80.52, 1.3 75.62, 0 62.12 C-0.76 50.89, 2.19 39.45, 0 20.71 C2.33 4.4, 3.71 -0.81, 20.71 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M20.71 0 C65.19 -0.08, 112.71 -1.26, 142.85 0 M20.71 0 C46.04 0.33, 70.7 0.37, 142.85 0 M142.85 0 C157.33 0.63, 162.82 8.21, 163.55 20.71 M142.85 0 C157.68 0.45, 161.53 7.71, 163.55 20.71 M163.55 20.71 C165.74 33.72, 162.01 49.31, 163.55 62.12 M163.55 20.71 C163.68 31.27, 163.54 43.83, 163.55 62.12 M163.55 62.12 C164.24 75.7, 157.52 81.56, 142.85 82.82 M163.55 62.12 C164.79 76.17, 156.97 81.05, 142.85 82.82 M142.85 82.82 C99.61 85.16, 56.9 82.6, 20.71 82.82 M142.85 82.82 C111.28 81.63, 80.2 81.85, 20.71 82.82 M20.71 82.82 C7.12 82.37, 0.01 77.24, 0 62.12 M20.71 82.82 C5.96 81.25, 0.02 77.13, 0 62.12 M0 62.12 C0.89 47.15, -0.73 31.99, 0 20.71 M0 62.12 C0.69 46.92, -0.55 31.39, 0 20.71 M0 20.71 C1.74 6.85, 8.29 1.3, 20.71 0 M0 20.71 C-0.27 8.52, 8.72 -1.06, 20.71 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(994.1373672485352 41.53515625) rotate(0 27.139976501464844 12.5)"><text x="27.139976501464844" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Client</text></g><g stroke-linecap="round"><g transform="translate(922.86328125 52.800949860671494) rotate(0 -105.361328125 -0.8692249303357471)"><path d="M0.05 -1.15 C-35.27 -1.48, -175.62 -1.12, -210.8 -1.08 M-1.38 0.86 C-36.97 0.11, -176.69 -2.25, -211.78 -2.85" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(922.86328125 52.800949860671494) rotate(0 -105.361328125 -0.8692249303357471)"><path d="M-188.15 -11 C-199.38 -7.88, -205.73 -5.01, -211.78 -2.85 M-188.15 -11 C-196.2 -7.3, -205.19 -5.52, -211.78 -2.85" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(922.86328125 52.800949860671494) rotate(0 -105.361328125 -0.8692249303357471)"><path d="M-188.44 6.1 C-199.68 2.44, -205.91 -1.47, -211.78 -2.85 M-188.44 6.1 C-196.43 3.45, -205.31 -1.13, -211.78 -2.85" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g transform="translate(769.3978710609954 17.177734375) rotate(0 51.191972689004615 12.5)"><text x="51.19197268900463" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Traffic</text></g><g stroke-linecap="round"><g transform="translate(928.5772506621181 219.29633228183508) rotate(188.5660498991342 -120.40162861425495 -46.92349377479326)"><path d="M0.36 0.29 C-18.72 -4.9, -73.42 -14.9, -113.8 -30.55 C-154.19 -46.2, -220.65 -83.14, -241.95 -93.61" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(928.5772506621181 219.29633228183508) rotate(188.5660498991342 -120.40162861425495 -46.92349377479326)"><path d="M-24.48 3.06 C-15.16 2.08, -6.74 -0.91, 0.36 0.29" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g><g transform="translate(928.5772506621181 219.29633228183508) rotate(188.5660498991342 -120.40162861425495 -46.92349377479326)"><path d="M-20.45 -13.56 C-12.49 -8.61, -5.51 -5.67, 0.36 0.29" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g transform="translate(808.2207168425398 138.22265625) rotate(0 65.25584565746021 12.5)"><text x="65.25584565746026" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Configures</text></g><g stroke-linecap="round"><g transform="translate(936.1958922859567 362.769287109375) rotate(0 -23.21419036734494 58.019165039062386)"><path d="M-1.13 -0.25 C-2.06 8.87, 1.28 36.06, -6.23 55.34 C-13.74 74.61, -39.48 105.14, -46.19 115.41" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(936.1958922859567 362.769287109375) rotate(0 -23.21419036734494 58.019165039062386)"><path d="M-39.18 91.41 C-41.21 95.6, -42.88 103.65, -46.19 115.41" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g><g transform="translate(936.1958922859567 362.769287109375) rotate(0 -23.21419036734494 58.019165039062386)"><path d="M-25.4 101.53 C-30.9 103.08, -35.99 108.61, -46.19 115.41" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g transform="translate(916.1386855925398 411.0198168925692) rotate(0 65.25584565746021 12.5)"><text x="65.25584565746026" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Watches</text></g><g stroke-linecap="round"><g transform="translate(588.5429687499998 351.429443359375) rotate(0 122.8481522518822 57.28979177205491)"><path d="M0.47 -0.11 C22.8 4.97, 94.27 11.32, 135.12 30.3 C175.96 49.28, 227.09 99.84, 245.55 113.78" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(588.5429687499998 351.429443359375) rotate(0 122.8481522518822 57.28979177205491)"><path d="M222.1 105.1 C231.12 108.37, 241.01 111.58, 245.55 113.78" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g><g transform="translate(588.5429687499998 351.429443359375) rotate(0 122.8481522518822 57.28979177205491)"><path d="M233.16 92.06 C237.82 100.5, 243.37 108.82, 245.55 113.78" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g transform="translate(548.2324355925398 380.9690356425692) rotate(0 65.25584565746027 12.5)"><text x="65.25584565746026" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Watches</text></g><g stroke-linecap="round"><g transform="translate(576.5078124999999 352.515380859375) rotate(0 -44.48890245947399 58.01171875)"><path d="M0.29 0.13 C-8.58 7.05, -38.57 21.75, -53.43 41.23 C-68.3 60.7, -83.15 104.69, -88.91 116.98" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(576.5078124999999 352.515380859375) rotate(0 -44.48890245947399 58.01171875)"><path d="M-87.94 91.99 C-88.07 99.24, -86.69 106.09, -88.91 116.98" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g><g transform="translate(576.5078124999999 352.515380859375) rotate(0 -44.48890245947399 58.01171875)"><path d="M-72.11 98.46 C-76.65 103.94, -79.69 108.97, -88.91 116.98" stroke="#1e1e1e" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(345.9375000000001 482.374755859375) rotate(0 192.640625 67.5)"><path d="M32 0 C124.8 2.14, 219.69 1.16, 353.28 0 C373.53 -2.23, 388.32 9.95, 385.28 32 C385.01 47.4, 383.1 64.23, 385.28 103 C383.05 124.97, 371.76 134.65, 353.28 135 C254.19 135.34, 159.26 135.32, 32 135 C12.11 132, 1.72 125.61, 0 103 C1.89 83.85, 1.87 72.43, 0 32 C-3.44 11.92, 9.2 -1.19, 32 0" stroke="none" stroke-width="0" fill="#b2f2bb"></path><path d="M32 0 C104.31 -1.26, 178.52 0.55, 353.28 0 M32 0 C102.8 -0.83, 174.05 -0.62, 353.28 0 M353.28 0 C376.58 -1.79, 386.27 10.59, 385.28 32 M353.28 0 C373.19 -0.61, 383.09 11.87, 385.28 32 M385.28 32 C384.58 50.05, 387.68 68.55, 385.28 103 M385.28 32 C385.16 60.8, 385.86 88.87, 385.28 103 M385.28 103 C386.65 124, 373.36 136.9, 353.28 135 M385.28 103 C383.65 122.77, 375.36 133.82, 353.28 135 M353.28 135 C263.61 135.48, 172.06 134.17, 32 135 M353.28 135 C287.69 133.75, 221.64 133.19, 32 135 M32 135 C11.51 134.85, 0.4 125.7, 0 103 M32 135 C8.6 136.46, 1.03 122.73, 0 103 M0 103 C-0.97 75.24, 1.04 47.9, 0 32 M0 103 C-0.29 85.46, 1.51 67.2, 0 32 M0 32 C1.75 11.96, 11.27 0.67, 32 0 M0 32 C0.96 9.77, 10.61 1.16, 32 0" stroke="#2f9e44" stroke-width="2" fill="none"></path></g><g transform="translate(350.9375000000001 499.874755859375) rotate(0 167.35987854003906 50)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">         InferenceObjective API</text><text x="0" y="42.62" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> Defines</text><text x="0" y="67.62" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> - serving objectives for matching </text><text x="0" y="92.62" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">   requests</text></g><g stroke-linecap="round"><g transform="translate(466.70349253341556 319.4214301116765) rotate(0 -133.21484375 45.662109375)"><path d="M0.85 -1.12 C-25.83 1.76, -116.7 1.03, -161.23 16.39 C-205.76 31.75, -248.8 78.51, -266.33 91.04" stroke="#2f9e44" stroke-width="2.5" fill="none" stroke-dasharray="8 10"></path></g><g transform="translate(466.70349253341556 319.4214301116765) rotate(0 -133.21484375 45.662109375)"><path d="M-22.02 8.97 C-19.1 7.6, -11.91 4.8, 0.85 -1.12" stroke="#2f9e44" stroke-width="2.5" fill="none"></path></g><g transform="translate(466.70349253341556 319.4214301116765) rotate(0 -133.21484375 45.662109375)"><path d="M-23.16 -8.09 C-20.13 -5.95, -12.71 -5.23, 0.85 -1.12" stroke="#2f9e44" stroke-width="2.5" fill="none"></path></g></g><mask></mask><g transform="translate(277.3282506200807 346.804443359375) rotate(0 72.95104625491925 25)"><text x="72.95104625491925" y="17.5" font-family="Comic Shanns, monospace, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Observability</text><text x="72.95104625491925" y="42.5" font-family="Comic Shanns, monospace, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Protocol</text></g><g stroke-linecap="round" transform="translate(10 400.050537109375) rotate(0 85.671875 55)"><path d="M27.5 0 C57.96 0.23, 92.07 -2.16, 143.84 0 C161.98 -1.62, 171.53 10.07, 171.34 27.5 C172.01 46.69, 172.38 68.01, 171.34 82.5 C169.13 104.28, 159.03 113.05, 143.84 110 C96.78 106.99, 54.06 111.19, 27.5 110 C8.1 113.16, -3.25 101.52, 0 82.5 C3.07 64.43, 1.44 46.39, 0 27.5 C-1.67 6.06, 12.67 3.19, 27.5 0" stroke="none" stroke-width="0" fill="#ffec99"></path><path d="M27.5 0 C58.62 0.1, 86.75 -0.75, 143.84 0 M27.5 0 C66.17 1.24, 103.86 0.14, 143.84 0 M143.84 0 C160.73 1.75, 169.79 10.1, 171.34 27.5 M143.84 0 C162.38 2.15, 171.96 8.78, 171.34 27.5 M171.34 27.5 C170.44 50.01, 172.38 71.02, 171.34 82.5 M171.34 27.5 C172.51 49.03, 171.57 70.72, 171.34 82.5 M171.34 82.5 C171.08 100.74, 161.79 108.79, 143.84 110 M171.34 82.5 C169.18 99.21, 163.59 112.09, 143.84 110 M143.84 110 C100.17 110.08, 56.23 110.56, 27.5 110 M143.84 110 C97.23 108.17, 51.87 108.41, 27.5 110 M27.5 110 C8.79 111.81, -1.3 100.22, 0 82.5 M27.5 110 C11.27 110.65, -0.82 102.29, 0 82.5 M0 82.5 C1.49 66.6, -0.48 54.73, 0 27.5 M0 82.5 C-0.44 69.52, 0.7 54.3, 0 27.5 M0 27.5 C-1.19 9.05, 11.1 -1.12, 27.5 0 M0 27.5 C-1.28 8.1, 10.63 1.93, 27.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(33.09192307293415 430.050537109375) rotate(0 62.57995192706585 25)"><text x="62.57995192706585" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Observability</text><text x="62.57995192706585" y="42.62" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Dashboards</text></g></svg>
\ No newline at end of file
diff --git a/docs/scheduler-flowchart.png b/docs/scheduler-flowchart.png
deleted file mode 100644
index 4459ef1..0000000
Binary files a/docs/scheduler-flowchart.png and /dev/null differ
diff --git a/go.mod b/go.mod
index cddf7e7..1a60c36 100644
--- a/go.mod
+++ b/go.mod
@@ -10,24 +10,24 @@ require (
 	github.com/google/go-cmp v0.7.0
 	github.com/google/uuid v1.6.0
 	github.com/hashicorp/golang-lru/v2 v2.0.7
-	github.com/onsi/ginkgo/v2 v2.25.1
+	github.com/onsi/ginkgo/v2 v2.25.3
 	github.com/onsi/gomega v1.38.2
-	github.com/prometheus/client_golang v1.23.0
+	github.com/prometheus/client_golang v1.23.2
 	github.com/prometheus/client_model v0.6.2
-	github.com/prometheus/common v0.65.0
+	github.com/prometheus/common v0.66.1
 	github.com/prometheus/prometheus v0.305.0
-	github.com/stretchr/testify v1.11.0
+	github.com/stretchr/testify v1.11.1
 	go.uber.org/multierr v1.11.0
 	go.uber.org/zap v1.27.0
 	golang.org/x/sync v0.17.0
-	google.golang.org/grpc v1.75.0
-	google.golang.org/protobuf v1.36.8
-	k8s.io/api v0.34.0
-	k8s.io/apiextensions-apiserver v0.34.0
-	k8s.io/apimachinery v0.34.0
-	k8s.io/client-go v0.34.0
-	k8s.io/code-generator v0.34.0
-	k8s.io/component-base v0.34.0
+	google.golang.org/grpc v1.75.1
+	google.golang.org/protobuf v1.36.9
+	k8s.io/api v0.34.1
+	k8s.io/apiextensions-apiserver v0.34.1
+	k8s.io/apimachinery v0.34.1
+	k8s.io/client-go v0.34.1
+	k8s.io/code-generator v0.34.1
+	k8s.io/component-base v0.34.1
 	k8s.io/utils v0.0.0-20250604170112-4c0f3b243397
 	sigs.k8s.io/controller-runtime v0.21.0
 	sigs.k8s.io/controller-tools v0.19.0
@@ -124,7 +124,7 @@ require (
 	gopkg.in/inf.v0 v0.9.1 // indirect
 	gopkg.in/yaml.v2 v2.4.0 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
-	k8s.io/apiserver v0.34.0 // indirect
+	k8s.io/apiserver v0.34.1 // indirect
 	k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f // indirect
 	k8s.io/klog/v2 v2.130.1 // indirect
 	k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
diff --git a/go.sum b/go.sum
index f1d01ec..817b54b 100644
--- a/go.sum
+++ b/go.sum
@@ -196,8 +196,8 @@ github.com/oklog/ulid/v2 v2.1.1 h1:suPZ4ARWLOJLegGFiZZ1dFAkqzhMjL3J1TzI+5wHz8s=
 github.com/oklog/ulid/v2 v2.1.1/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ=
 github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
 github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/ginkgo/v2 v2.25.1 h1:Fwp6crTREKM+oA6Cz4MsO8RhKQzs2/gOIVOUscMAfZY=
-github.com/onsi/ginkgo/v2 v2.25.1/go.mod h1:ppTWQ1dh9KM/F1XgpeRqelR+zHVwV81DGRSDnFxK7Sk=
+github.com/onsi/ginkgo/v2 v2.25.3 h1:Ty8+Yi/ayDAGtk4XxmmfUy4GabvM+MegeB4cDLRi6nw=
+github.com/onsi/ginkgo/v2 v2.25.3/go.mod h1:43uiyQC4Ed2tkOzLsEYm7hnrb7UJTWHYNsuy3bG/snE=
 github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A=
 github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k=
 github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
@@ -211,12 +211,12 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI
 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
 github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
-github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc=
-github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE=
+github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
+github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
 github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
 github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
-github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE=
-github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
+github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs=
+github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA=
 github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
 github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
 github.com/prometheus/prometheus v0.305.0 h1:UO/LsM32/E9yBDtvQj8tN+WwhbyWKR10lO35vmFLx0U=
@@ -242,8 +242,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8=
-github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
+github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
+github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
 github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
 github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
 github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -343,10 +343,10 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:
 google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
-google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4=
-google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ=
-google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
-google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
+google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI=
+google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ=
+google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw=
+google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
@@ -361,20 +361,20 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-k8s.io/api v0.34.0 h1:L+JtP2wDbEYPUeNGbeSa/5GwFtIA662EmT2YSLOkAVE=
-k8s.io/api v0.34.0/go.mod h1:YzgkIzOOlhl9uwWCZNqpw6RJy9L2FK4dlJeayUoydug=
-k8s.io/apiextensions-apiserver v0.34.0 h1:B3hiB32jV7BcyKcMU5fDaDxk882YrJ1KU+ZSkA9Qxoc=
-k8s.io/apiextensions-apiserver v0.34.0/go.mod h1:hLI4GxE1BDBy9adJKxUxCEHBGZtGfIg98Q+JmTD7+g0=
-k8s.io/apimachinery v0.34.0 h1:eR1WO5fo0HyoQZt1wdISpFDffnWOvFLOOeJ7MgIv4z0=
-k8s.io/apimachinery v0.34.0/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
-k8s.io/apiserver v0.34.0 h1:Z51fw1iGMqN7uJ1kEaynf2Aec1Y774PqU+FVWCFV3Jg=
-k8s.io/apiserver v0.34.0/go.mod h1:52ti5YhxAvewmmpVRqlASvaqxt0gKJxvCeW7ZrwgazQ=
-k8s.io/client-go v0.34.0 h1:YoWv5r7bsBfb0Hs2jh8SOvFbKzzxyNo0nSb0zC19KZo=
-k8s.io/client-go v0.34.0/go.mod h1:ozgMnEKXkRjeMvBZdV1AijMHLTh3pbACPvK7zFR+QQY=
-k8s.io/code-generator v0.34.0 h1:Ze2i1QsvUprIlX3oHiGv09BFQRLCz+StA8qKwwFzees=
-k8s.io/code-generator v0.34.0/go.mod h1:Py2+4w2HXItL8CGhks8uI/wS3Y93wPKO/9mBQUYNua0=
-k8s.io/component-base v0.34.0 h1:bS8Ua3zlJzapklsB1dZgjEJuJEeHjj8yTu1gxE2zQX8=
-k8s.io/component-base v0.34.0/go.mod h1:RSCqUdvIjjrEm81epPcjQ/DS+49fADvGSCkIP3IC6vg=
+k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
+k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
+k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
+k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc=
+k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=
+k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA=
+k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0=
+k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY=
+k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8=
+k8s.io/code-generator v0.34.1 h1:WpphT26E+j7tEgIUfFr5WfbJrktCGzB3JoJH9149xYc=
+k8s.io/code-generator v0.34.1/go.mod h1:DeWjekbDnJWRwpw3s0Jat87c+e0TgkxoR4ar608yqvg=
+k8s.io/component-base v0.34.1 h1:v7xFgG+ONhytZNFpIz5/kecwD+sUhVE6HU7qQUiRM4A=
+k8s.io/component-base v0.34.1/go.mod h1:mknCpLlTSKHzAQJJnnHVKqjxR7gBeHRv0rPXA7gdtQ0=
 k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f h1:SLb+kxmzfA87x4E4brQzB33VBbT2+x7Zq9ROIHmGn9Q=
 k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU=
 k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
diff --git a/hack/release-quickstart.sh b/hack/release-quickstart.sh
index 22c7051..04b79a3 100755
--- a/hack/release-quickstart.sh
+++ b/hack/release-quickstart.sh
@@ -74,25 +74,21 @@ sed -i.bak "s|kubectl apply -k https://github.com/kubernetes-sigs/gateway-api-in
 # -----------------------------------------------------------------------------
 # Update image references
 # -----------------------------------------------------------------------------
-EPP="config/manifests/inferencepool-resources.yaml"
 #TODO: Put all helm values files into an array to loop over
 EPP_HELM="config/charts/inferencepool/values.yaml"
 BBR_HELM="config/charts/body-based-routing/values.yaml"
 CONFORMANCE_MANIFESTS="conformance/resources/base.yaml"
-echo "Updating ${EPP}, ${EPP_HELM}, ${BBR_HELM}, and ${CONFORMANCE_MANIFESTS} ..."
+echo "Updating ${EPP_HELM}, ${BBR_HELM}, and ${CONFORMANCE_MANIFESTS} ..."
 
 # Update the container tag.
-sed -i.bak -E "s|(us-central1-docker\.pkg\.dev/k8s-staging-images/gateway-api-inference-extension/epp:)[^\"[:space:]]+|\1${RELEASE_TAG}|g" "$EPP"
 sed -i.bak -E "s|(tag: )[^\"[:space:]]+|\1${RELEASE_TAG}|g" "$EPP_HELM"
 sed -i.bak -E "s|(tag: )[^\"[:space:]]+|\1${RELEASE_TAG}|g" "$BBR_HELM"
 sed -i.bak -E "s|(us-central1-docker\.pkg\.dev/k8s-staging-images/gateway-api-inference-extension/epp:)[^\"[:space:]]+|\1${RELEASE_TAG}|g" "$CONFORMANCE_MANIFESTS"
 
 # Update the container image pull policy.
-sed -i.bak '/us-central1-docker.pkg.dev\/k8s-staging-images\/gateway-api-inference-extension\/epp/{n;s/Always/IfNotPresent/;}' "$EPP"
 sed -i.bak '/us-central1-docker.pkg.dev\/k8s-staging-images\/gateway-api-inference-extension\/epp/{n;s/Always/IfNotPresent/;}' "$CONFORMANCE_MANIFESTS"
 
 # Update the container registry.
-sed -i.bak -E "s|us-central1-docker\.pkg\.dev/k8s-staging-images|registry.k8s.io|g" "$EPP"
 sed -i.bak -E "s|us-central1-docker\.pkg\.dev/k8s-staging-images|registry.k8s.io|g" "$EPP_HELM"
 sed -i.bak -E "s|us-central1-docker\.pkg\.dev/k8s-staging-images|registry.k8s.io|g" "$BBR_HELM"
 sed -i.bak -E "s|us-central1-docker\.pkg\.dev/k8s-staging-images|registry.k8s.io|g" "$CONFORMANCE_MANIFESTS"
@@ -139,8 +135,8 @@ sed -i.bak -E "s|us-central1-docker\.pkg\.dev/k8s-staging-images|registry.k8s.io
 # -----------------------------------------------------------------------------
 # Stage the changes
 # -----------------------------------------------------------------------------
-echo "Staging $VERSION_FILE $UPDATED_CRD $README $EPP $EPP_HELM $BBR_HELM $CONFORMANCE_MANIFESTS $VLLM_GPU_DEPLOY $VLLM_CPU_DEPLOY $VLLM_SIM_DEPLOY files..."
-git add $VERSION_FILE $UPDATED_CRD $README $EPP $EPP_HELM $BBR_HELM $CONFORMANCE_MANIFESTS $VLLM_GPU_DEPLOY $VLLM_CPU_DEPLOY $VLLM_SIM_DEPLOY
+echo "Staging $VERSION_FILE $UPDATED_CRD $README $EPP_HELM $BBR_HELM $CONFORMANCE_MANIFESTS $VLLM_GPU_DEPLOY $VLLM_CPU_DEPLOY $VLLM_SIM_DEPLOY files..."
+git add $VERSION_FILE $UPDATED_CRD $README $EPP_HELM $BBR_HELM $CONFORMANCE_MANIFESTS $VLLM_GPU_DEPLOY $VLLM_CPU_DEPLOY $VLLM_SIM_DEPLOY
 
 # -----------------------------------------------------------------------------
 # Cleanup backup files and finish
diff --git a/internal/runnable/grpc.go b/internal/runnable/grpc.go
index 82b7b85..5db5f9e 100644
--- a/internal/runnable/grpc.go
+++ b/internal/runnable/grpc.go
@@ -37,8 +37,7 @@ func GRPCServer(name string, srv *grpc.Server, port int) manager.Runnable {
 		// Start listening.
 		lis, err := net.Listen("tcp", fmt.Sprintf(":%d", port))
 		if err != nil {
-			log.Error(err, "gRPC server failed to listen")
-			return err
+			return fmt.Errorf("gRPC server failed to listen - %w", err)
 		}
 
 		log.Info("gRPC server listening", "port", port)
@@ -59,8 +58,7 @@ func GRPCServer(name string, srv *grpc.Server, port int) manager.Runnable {
 
 		// Keep serving until terminated.
 		if err := srv.Serve(lis); err != nil && err != grpc.ErrServerStopped {
-			log.Error(err, "gRPC server failed")
-			return err
+			return fmt.Errorf("gRPC server failed - %w", err)
 		}
 		log.Info("gRPC server terminated")
 		return nil
diff --git a/mkdocs.yml b/mkdocs.yml
index 78f1cb8..8262f6f 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -56,6 +56,7 @@ nav:
         Design Principles: concepts/design-principles.md
         Conformance: concepts/conformance.md
         Roles and Personas: concepts/roles-and-personas.md
+        Priority and Capacity: concepts/priority-and-capacity.md
     - Implementations:
       - Gateways: implementations/gateways.md
       - Model Servers: implementations/model-servers.md
@@ -65,13 +66,12 @@ nav:
       - Getting started: guides/index.md
       - Use Cases:
         - Serve Multiple GenAI models: guides/serve-multiple-genai-models.md
-        - Serve Multiple LoRA adapters: guides/serve-multiple-lora-adapters.md
       - Rollout:
         - Adapter Rollout: guides/adapter-rollout.md
         - InferencePool Rollout: guides/inferencepool-rollout.md
       - Metrics and Observability: guides/metrics-and-observability.md
       - Configuration Guide:
-          - Configuring the plugins via configuration files or text: guides/epp-configuration/config-text.md
+          - Configuring the plugins via configuration YAML file: guides/epp-configuration/config-text.md
           - Prefix Cache Aware Plugin: guides/epp-configuration/prefix-aware.md
       - Troubleshooting Guide: guides/troubleshooting.md
     - Implementer Guides:
@@ -82,9 +82,10 @@ nav:
     - Regression Testing: performance/regression-testing/index.md
   - Reference:
     - API Reference: reference/spec.md
+    - Alpha API Reference: reference/x-spec.md
     - API Types:
       - InferencePool: api-types/inferencepool.md
-      - InferenceModel: api-types/inferencemodel.md
+      - InferenceObjective: api-types/inferenceobjective.md
   - Enhancements:
     - Overview: gieps/overview.md
   - Contributing:
diff --git a/pkg/bbr/README.md b/pkg/bbr/README.md
index b5b6f77..80ab383 100644
--- a/pkg/bbr/README.md
+++ b/pkg/bbr/README.md
@@ -8,7 +8,3 @@ body of the HTTP request. However, most implementations do not support routing
 based on the request body. This extension helps bridge that gap for clients.
 This extension works by parsing the request body. If it finds a `model` parameter in the
 request body, it will copy the value of that parameter into a request header.
-
-This extension is intended to be paired with an `ext_proc` capable Gateway. There is not
-a standard way to represent this kind of extension in Gateway API yet, so we recommend
-referring to implementation-specific documentation for how to deploy this extension.
diff --git a/pkg/bbr/handlers/server.go b/pkg/bbr/handlers/server.go
index 499d6af..6488453 100644
--- a/pkg/bbr/handlers/server.go
+++ b/pkg/bbr/handlers/server.go
@@ -61,9 +61,6 @@ func (s *Server) Process(srv extProcPb.ExternalProcessor_ProcessServer) error {
 			return nil
 		}
 		if recvErr != nil {
-			// This error occurs very frequently, though it doesn't seem to have any impact.
-			// TODO Figure out if we can remove this noise.
-			loggerVerbose.Error(recvErr, "Cannot receive stream request")
 			return status.Errorf(codes.Unknown, "cannot receive stream request: %v", recvErr)
 		}
 
diff --git a/pkg/bbr/server/runserver.go b/pkg/bbr/server/runserver.go
index ec2880b..ac6ac41 100644
--- a/pkg/bbr/server/runserver.go
+++ b/pkg/bbr/server/runserver.go
@@ -19,6 +19,7 @@ package server
 import (
 	"context"
 	"crypto/tls"
+	"fmt"
 
 	extProcPb "github.com/envoyproxy/go-control-plane/envoy/service/ext_proc/v3"
 	"github.com/go-logr/logr"
@@ -54,8 +55,7 @@ func (r *ExtProcServerRunner) AsRunnable(logger logr.Logger) manager.Runnable {
 		if r.SecureServing {
 			cert, err := tlsutil.CreateSelfSignedTLSCertificate(logger)
 			if err != nil {
-				logger.Error(err, "Failed to create self signed certificate")
-				return err
+				return fmt.Errorf("failed to create self signed certificate - %w", err)
 			}
 			creds := credentials.NewTLS(&tls.Config{Certificates: []tls.Certificate{cert}})
 			srv = grpc.NewServer(grpc.Creds(creds))
diff --git a/pkg/epp/README.md b/pkg/epp/README.md
index df5c213..966aed5 100644
--- a/pkg/epp/README.md
+++ b/pkg/epp/README.md
@@ -20,9 +20,4 @@ An EPP instance handles a single `InferencePool` (and so for each `InferencePool
   - The EPP generates metrics to enhance observability.
   - It reports InferenceObjective-level metrics, further broken down by target model.
   - Detailed information regarding metrics can be found on the [website](https://gateway-api-inference-extension.sigs.k8s.io/guides/metrics/).
-
-
-## Scheduling Algorithm 
-The scheduling package implements request scheduling algorithms for load balancing requests across backend pods in an inference gateway. The scheduler ensures efficient resource utilization while maintaining low latency and prioritizing critical requests. It applies a series of filters based on metrics and heuristics to select the best pod for a given request. The following flow chart summarizes the current scheduling algorithm
-
-<img src="../../docs/scheduler-flowchart.png" alt="Scheduling Algorithm" width="400" />
+  
\ No newline at end of file
diff --git a/pkg/epp/backend/metrics/metrics.go b/pkg/epp/backend/metrics/metrics.go
index 9f53661..e10098f 100644
--- a/pkg/epp/backend/metrics/metrics.go
+++ b/pkg/epp/backend/metrics/metrics.go
@@ -25,6 +25,7 @@ import (
 
 	dto "github.com/prometheus/client_model/go"
 	"github.com/prometheus/common/expfmt"
+	"github.com/prometheus/common/model"
 	"go.uber.org/multierr"
 
 	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend"
@@ -65,7 +66,7 @@ func (p *PodMetricsClientImpl) FetchMetrics(ctx context.Context, pod *backend.Po
 		return nil, fmt.Errorf("unexpected status code from %s: %v", pod.NamespacedName, resp.StatusCode)
 	}
 
-	parser := expfmt.TextParser{}
+	parser := expfmt.NewTextParser(model.LegacyValidation)
 	metricFamilies, err := parser.TextToMetricFamilies(resp.Body)
 	if err != nil {
 		return nil, err
diff --git a/pkg/epp/controller/inferenceobjective_reconciler.go b/pkg/epp/controller/inferenceobjective_reconciler.go
index 53bce86..c8ac5a6 100644
--- a/pkg/epp/controller/inferenceobjective_reconciler.go
+++ b/pkg/epp/controller/inferenceobjective_reconciler.go
@@ -18,6 +18,7 @@ package controller
 
 import (
 	"context"
+	"fmt"
 
 	"k8s.io/apimachinery/pkg/api/errors"
 	ctrl "sigs.k8s.io/controller-runtime"
@@ -48,8 +49,7 @@ func (c *InferenceObjectiveReconciler) Reconcile(ctx context.Context, req ctrl.R
 	notFound := false
 	if err := c.Get(ctx, req.NamespacedName, infObjective); err != nil {
 		if !errors.IsNotFound(err) {
-			logger.Error(err, "Unable to get InferenceObjective")
-			return ctrl.Result{}, err
+			return ctrl.Result{}, fmt.Errorf("unable to get InferenceObjective - %w", err)
 		}
 		notFound = true
 	}
diff --git a/pkg/epp/controller/inferencepool_reconciler.go b/pkg/epp/controller/inferencepool_reconciler.go
index d8b7668..3b52de0 100644
--- a/pkg/epp/controller/inferencepool_reconciler.go
+++ b/pkg/epp/controller/inferencepool_reconciler.go
@@ -56,9 +56,7 @@ func (c *InferencePoolReconciler) Reconcile(ctx context.Context, req ctrl.Reques
 		obj = &v1alpha2.InferencePool{}
 	default:
 		// Handle unsupported groups gracefully.
-		err := fmt.Errorf("unsupported API group: %s", c.PoolGKNN.Group)
-		logger.Error(err, "Cannot reconcile InferencePool")
-		return ctrl.Result{}, err
+		return ctrl.Result{}, fmt.Errorf("cannot reconcile InferencePool - unsupported API group: %s", c.PoolGKNN.Group)
 	}
 
 	// 2. Perform a single, generic fetch for the object.
@@ -68,8 +66,7 @@ func (c *InferencePoolReconciler) Reconcile(ctx context.Context, req ctrl.Reques
 			c.Datastore.Clear()
 			return ctrl.Result{}, nil
 		}
-		logger.Error(err, "Unable to get InferencePool")
-		return ctrl.Result{}, err
+		return ctrl.Result{}, fmt.Errorf("unable to get InferencePool - %w", err)
 	}
 
 	// 3. Perform common checks using the client.Object interface.
@@ -90,16 +87,14 @@ func (c *InferencePoolReconciler) Reconcile(ctx context.Context, req ctrl.Reques
 		var err error
 		err = pool.ConvertTo(v1infPool)
 		if err != nil {
-			logger.Error(err, "Failed to convert XInferencePool to InferencePool")
-			return ctrl.Result{}, err
+			return ctrl.Result{}, fmt.Errorf("failed to convert XInferencePool to InferencePool - %w", err)
 		}
 	default:
 		return ctrl.Result{}, fmt.Errorf("unsupported API group: %s", c.PoolGKNN.Group)
 	}
 
 	if err := c.Datastore.PoolSet(ctx, c.Reader, v1infPool); err != nil {
-		logger.Error(err, "Failed to update datastore")
-		return ctrl.Result{}, err
+		return ctrl.Result{}, fmt.Errorf("failed to update datastore - %w", err)
 	}
 
 	return ctrl.Result{}, nil
diff --git a/pkg/epp/controller/pod_reconciler.go b/pkg/epp/controller/pod_reconciler.go
index 3cd7c25..ce77b2c 100644
--- a/pkg/epp/controller/pod_reconciler.go
+++ b/pkg/epp/controller/pod_reconciler.go
@@ -18,6 +18,7 @@ package controller
 
 import (
 	"context"
+	"fmt"
 
 	"github.com/go-logr/logr"
 	corev1 "k8s.io/api/core/v1"
@@ -55,8 +56,7 @@ func (c *PodReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.R
 			c.Datastore.PodDelete(req.NamespacedName)
 			return ctrl.Result{}, nil
 		}
-		logger.V(logutil.DEFAULT).Error(err, "Unable to get pod")
-		return ctrl.Result{}, err
+		return ctrl.Result{}, fmt.Errorf("unable to get pod - %w", err)
 	}
 
 	c.updateDatastore(logger, pod)
diff --git a/pkg/epp/flowcontrol/config.go b/pkg/epp/flowcontrol/config.go
new file mode 100644
index 0000000..edc23ab
--- /dev/null
+++ b/pkg/epp/flowcontrol/config.go
@@ -0,0 +1,50 @@
+/*
+Copyright 2025 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package flowcontrol
+
+import (
+	"fmt"
+
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/controller"
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/registry"
+)
+
+// Config is the top-level configuration for the entire flow control module.
+// It embeds the configurations for the controller and the registry, providing a single point of entry for validation
+// and initialization.
+type Config struct {
+	Controller controller.Config
+	Registry   registry.Config
+}
+
+// ValidateAndApplyDefaults checks the configuration for validity and populates any empty fields with system defaults.
+// It delegates validation to the underlying controller and registry configurations.
+// It returns a new, validated `Config` object and does not mutate the receiver.
+func (c *Config) ValidateAndApplyDefaults() (*Config, error) {
+	validatedControllerCfg, err := c.Controller.ValidateAndApplyDefaults()
+	if err != nil {
+		return nil, fmt.Errorf("controller config validation failed: %w", err)
+	}
+	validatedRegistryCfg, err := c.Registry.ValidateAndApplyDefaults()
+	if err != nil {
+		return nil, fmt.Errorf("registry config validation failed: %w", err)
+	}
+	return &Config{
+		Controller: *validatedControllerCfg,
+		Registry:   *validatedRegistryCfg,
+	}, nil
+}
diff --git a/pkg/epp/flowcontrol/contracts/registry.go b/pkg/epp/flowcontrol/contracts/registry.go
index e2c42fd..fe0b790 100644
--- a/pkg/epp/flowcontrol/contracts/registry.go
+++ b/pkg/epp/flowcontrol/contracts/registry.go
@@ -22,8 +22,8 @@ import (
 )
 
 // FlowRegistry is the complete interface for the global flow control plane.
-// It composes the client-facing data path interface and the administrative interface. A concrete implementation of this
-// interface is the single source of truth for all flow control state.
+// It composes all role-based interfaces. A concrete implementation of this interface is the single source of truth for
+// all flow control state.
 //
 // # Conformance: Implementations MUST be goroutine-safe.
 //
@@ -48,22 +48,21 @@ import (
 //  2. Capacity Partitioning: Global and per-band capacity limits must be uniformly partitioned across all Active
 //     shards.
 type FlowRegistry interface {
-	FlowRegistryClient
-	FlowRegistryAdmin
+	FlowRegistryObserver
+	FlowRegistryDataPlane
 }
 
-// FlowRegistryAdmin defines the administrative interface for the global control plane.
-type FlowRegistryAdmin interface {
-	// Stats returns globally aggregated statistics for the entire `FlowRegistry`.
+// FlowRegistryObserver defines the read-only, observation interface for the registry.
+type FlowRegistryObserver interface {
+	// Stats returns a near-consistent snapshot globally aggregated statistics for the entire `FlowRegistry`.
 	Stats() AggregateStats
 
-	// ShardStats returns a slice of statistics, one for each internal shard.
+	// ShardStats returns a near-consistent slice of statistics snapshots, one for each `RegistryShard`.
 	ShardStats() []ShardStats
 }
 
-// FlowRegistryClient defines the primary, client-facing interface for the registry.
-// This is the interface that the `controller.FlowController`'s data path depends upon.
-type FlowRegistryClient interface {
+// FlowRegistryDataPlane defines the high-throughput, request-path interface for the registry.
+type FlowRegistryDataPlane interface {
 	// WithConnection manages a scoped, leased session for a given flow.
 	// It is the primary and sole entry point for interacting with the data path.
 	//
@@ -90,9 +89,8 @@ type FlowRegistryClient interface {
 // Its purpose is to ensure that any interaction with the flow's state (e.g., accessing its shards and queues) occurs
 // safely while the flow is guaranteed to be protected from garbage collection.
 type ActiveFlowConnection interface {
-	// Shards returns a stable snapshot of accessors for all internal state shards (both Active and Draining).
-	// Consumers MUST check `RegistryShard.IsActive()` before routing new work to a shard from this slice.
-	Shards() []RegistryShard
+	// ActiveShards returns a stable snapshot of accessors for all Active internal state shards.
+	ActiveShards() []RegistryShard
 }
 
 // RegistryShard defines the interface for a single slice (shard) of the `FlowRegistry`'s state.
@@ -139,7 +137,7 @@ type RegistryShard interface {
 	// `controller.FlowController` worker's dispatch loop.
 	AllOrderedPriorityLevels() []int
 
-	// Stats returns a snapshot of the statistics for this specific shard.
+	// Stats returns a near consistent snapshot of the shard's state.
 	Stats() ShardStats
 }
 
@@ -162,6 +160,7 @@ type ManagedQueue interface {
 }
 
 // AggregateStats holds globally aggregated statistics for the entire `FlowRegistry`.
+// It is a read-only data object representing a near-consistent snapshot of the registry's state.
 type AggregateStats struct {
 	// TotalCapacityBytes is the globally configured maximum total byte size limit across all priority bands and shards.
 	TotalCapacityBytes uint64
@@ -173,8 +172,15 @@ type AggregateStats struct {
 	PerPriorityBandStats map[int]PriorityBandStats
 }
 
-// ShardStats holds statistics for a single internal shard within the `FlowRegistry`.
+// ShardStats holds statistics and identifying information for a `RegistryShard` within the `FlowRegistry`.
+// It is a read-only data object representing a near-consistent snapshot of the shard's state.
 type ShardStats struct {
+	// ID is the unique, stable identifier for this shard.
+	ID string
+	// IsActive indicates if the shard was accepting new work at the time this stats snapshot was generated.
+	// A value of `false` means the shard is in the process of being gracefully drained.
+	// Due to the concurrent nature of the system, this state could change immediately after the snapshot is taken.
+	IsActive bool
 	// TotalCapacityBytes is the optional, maximum total byte size limit aggregated across all priority bands within this
 	// shard. Its value represents the globally configured limit for the `FlowRegistry` partitioned for this shard.
 	// The `controller.FlowController` enforces this limit in addition to any per-band capacity limits.
@@ -192,6 +198,7 @@ type ShardStats struct {
 }
 
 // PriorityBandStats holds aggregated statistics for a single priority band.
+// It is a read-only data object representing a near-consistent snapshot of the priority band's state.
 type PriorityBandStats struct {
 	// Priority is the numerical priority level this struct describes.
 	Priority int
diff --git a/pkg/epp/flowcontrol/controller/config.go b/pkg/epp/flowcontrol/controller/config.go
new file mode 100644
index 0000000..e542c4d
--- /dev/null
+++ b/pkg/epp/flowcontrol/controller/config.go
@@ -0,0 +1,102 @@
+/*
+Copyright 2025 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package controller
+
+import (
+	"fmt"
+	"time"
+)
+
+const (
+	// defaultExpiryCleanupInterval is the default frequency for scanning for expired items.
+	defaultExpiryCleanupInterval = 1 * time.Second
+	// defaultProcessorReconciliationInterval is the default frequency for the supervisor loop.
+	defaultProcessorReconciliationInterval = 5 * time.Second
+	// defaultEnqueueChannelBufferSize is the default size of a worker's incoming request buffer.
+	defaultEnqueueChannelBufferSize = 100
+)
+
+// Config holds the configuration for the `FlowController`.
+type Config struct {
+	// DefaultRequestTTL is the default Time-To-Live applied to requests that do not
+	// specify their own TTL hint.
+	// Optional: If zero, no TTL is applied by default and we rely solely on request context cancellation.
+	DefaultRequestTTL time.Duration
+
+	// ExpiryCleanupInterval is the interval at which each shard processor scans its queues for expired items.
+	// Optional: Defaults to `defaultExpiryCleanupInterval` (1 second).
+	ExpiryCleanupInterval time.Duration
+
+	// ProcessorReconciliationInterval is the frequency at which the `FlowController`'s supervisor loop garbage collects
+	// stale workers.
+	// Optional: Defaults to `defaultProcessorReconciliationInterval` (5 seconds).
+	ProcessorReconciliationInterval time.Duration
+
+	// EnqueueChannelBufferSize is the size of the buffered channel that accepts incoming requests for each shard
+	// processor. This buffer acts as a shock absorber, decoupling the high-frequency distributor from the processor's
+	// serial execution loop and allowing the system to handle short bursts of traffic without blocking.
+	// Optional: Defaults to `defaultEnqueueChannelBufferSize` (100).
+	EnqueueChannelBufferSize int
+}
+
+// ValidateAndApplyDefaults checks the global configuration for validity and then creates a new `Config` object,
+// populating any empty fields with system defaults.
+// It does not mutate the receiver.
+func (c *Config) ValidateAndApplyDefaults() (*Config, error) {
+	cfg := c.deepCopy()
+
+	// --- Validation ---
+	if cfg.DefaultRequestTTL < 0 {
+		return nil, fmt.Errorf("DefaultRequestTTL cannot be negative, but got %v", cfg.DefaultRequestTTL)
+	}
+	if cfg.ExpiryCleanupInterval < 0 {
+		return nil, fmt.Errorf("ExpiryCleanupInterval cannot be negative, but got %v", cfg.ExpiryCleanupInterval)
+	}
+	if cfg.ProcessorReconciliationInterval < 0 {
+		return nil, fmt.Errorf("ProcessorReconciliationInterval cannot be negative, but got %v",
+			cfg.ProcessorReconciliationInterval)
+	}
+	if cfg.EnqueueChannelBufferSize < 0 {
+		return nil, fmt.Errorf("EnqueueChannelBufferSize cannot be negative, but got %d", cfg.EnqueueChannelBufferSize)
+	}
+
+	// --- Defaulting ---
+	if cfg.ExpiryCleanupInterval == 0 {
+		cfg.ExpiryCleanupInterval = defaultExpiryCleanupInterval
+	}
+	if cfg.ProcessorReconciliationInterval == 0 {
+		cfg.ProcessorReconciliationInterval = defaultProcessorReconciliationInterval
+	}
+	if cfg.EnqueueChannelBufferSize == 0 {
+		cfg.EnqueueChannelBufferSize = defaultEnqueueChannelBufferSize
+	}
+	return cfg, nil
+}
+
+// deepCopy creates a deep copy of the `Config` object.
+func (c *Config) deepCopy() *Config {
+	if c == nil {
+		return nil
+	}
+	newCfg := &Config{
+		DefaultRequestTTL:               c.DefaultRequestTTL,
+		ExpiryCleanupInterval:           c.ExpiryCleanupInterval,
+		ProcessorReconciliationInterval: c.ProcessorReconciliationInterval,
+		EnqueueChannelBufferSize:        c.EnqueueChannelBufferSize,
+	}
+	return newCfg
+}
diff --git a/pkg/epp/flowcontrol/controller/controller.go b/pkg/epp/flowcontrol/controller/controller.go
new file mode 100644
index 0000000..8449159
--- /dev/null
+++ b/pkg/epp/flowcontrol/controller/controller.go
@@ -0,0 +1,386 @@
+/*
+Copyright 2025 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Package controller contains the implementation of the `FlowController` engine.
+//
+// The FlowController is the central processing engine of the Flow Control system. It is a sharded, high-throughput
+// component responsible for managing the lifecycle of all incoming requests. It achieves this by acting as a stateless
+// supervisor that orchestrates a pool of stateful workers (`internal.ShardProcessor`), distributing incoming requests
+// among them using a sophisticated load-balancing algorithm.
+package controller
+
+import (
+	"cmp"
+	"context"
+	"errors"
+	"fmt"
+	"slices"
+	"sync"
+	"time"
+
+	"github.com/go-logr/logr"
+	"k8s.io/utils/clock"
+
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/contracts"
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/controller/internal"
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/types"
+	logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging"
+)
+
+// registryClient defines the minimal interface that the `FlowController` needs to interact with the `FlowRegistry`.
+type registryClient interface {
+	contracts.FlowRegistryObserver
+	contracts.FlowRegistryDataPlane
+}
+
+// shardProcessor is the minimal internal interface that the `FlowController` requires from its workers.
+// This abstraction allows for the injection of mock processors during testing.
+type shardProcessor interface {
+	Run(ctx context.Context)
+	Submit(item *internal.FlowItem) error
+	SubmitOrBlock(ctx context.Context, item *internal.FlowItem) error
+}
+
+// shardProcessorFactory defines the signature for a function that creates a `shardProcessor`.
+// This enables dependency injection for testing.
+type shardProcessorFactory func(
+	shard contracts.RegistryShard,
+	dispatchFilter internal.BandFilter,
+	clock clock.Clock,
+	expiryCleanupInterval time.Duration,
+	enqueueChannelBufferSize int,
+	logger logr.Logger,
+) shardProcessor
+
+var _ shardProcessor = &internal.ShardProcessor{}
+
+// managedWorker holds the state for a single supervised worker.
+type managedWorker struct {
+	processor shardProcessor
+	cancel    context.CancelFunc
+}
+
+// FlowController is the central, high-throughput engine of the Flow Control system.
+// It is designed as a stateless distributor that orchestrates a pool of stateful workers (`internal.ShardProcessor`),
+// following a "supervisor-worker" pattern.
+//
+// The controller's `Run` loop executes periodically, acting as a garbage collector that keeps the pool of running
+// workers synchronized with the dynamic shard topology of the `FlowRegistry`.
+type FlowController struct {
+	// --- Immutable dependencies (set at construction) ---
+
+	config                Config
+	registry              registryClient
+	saturationDetector    contracts.SaturationDetector
+	clock                 clock.WithTicker
+	logger                logr.Logger
+	shardProcessorFactory shardProcessorFactory
+
+	// --- Lifecycle state ---
+
+	// parentCtx is the root context for the controller's lifecycle, established when `Run` is called.
+	// It is the parent for all long-lived worker goroutines.
+	parentCtx context.Context
+
+	// --- Concurrent state ---
+
+	// workers is a highly concurrent map storing the `managedWorker` for each shard.
+	// It is the controller's source of truth for the worker pool.
+	// The key is the shard ID (`string`), and the value is a `*managedWorker`.
+	workers sync.Map
+
+	wg sync.WaitGroup
+}
+
+// flowControllerOption is a function that applies a configuration change to a `FlowController`.
+// test-only
+type flowControllerOption func(*FlowController)
+
+// NewFlowController creates a new `FlowController` instance.
+func NewFlowController(
+	ctx context.Context,
+	config Config,
+	registry contracts.FlowRegistry,
+	sd contracts.SaturationDetector,
+	logger logr.Logger,
+	opts ...flowControllerOption,
+) (*FlowController, error) {
+	fc := &FlowController{
+		config:             *config.deepCopy(),
+		registry:           registry,
+		saturationDetector: sd,
+		clock:              clock.RealClock{},
+		logger:             logger.WithName("flow-controller"),
+		parentCtx:          ctx,
+	}
+
+	// Use the real shard processor implementation by default.
+	fc.shardProcessorFactory = func(
+		shard contracts.RegistryShard,
+		dispatchFilter internal.BandFilter,
+		clock clock.Clock,
+		expiryCleanupInterval time.Duration,
+		enqueueChannelBufferSize int,
+		logger logr.Logger,
+	) shardProcessor {
+		return internal.NewShardProcessor(
+			shard,
+			dispatchFilter,
+			clock,
+			expiryCleanupInterval,
+			enqueueChannelBufferSize,
+			logger)
+	}
+
+	for _, opt := range opts {
+		opt(fc)
+	}
+
+	go fc.run(ctx)
+	return fc, nil
+}
+
+// run starts the `FlowController`'s main reconciliation loop.
+// This loop is responsible for garbage collecting workers whose shards no longer exist in the registry.
+// This method blocks until the provided context is cancelled and ALL worker goroutines have fully terminated.
+func (fc *FlowController) run(ctx context.Context) {
+	fc.logger.Info("Starting FlowController reconciliation loop.")
+	defer fc.logger.Info("FlowController reconciliation loop stopped.")
+
+	ticker := fc.clock.NewTicker(fc.config.ProcessorReconciliationInterval)
+	defer ticker.Stop()
+
+	for {
+		select {
+		case <-ctx.Done():
+			fc.shutdown()
+			return
+		case <-ticker.C():
+			fc.reconcileProcessors()
+		}
+	}
+}
+
+// EnqueueAndWait is the primary, synchronous entry point to the Flow Control system. It submits a request and blocks
+// until the request reaches a terminal outcome (dispatched, rejected, or evicted).
+//
+// # Design Rationale: The Synchronous Model
+//
+// This blocking model is deliberately chosen for its simplicity and robustness, especially in the context of Envoy
+// External Processing (`ext_proc`), which operates on a stream-based protocol.
+//
+//   - `ext_proc` Alignment: A single goroutine typically manages the stream for a given HTTP request.
+//     `EnqueueAndWait` fits this perfectly: the request-handling goroutine calls it, blocks, and upon return, has a
+//     definitive outcome to act upon.
+//   - Simplified State Management: The state of a "waiting" request is implicitly managed by the blocked goroutine's
+//     stack and its `context.Context`. The system only needs to signal this specific goroutine to unblock it.
+//   - Direct Backpressure: If queues are full, `EnqueueAndWait` returns an error immediately, providing direct
+//     backpressure to the caller.
+func (fc *FlowController) EnqueueAndWait(req types.FlowControlRequest) (types.QueueOutcome, error) {
+	if req == nil {
+		return types.QueueOutcomeRejectedOther, errors.New("request cannot be nil")
+	}
+	effectiveTTL := req.InitialEffectiveTTL()
+	if effectiveTTL <= 0 {
+		effectiveTTL = fc.config.DefaultRequestTTL
+	}
+	enqueueTime := fc.clock.Now()
+
+	for {
+		select {
+		case <-fc.parentCtx.Done():
+			return types.QueueOutcomeRejectedOther, fmt.Errorf("%w: %w", types.ErrRejected, types.ErrFlowControllerNotRunning)
+		default:
+			// The controller is running, proceed.
+		}
+
+		// We must create a fresh `FlowItem` on each attempt since finalization is idempotent.
+		// However, we use the original, preserved `enqueueTime`.
+		item := internal.NewItem(req, effectiveTTL, enqueueTime)
+		if outcome, err := fc.distributeRequest(item); err != nil {
+			return outcome, fmt.Errorf("%w: %w", types.ErrRejected, err)
+		}
+
+		// Block until the request is finalized (dispatched, rejected, or evicted).
+		// The finalization logic internally monitors for context cancellation and TTL expiry.
+		finalState := <-item.Done()
+		if errors.Is(finalState.Err, contracts.ErrShardDraining) {
+			fc.logger.V(logutil.DEBUG).Info("Shard is draining, retrying request", "requestID", req.ID())
+			// Benign race with the chosen `contracts.RegistryShard` becoming Draining post selection but before the item was
+			// enqueued into its respective `contracts.ManagedQueue`. Simply try again.
+			continue
+		}
+
+		return finalState.Outcome, finalState.Err
+	}
+}
+
+// distributeRequest implements a flow-aware, two-phase "Join-Shortest-Queue-by-Bytes" (JSQ-Bytes) distribution strategy
+// with graceful backpressure. It selects the optimal worker for a given item and attempts to submit it.
+//
+// The algorithm operates as follows:
+//  1. Candidate Selection: It identifies all Active shards for the item's flow and ranks them by the current byte size
+//     of that flow's queue, from least to most loaded.
+//  2. Phase 1 (Non-blocking Fast Failover): It iterates through the ranked candidates and attempts a non-blocking
+//     submission. The first successful submission wins.
+//  3. Phase 2 (Blocking Fallback): If all non-blocking attempts fail, it performs a single blocking submission to the
+//     least-loaded candidate, providing backpressure.
+func (fc *FlowController) distributeRequest(item *internal.FlowItem) (types.QueueOutcome, error) {
+	key := item.OriginalRequest().FlowKey()
+	reqID := item.OriginalRequest().ID()
+	type candidate struct {
+		processor shardProcessor
+		shardID   string
+		byteSize  uint64
+	}
+	var candidates []candidate
+	err := fc.registry.WithConnection(key, func(conn contracts.ActiveFlowConnection) error {
+		shards := conn.ActiveShards()
+		candidates = make([]candidate, len(shards))
+		for i, shard := range shards {
+			worker := fc.getOrStartWorker(shard)
+			mq, err := shard.ManagedQueue(key)
+			if err != nil {
+				panic(fmt.Sprintf("invariant violation: ManagedQueue for leased flow %s failed on shard %s: %v",
+					key, shard.ID(), err))
+			}
+			candidates[i] = candidate{worker.processor, shard.ID(), mq.ByteSize()}
+		}
+		return nil
+	})
+	if err != nil {
+		return types.QueueOutcomeRejectedOther, fmt.Errorf("failed to acquire lease for request %q (flow %s): %w",
+			reqID, key, err)
+	}
+
+	if len(candidates) == 0 {
+		return types.QueueOutcomeRejectedCapacity, fmt.Errorf("no viable Active shards available for request %q (flow %s)",
+			reqID, key)
+	}
+
+	slices.SortFunc(candidates, func(a, b candidate) int {
+		return cmp.Compare(a.byteSize, b.byteSize)
+	})
+
+	// --- Phase 1: Fast, non-blocking failover attempt ---
+	for _, c := range candidates {
+		if err := c.processor.Submit(item); err == nil {
+			return types.QueueOutcomeNotYetFinalized, nil // Success
+		}
+		fc.logger.V(logutil.DEBUG).Info("Processor busy during fast failover, trying next candidate",
+			"shardID", c.shardID, "requestID", reqID)
+	}
+
+	// --- Phase 2: All processors busy. Attempt a single blocking send to the best candidate. ---
+	bestCandidate := candidates[0]
+	fc.logger.V(logutil.DEBUG).Info("All processors busy, attempting blocking submit to best candidate",
+		"shardID", bestCandidate.shardID, "requestID", reqID, "queueByteSize", bestCandidate.byteSize)
+
+	err = bestCandidate.processor.SubmitOrBlock(item.OriginalRequest().Context(), item)
+	if err != nil {
+		// If even the blocking attempt fails (e.g., context cancelled or processor shut down), the request is definitively
+		// rejected.
+		return types.QueueOutcomeRejectedCapacity, fmt.Errorf(
+			"all viable shard processors are at capacity for request %q (flow %s): %w", reqID, key, err)
+	}
+	return types.QueueOutcomeNotYetFinalized, nil
+}
+
+// getOrStartWorker implements the lazy-loading and startup of shard processors.
+// It attempts to retrieve an existing worker for a shard. If one doesn't exist, it constructs a new worker and attempts
+// to register it atomically. The worker's processor goroutine is only started *after* it has successfully been
+// registered, preventing race conditions where multiple goroutines create and start the same worker.
+func (fc *FlowController) getOrStartWorker(shard contracts.RegistryShard) *managedWorker {
+	if w, ok := fc.workers.Load(shard.ID()); ok {
+		return w.(*managedWorker)
+	}
+
+	// Construct a new worker, but do not start its processor goroutine yet.
+	processorCtx, cancel := context.WithCancel(fc.parentCtx)
+	dispatchFilter := internal.NewSaturationFilter(fc.saturationDetector)
+	processor := fc.shardProcessorFactory(
+		shard,
+		dispatchFilter,
+		fc.clock,
+		fc.config.ExpiryCleanupInterval,
+		fc.config.EnqueueChannelBufferSize,
+		fc.logger.WithValues("shardID", shard.ID()),
+	)
+	newWorker := &managedWorker{
+		processor: processor,
+		cancel:    cancel,
+	}
+
+	// Atomically load or store. This is the critical step for preventing race conditions.
+	actual, loaded := fc.workers.LoadOrStore(shard.ID(), newWorker)
+	if loaded {
+		// Another goroutine beat us to it. The `newWorker` we created was not stored.
+		// We must cancel the context we created for it to prevent a leak, but we do not need to do anything else, as its
+		// processor was never started.
+		cancel()
+		return actual.(*managedWorker)
+	}
+
+	// We won the race. The `newWorker` was successfully stored.
+	// Now, and only now, do we start the processor's long-running goroutine.
+	fc.wg.Add(1)
+	go func() {
+		defer fc.wg.Done()
+		processor.Run(processorCtx)
+	}()
+
+	return newWorker
+}
+
+// reconcileProcessors is the supervisor's core garbage collection loop.
+// It fetches the current list of Active shards from the registry and removes any workers whose corresponding shards
+// have been fully drained and garbage collected by the registry.
+func (fc *FlowController) reconcileProcessors() {
+	stats := fc.registry.ShardStats()
+	shards := make(map[string]struct{}, len(stats)) // `map[shardID] -> isActive`
+	for _, s := range stats {
+		shards[s.ID] = struct{}{}
+	}
+
+	fc.workers.Range(func(key, value any) bool {
+		shardID := key.(string)
+		worker := value.(*managedWorker)
+
+		// GC check: Is the shard no longer in the registry at all?
+		if _, exists := shards[shardID]; !exists {
+			fc.logger.Info("Stale worker detected for GC'd shard, shutting down.", "shardID", shardID)
+			worker.cancel()
+			fc.workers.Delete(shardID)
+		}
+		return true
+	})
+}
+
+// shutdown gracefully terminates all running `shardProcessor` goroutines.
+// It signals all workers to stop and waits for them to complete their shutdown procedures.
+func (fc *FlowController) shutdown() {
+	fc.logger.Info("Shutting down FlowController and all shard processors.")
+	fc.workers.Range(func(key, value any) bool {
+		shardID := key.(string)
+		worker := value.(*managedWorker)
+		fc.logger.V(logutil.VERBOSE).Info("Sending shutdown signal to processor", "shardID", shardID)
+		worker.cancel()
+		return true
+	})
+
+	fc.wg.Wait()
+	fc.logger.Info("All shard processors have shut down.")
+}
diff --git a/pkg/epp/flowcontrol/controller/doc.go b/pkg/epp/flowcontrol/controller/doc.go
index 8c96bbc..4f2620c 100644
--- a/pkg/epp/flowcontrol/controller/doc.go
+++ b/pkg/epp/flowcontrol/controller/doc.go
@@ -18,105 +18,19 @@ limitations under the License.
 //
 // # Overview
 //
-// The `FlowController` is the central processing engine of the flow control system. It is a sharded, high-throughput
-// component responsible for managing the lifecycle of all incoming requests—from initial submission via the synchronous
-// `EnqueueAndWait` method to a terminal outcome (dispatch, rejection, or eviction). It achieves this by orchestrating
-// its dependencies—the `contracts.FlowRegistry`, the pluggable `Policy` framework, and the
-// `contracts.SaturationDetector`—to make continuous, state-aware decisions.
+// The `FlowController` is the central processing engine of the Flow Control system. It acts as a stateless supervisor
+// that orchestrates a pool of stateful workers (`internal.ShardProcessor`), managing the lifecycle of all incoming
+// requests from initial submission to a terminal outcome (dispatch, rejection, or eviction).
 //
-// # Architecture: The Processor-Shard Relationship
+// # Architecture: Supervisor-Worker Pattern
 //
-// The `FlowController` engine is designed around a clear separation of state and execution. This "control plane vs.
-// data plane" separation is key to enabling dynamic, concurrent-safe configuration updates.
+// This package implements a classic "supervisor-worker" pattern to achieve high throughput and dynamic scalability.
 //
-//   - The `contracts.FlowRegistry` is the **control plane**. It is the single source of truth for all configuration.
-//     When an administrative action occurs (e.g., `RegisterOrUpdateFlow`), the `contracts.FlowRegistry` is responsible
-//     for safely applying that change to each of its managed `contracts.RegistryShard` instances.
-//
-//   - The `contracts.RegistryShard` is the **concurrent-safe state port**. It defines the contract for a state store
-//     that holds the `contracts.ManagedQueue` and framework `Policy` instances for a single shard.
-//
-//   - The `internal.ShardProcessor` is the **data plane worker**. It is given a single `contracts.RegistryShard` to
-//     operate on. Its main `dispatchCycle` continuously acquires a read lock on the shard to get a consistent view of
-//     the active queues and policies, and then executes its dispatch logic.
-//
-// This separation is what enables dynamic updates. The `internal.ShardProcessor` is stateless; it simply executes
-// against the state presented by its `contracts.RegistryShard` on each cycle. This allows the control plane
-// (`contracts.FlowRegistry`) to safely change that state in the background.
-//
-// # Architectural Deep Dive: The `EnqueueAndWait` Model
-//
-// A fundamental design choice is the synchronous, blocking `EnqueueAndWait` method. In the context of the Gateway API
-// Inference Extension's Endpoint Picker (EPP), which operates as an Envoy External Processing (`ext_proc`) server, this
-// model is deliberately chosen for its simplicity and robustness.
-//
-//   - Alignment with `ext_proc`: The `ext_proc` protocol is stream-based. A single goroutine within the EPP manages the
-//     stream for a given HTTP request. `EnqueueAndWait` fits this perfectly: the request-handling goroutine calls it,
-//     blocks, and upon return, has the definitive outcome. It can then immediately act on that outcome, maintaining
-//     clear request-goroutine affinity.
-//
-//   - Simplified State Management: The state of a "waiting" request is implicitly managed by the blocked goroutine's
-//     stack and its `context.Context`. The `FlowController` only needs to signal this specific goroutine to unblock it.
-//
-//   - Direct Backpressure: If queues are full, `EnqueueAndWait` returns `types.ErrQueueAtCapacity`. This provides
-//     immediate, direct backpressure to the earliest point of contact.
-//
-// # Architectural Deep Dive: The Sharded Model & JSQ-Bytes
-//
-// The `FlowController` is built on a sharded architecture to enable parallel processing and prevent a central dispatch
-// loop from becoming a bottleneck. The `FlowController` consists of a top-level manager and a pool of independent
-// `internal.ShardProcessor` workers. The `contracts.FlowRegistry` guarantees that every logical flow is represented by
-// a distinct queue instance on every active shard.
-//
-// This architecture trades deterministic global state for high throughput and scalability. The key challenge, and the
-// system's most critical assumption, revolves around ensuring this distributed model can still achieve global fairness
-// objectives.
-//
-// ## The Critical Assumption: Homogeneity Within Flows
-//
-// The effectiveness of the sharded model hinges on a critical assumption: while the system as a whole manages a
-// heterogeneous set of flows, the traffic *within a single logical flow* is assumed to be roughly homogeneous in its
-// characteristics. A logical flow is intended to represent a single workload or tenant; therefore, the most
-// unpredictable variables (effecting decode behavior) are expected to be statistically similar *within* that flow.
-//
-// ## The Hedge: Join the Shortest Queue by Bytes (JSQ-Bytes)
-//
-// To make this assumption as robust as possible, the `FlowController` uses a "Join the Shortest Queue by Bytes
-// (JSQ-Bytes)" algorithm. `ByteSize` is an excellent proxy for the resources the `FlowController` explicitly manages
-// (host memory pressure and queuing capacity) and is also a reasonable proxy for prefill compute time.
-//
-// Crucially, the goal of the distributor is not to perfectly predict backend compute time, but to intelligently balance
-// the load at the controller level. JSQ-Bytes achieves this by:
-//
-//  1. Reflecting True Load: It distributes work based on each shard's current queue size in bytes—a direct measure of
-//     its memory and capacity congestion.
-//
-//  2. Adapting to Congestion: The byte-size of a queue is a real-time signal of a shard's overall congestion. If a
-//     shard is slow (e.g., due to long-decoding downstream requests), its queues will remain full, and JSQ-Bytes will
-//     adaptively steer new work away.
-//
-//  3. Hedging Against Assumption Violations: This adaptive, self-correcting nature makes it a powerful hedge. It
-//     doesn't just distribute; it actively *load balances* based on the most relevant feedback available.
-//
-// # Architectural Deep Dive: Pre-Policy Gating
-//
-// Before policies are invoked, the `internal.ShardProcessor` applies an `internal.BandFilter`. This function determines
-// which flows within a priority band are eligible for a given operation (e.g., dispatch). This pattern is a deliberate
-// architectural choice to decouple the logic of *viability* from the logic of *selection*.
-//
-//   - An `internal.BandFilter` (e.g., the `internal.NewSaturationFilter`) determines if a flow is viable based on
-//     external signals like backend load.
-//   - The `framework.InterFlowDispatchPolicy` then selects from among the viable candidates based on its own fairness
-//     logic.
-//
-// This abstraction provides two major benefits:
-//
-//  1. Low Contributor Burden: It makes the mental model for policy contributors significantly simpler. An author of a
-//     new fairness policy does not need to be concerned with the complexities of saturation detection or other gating
-//     concerns. They are given a simple, pre-filtered view of the world and can focus solely on their selection logic.
-//
-//  2. Correctness by Construction: The `internal.subsetPriorityBandAccessor` wrapper guarantees that a policy operates
-//     on a consistent, filtered view, regardless of which accessor method it calls (`FlowIDs`, `Queue`, etc.). This
-//     prevents an entire class of subtle bugs where a policy might otherwise see a stale or unfiltered view of the
-//     system state.
+//   - The `FlowController` (Supervisor): The public-facing API of the system. Its primary responsibilities are to
+//     execute a distribution algorithm to select the optimal worker for a new request and to manage the lifecycle of
+//     the worker pool, ensuring it stays synchronized with the underlying shard topology defined by the
+//     `contracts.FlowRegistry`.
+//   - The `internal.ShardProcessor` (Worker): A stateful, single-goroutine actor responsible for the entire lifecycle
+//     of requests on a single shard. The supervisor manages a pool of these workers, one for each
+//     `contracts.RegistryShard`.
 package controller
diff --git a/pkg/epp/flowcontrol/controller/internal/doc.go b/pkg/epp/flowcontrol/controller/internal/doc.go
index 3f39b57..0836546 100644
--- a/pkg/epp/flowcontrol/controller/internal/doc.go
+++ b/pkg/epp/flowcontrol/controller/internal/doc.go
@@ -14,34 +14,19 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-// Package internal provides the core worker implementation for the `controller.FlowController`.
+// Package internal provides the core worker implementation for the controller.FlowController.
 //
-// The components in this package are the private, internal building blocks of the `controller` package. This separation
-// enforces a clean public API at the `controller` level and allows the internal mechanics of the engine to evolve
-// independently.
+// The components in this package are the private, internal building blocks of the controller. This separation enforces
+// a clean public API at the `controller` level and allows the internal mechanics of the engine to evolve independently.
 //
-// # Design Philosophy: A Single-Writer Actor Model
+// # Design Philosophy: The Single-Writer Actor Model
 //
-// The concurrency model for this package is deliberately built around a single-writer, channel-based actor pattern, as
-// implemented in the `ShardProcessor`. While a simple lock-based approach might seem easier, it is insufficient for the
-// system's requirements. The "enqueue" operation is a complex, stateful transaction that requires a **hierarchical
-// capacity check** against both the overall shard and a request's specific priority band.
+// The concurrency model for this package is built around a single-writer, channel-based actor pattern, as implemented
+// in the `ShardProcessor`. All state-mutating operations for a given shard (primarily enqueuing new requests) are
+// funneled through a single "Run" goroutine.
 //
-// A coarse, shard-wide lock would be required to make this transaction atomic, creating a major performance bottleneck
-// and causing head-of-line blocking at the top-level `controller.FlowController`. The single-writer model, where all
-// state mutations are funneled through a single goroutine, makes this transaction atomic *without locks*.
-//
-// This design provides two critical benefits:
-//  1. **Decoupling:** The `controller.FlowController` is decoupled via a non-blocking channel send, allowing for much
-//     higher throughput.
-//  2. **Backpressure:** The state of the channel buffer serves as a high-fidelity, real-time backpressure signal,
-//     enabling more intelligent load balancing.
-//
-// # Future-Proofing for Complex Transactions
-//
-// This model's true power is that it provides a robust foundation for future features like **displacement** (a
-// high-priority item evicting lower-priority ones). This is an "all-or-nothing" atomic transaction that is
-// exceptionally difficult to implement correctly in a lock-free or coarse-grained locking model without significant
-// performance penalties. The single-writer model contains the performance cost of such a potentially long transaction
-// to the single `ShardProcessor`, preventing it from blocking the entire `controller.FlowController`.
+// This design makes complex, multi-step transactions (like a hierarchical capacity check against both a shard's total
+// limit and a priority band's limit) inherently atomic without locks. This avoids the performance bottleneck of a
+// coarse, shard-wide lock and allows the top-level `controller.FlowController` to remain decoupled and highly
+// concurrent.
 package internal
diff --git a/pkg/epp/flowcontrol/controller/internal/item.go b/pkg/epp/flowcontrol/controller/internal/item.go
index 86aeb8a..d5bdaaf 100644
--- a/pkg/epp/flowcontrol/controller/internal/item.go
+++ b/pkg/epp/flowcontrol/controller/internal/item.go
@@ -18,140 +18,96 @@ package internal
 
 import (
 	"sync"
-	"sync/atomic"
 	"time"
 
 	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/types"
 )
 
-// flowItem is the internal representation of a request managed by the `FlowController`. It implements the
-// `types.QueueItemAccessor` interface, which is the primary view of the item used by queue and policy implementations.
-// It wraps the original `types.FlowControlRequest` and adds metadata for queuing, lifecycle management, and policy
-// interaction.
-//
-// # Concurrency
-//
-// The `finalize` method is the primary point of concurrency concern. It is designed to be atomic and idempotent through
-// the use of `sync.Once`. This guarantees that an item's final outcome can be set exactly once, even if multiple
-// goroutines (e.g., the main dispatch loop and the expiry cleanup loop) race to finalize it. All other fields are set
-// at creation time and are not modified thereafter, making them safe for concurrent access.
-type flowItem struct {
-	// enqueueTime is the timestamp when the item was logically accepted by the `FlowController`.
-	enqueueTime time.Time
-	// effectiveTTL is the actual time-to-live assigned to this item.
-	effectiveTTL time.Duration
-	// originalRequest is the underlying request object.
+// FinalState encapsulates the terminal outcome of a `FlowItem`'s lifecycle.
+// It is sent over the item's `Done()` channel exactly once.
+type FinalState struct {
+	Outcome types.QueueOutcome
+	Err     error
+}
+
+// FlowItem is the internal representation of a request managed by the `FlowController`.
+type FlowItem struct {
+	// --- Immutable fields (set at creation) ---
+
+	enqueueTime     time.Time
+	effectiveTTL    time.Duration
 	originalRequest types.FlowControlRequest
-	// handle is the unique identifier for this item within a specific queue instance.
-	handle types.QueueItemHandle
-
-	// done is closed exactly once when the item is finalized (dispatched or evicted/rejected).
-	done chan struct{}
-	// err stores the final error state if the item was not successfully dispatched.
-	// It is written to exactly once, protected by `onceFinalize`.
-	err atomic.Value // Stores error
-	// outcome stores the final `types.QueueOutcome` of the item's lifecycle.
-	// It is written to exactly once, protected by `onceFinalize`.
-	outcome atomic.Value // Stores `types.QueueOutcome`
+	handle          types.QueueItemHandle
+
+	// --- Finalization state (protected by onceFinalize) ---
+
+	// done is closed exactly once when the item is finalized.
+	// The closing of this channel establishes a "happens-before" memory barrier, guaranteeing that writes to `outcome`
+	// and `err` are visible to any goroutine that has successfully read from `done`.
+	done chan FinalState
+
+	// finalState  is safely visible to any goroutine after it has confirmed the channel is closed.
+	finalState FinalState
+
 	// onceFinalize ensures the `finalize()` logic is idempotent.
 	onceFinalize sync.Once
 }
 
-// ensure flowItem implements the interface.
-var _ types.QueueItemAccessor = &flowItem{}
+// ensure FlowItem implements the interface.
+var _ types.QueueItemAccessor = &FlowItem{}
 
-// NewItem creates a new `flowItem`, which is the internal representation of a request inside the `FlowController`.
-// This constructor is exported so that the parent `controller` package can create items to be passed into the
-// `internal` package's processors. It initializes the item with a "NotYetFinalized" outcome and an open `done` channel.
-func NewItem(req types.FlowControlRequest, effectiveTTL time.Duration, enqueueTime time.Time) *flowItem {
-	fi := &flowItem{
+// NewItem creates a new `FlowItem`.
+func NewItem(req types.FlowControlRequest, effectiveTTL time.Duration, enqueueTime time.Time) *FlowItem {
+	return &FlowItem{
 		enqueueTime:     enqueueTime,
 		effectiveTTL:    effectiveTTL,
 		originalRequest: req,
-		done:            make(chan struct{}),
+		// Buffer to size one, preventing finalizing goroutine (e.g., the dispatcher) from blocking if the waiting
+		// goroutine has already timed out and is no longer reading.
+		done: make(chan FinalState, 1),
 	}
-	// Initialize the outcome to its zero state.
-	fi.outcome.Store(types.QueueOutcomeNotYetFinalized)
-	return fi
 }
 
 // EnqueueTime returns the time the item was logically accepted by the `FlowController` for queuing. This is used as the
 // basis for TTL calculations.
-func (fi *flowItem) EnqueueTime() time.Time { return fi.enqueueTime }
+func (fi *FlowItem) EnqueueTime() time.Time { return fi.enqueueTime }
 
 // EffectiveTTL returns the actual time-to-live assigned to this item by the `FlowController`.
-func (fi *flowItem) EffectiveTTL() time.Duration { return fi.effectiveTTL }
+func (fi *FlowItem) EffectiveTTL() time.Duration { return fi.effectiveTTL }
 
 // OriginalRequest returns the original, underlying `types.FlowControlRequest` object.
-func (fi *flowItem) OriginalRequest() types.FlowControlRequest { return fi.originalRequest }
+func (fi *FlowItem) OriginalRequest() types.FlowControlRequest { return fi.originalRequest }
 
 // Handle returns the `types.QueueItemHandle` that uniquely identifies this item within a specific queue instance. It
 // returns nil if the item has not yet been added to a queue.
-func (fi *flowItem) Handle() types.QueueItemHandle { return fi.handle }
+func (fi *FlowItem) Handle() types.QueueItemHandle { return fi.handle }
 
 // SetHandle associates a `types.QueueItemHandle` with this item. This method is called by a `framework.SafeQueue`
 // implementation immediately after the item is added to the queue.
-func (fi *flowItem) SetHandle(handle types.QueueItemHandle) { fi.handle = handle }
-
-// Done returns a channel that is closed when the item has been finalized (e.g., dispatched or evicted).
-// This is the primary mechanism for consumers to wait for an item's outcome. It is designed to be used in a `select`
-// statement, allowing the caller to simultaneously wait for other events, such as context cancellation.
-//
-// # Example Usage
-//
-//	select {
-//	case <-item.Done():
-//	    outcome, err := item.FinalState()
-//	    // ... handle outcome
-//	case <-ctx.Done():
-//	    // ... handle cancellation
-//	}
-func (fi *flowItem) Done() <-chan struct{} {
-	return fi.done
-}
-
-// FinalState returns the terminal outcome and error for the item.
-//
-// CRITICAL: This method must only be called after the channel returned by `Done()` has been closed. Calling it before
-// the item is finalized may result in a race condition where the final state has not yet been written.
-func (fi *flowItem) FinalState() (types.QueueOutcome, error) {
-	outcomeVal := fi.outcome.Load()
-	errVal := fi.err.Load()
-
-	var finalOutcome types.QueueOutcome
-	if oc, ok := outcomeVal.(types.QueueOutcome); ok {
-		finalOutcome = oc
-	} else {
-		// This case should not happen if finalize is always called correctly, but we default to a safe value.
-		finalOutcome = types.QueueOutcomeNotYetFinalized
-	}
+func (fi *FlowItem) SetHandle(handle types.QueueItemHandle) { fi.handle = handle }
 
-	var finalErr error
-	if e, ok := errVal.(error); ok {
-		finalErr = e
-	}
-	return finalOutcome, finalErr
+// Done returns a channel that is closed when the item has been finalized (e.g., dispatched, rejected, or evicted).
+func (fi *FlowItem) Done() <-chan FinalState {
+	return fi.done
 }
 
-// finalize sets the item's terminal state (`outcome`, `error`) and closes its `done` channel idempotently using
-// `sync.Once`. This is the single, internal point where an item's lifecycle within the `FlowController` concludes.
-func (fi *flowItem) finalize(outcome types.QueueOutcome, err error) {
+// Finalize sets the item's terminal state and signals the waiting goroutine by closing its `done` channel idempotently.
+// This method is idempotent and is the single point where an item's lifecycle concludes.
+// It is intended to be called only by the component that owns the item's lifecycle, such as a `ShardProcessor`.
+func (fi *FlowItem) Finalize(outcome types.QueueOutcome, err error) {
 	fi.onceFinalize.Do(func() {
-		if err != nil {
-			fi.err.Store(err)
-		}
-		fi.outcome.Store(outcome)
+		finalState := FinalState{Outcome: outcome, Err: err}
+		fi.finalState = finalState
+		fi.done <- finalState
 		close(fi.done)
 	})
 }
 
-// isFinalized checks if the item has been finalized without blocking. It is used internally by the `ShardProcessor` as
-// a defensive check to avoid operating on items that have already been completed.
-func (fi *flowItem) isFinalized() bool {
-	select {
-	case <-fi.done:
-		return true
-	default:
-		return false
-	}
+// isFinalized checks if the item has been finalized without blocking or consuming the final state.
+// It is a side-effect-free check used by the `ShardProcessor` as a defensive measure to avoid operating on
+// already-completed items.
+func (fi *FlowItem) isFinalized() bool {
+	// A buffered channel of size 1 can be safely and non-blockingly checked by its length.
+	// If the finalize function has run, it will have sent a value, and the length will be 1.
+	return len(fi.done) > 0
 }
diff --git a/pkg/epp/flowcontrol/controller/internal/processor.go b/pkg/epp/flowcontrol/controller/internal/processor.go
index abcd9f2..fa01182 100644
--- a/pkg/epp/flowcontrol/controller/internal/processor.go
+++ b/pkg/epp/flowcontrol/controller/internal/processor.go
@@ -26,6 +26,7 @@ import (
 	"time"
 
 	"github.com/go-logr/logr"
+	"k8s.io/utils/clock"
 	"sigs.k8s.io/controller-runtime/pkg/log"
 
 	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/contracts"
@@ -34,70 +35,43 @@ import (
 	logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging"
 )
 
-const (
-	// enqueueChannelBufferSize sets the size of the buffered channel that accepts incoming requests for the shard
-	// processor. This buffer acts as a "shock absorber," decoupling the upstream distributor from the processor's main
-	// loop and allowing the system to handle short, intense bursts of traffic without blocking the distributor.
-	enqueueChannelBufferSize = 100
+// maxCleanupWorkers caps the number of concurrent workers for background cleanup tasks. This prevents a single shard
+// from overwhelming the Go scheduler with too many goroutines.
+const maxCleanupWorkers = 4
 
-	// maxCleanupWorkers caps the number of concurrent workers for background cleanup tasks. This prevents a single shard
-	// from overwhelming the Go scheduler with too many goroutines.
-	maxCleanupWorkers = 4
-)
-
-var (
-	// errInterFlow is a sentinel error for failures during the inter-flow dispatch phase (e.g., a
-	// `framework.InterFlowDispatchPolicy` fails to select a queue).
-	//
-	// Strategy: When this error is encountered, the dispatch cycle aborts processing for the current priority band and
-	// immediately moves to the next, promoting work conservation. A failure in one band should not halt progress in
-	// others.
-	errInterFlow = errors.New("inter-flow policy failure")
-
-	// errIntraFlow is a sentinel error for failures *after* a specific flow's queue has been selected (e.g., a
-	// `framework.IntraFlowDispatchPolicy` fails or a queue `Remove` fails).
-	//
-	// Strategy: When this error is encountered, the dispatch cycle aborts processing for the entire priority band for the
-	// current cycle. This acts as a critical circuit breaker. A stateless inter-flow policy could otherwise repeatedly
-	// select the same problematic queue in a tight loop of failures. Halting the band for one cycle prevents this.
-	errIntraFlow = errors.New("intra-flow operation failure")
-)
-
-// clock defines an interface for getting the current time, allowing for dependency injection in tests.
-type clock interface {
-	Now() time.Time
-}
+// ErrProcessorBusy is a sentinel error returned by a the processor's `Submit` method.
+// It indicates that the processor's internal buffer is momentarily full and cannot accept new work.
+// This is used as a signal for the `controller.FlowController`'s "fast failover" logic.
+var ErrProcessorBusy = errors.New("shard processor is busy")
 
-// ShardProcessor is the core worker of the `controller.FlowController`. It is paired one-to-one with a
-// `contracts.RegistryShard` instance and is responsible for all request lifecycle operations on that shard, including
-// enqueueing, dispatching, and expiry cleanup. It acts as the "data plane" worker that executes against the
-// concurrent-safe state provided by its shard.
+// ShardProcessor is the core worker of the `controller.FlowController`.
+// It is paired one-to-one with a `contracts.RegistryShard` instance and is responsible for all request lifecycle
+// operations on that shard. It acts as the "data plane" worker that executes against the concurrent-safe state provided
+// by its shard.
 //
-// For a full rationale on the single-writer concurrency model, see the package-level documentation in `doc.go`.
+// # Concurrency Model: The Single-Writer Actor
 //
-// # Concurrency Guarantees and Race Conditions
+// To ensure correctness and high performance, the processor uses a single-goroutine, actor-based model. The main `Run`
+// loop is the sole "writer" for all state-mutating operations, particularly enqueueing. This makes complex transactions
+// inherently atomic without coarse-grained locks.
 //
-// This model provides two key guarantees:
+// # Concurrency Guarantees
 //
-//  1. **Safe Enqueueing**: The `Run` method's goroutine has exclusive ownership of all operations that *add* items to
-//     queues. This makes the "check-then-act" sequence in `enqueue` (calling `hasCapacity` then `managedQ.Add`)
-//     inherently atomic from a writer's perspective, preventing capacity breaches. While the background
-//     `runExpiryCleanup` goroutine can concurrently *remove* items, this is a benign race; a concurrent removal only
-//     creates more available capacity, ensuring the `hasCapacity` check remains valid.
-//
-//  2. **Idempotent Finalization**: The primary internal race is between the main `dispatchCycle` and the background
-//     `runExpiryCleanup` goroutine, which might try to finalize the same `flowItem` simultaneously. This race is
-//     resolved by the `flowItem.finalize` method, which uses `sync.Once` to guarantee that only one of these goroutines
-//     can set the item's final state.
+//  1. Safe Enqueueing: The "check-then-act" sequence for capacity is safe because it is only ever performed by the
+//     single `Run` goroutine.
+//  2. Idempotent Finalization: The primary internal race condition is between the main `dispatchCycle` and the
+//     background `runExpiryCleanup` goroutine, both of which might try to finalize an item. This is resolved by the
+//     `FlowItem.Finalize` method, which uses `sync.Once` to guarantee that only the first attempt to finalize an item
+//     succeeds.
 type ShardProcessor struct {
 	shard                 contracts.RegistryShard
 	dispatchFilter        BandFilter
-	clock                 clock
+	clock                 clock.Clock
 	expiryCleanupInterval time.Duration
 	logger                logr.Logger
 
 	// enqueueChan is the entry point for new requests to be processed by this shard's `Run` loop.
-	enqueueChan chan *flowItem
+	enqueueChan chan *FlowItem
 	// wg is used to wait for background tasks like expiry cleanup to complete on shutdown.
 	wg             sync.WaitGroup
 	isShuttingDown atomic.Bool
@@ -108,8 +82,9 @@ type ShardProcessor struct {
 func NewShardProcessor(
 	shard contracts.RegistryShard,
 	dispatchFilter BandFilter,
-	clock clock,
+	clock clock.Clock,
 	expiryCleanupInterval time.Duration,
+	enqueueChannelBufferSize int,
 	logger logr.Logger,
 ) *ShardProcessor {
 	return &ShardProcessor{
@@ -120,22 +95,61 @@ func NewShardProcessor(
 		logger:                logger,
 		// A buffered channel decouples the processor from the distributor, allowing for a fast, asynchronous handoff of new
 		// requests.
-		enqueueChan: make(chan *flowItem, enqueueChannelBufferSize),
+		enqueueChan: make(chan *FlowItem, enqueueChannelBufferSize),
 	}
 }
 
-// Run is the main operational loop for the shard processor. It must be run as a goroutine.
+// Submit attempts a non-blocking handoff of an item to the processor's internal channel for asynchronous processing.
 //
-// # Loop Strategy: Interleaving Enqueue and Dispatch
+// It returns nil if the item was accepted by the processor, or if the processor is shutting down (in which case the
+// item is immediately finalized with a shutdown error). In both cases, a nil return means the item's lifecycle has been
+// handled by this processor and the caller should not retry.
+// It returns `ErrProcessorBusy` if the processor's channel is momentarily full, signaling that the caller should try
+// another processor.
+func (sp *ShardProcessor) Submit(item *FlowItem) error {
+	if sp.isShuttingDown.Load() {
+		item.Finalize(types.QueueOutcomeRejectedOther,
+			fmt.Errorf("%w: %w", types.ErrRejected, types.ErrFlowControllerNotRunning))
+		return nil // Success from the caller's perspective; the item is terminal.
+	}
+
+	select {
+	case sp.enqueueChan <- item:
+		return nil // Success
+	default:
+		// The channel buffer is full, signaling transient backpressure.
+		return ErrProcessorBusy
+	}
+}
+
+// SubmitOrBlock performs a blocking submission of an item to the processor's internal channel.
+// It will wait until either the submission succeeds or the provided context is cancelled.
 //
-// The loop uses a `select` statement to interleave two primary tasks:
-//  1. Accepting new requests from the `enqueueChan`.
-//  2. Attempting to dispatch existing requests from queues via `dispatchCycle`.
+// This method is the fallback used by the distributor when all processors are busy, providing graceful backpressure
+// instead of immediate rejection.
 //
-// This strategy is crucial for balancing responsiveness and throughput. When a new item arrives, it is immediately
-// enqueued, and a dispatch cycle is triggered. This gives high-priority new arrivals a chance to be dispatched quickly.
-// When no new items are arriving, the loop's `default` case continuously calls `dispatchCycle` to drain the existing
-// backlog, ensuring work continues.
+// It returns the `ctx.Err()` if the context is cancelled during the wait.
+func (sp *ShardProcessor) SubmitOrBlock(ctx context.Context, item *FlowItem) error {
+	if sp.isShuttingDown.Load() {
+		// Here, we return an error because the caller, expecting to block, was prevented from doing so by the shutdown.
+		// This is a failure of the operation.
+		item.Finalize(types.QueueOutcomeRejectedOther,
+			fmt.Errorf("%w: %w", types.ErrRejected, types.ErrFlowControllerNotRunning))
+		return types.ErrFlowControllerNotRunning
+	}
+
+	select {
+	case sp.enqueueChan <- item:
+		return nil // Success
+	case <-ctx.Done():
+		// The caller's context was cancelled while we were blocked.
+		return ctx.Err()
+	}
+}
+
+// Run is the main operational loop for the shard processor. It must be run as a goroutine.
+// It uses a `select` statement to interleave accepting new requests with dispatching existing ones, balancing
+// responsiveness with throughput.
 func (sp *ShardProcessor) Run(ctx context.Context) {
 	sp.logger.V(logutil.DEFAULT).Info("Shard processor run loop starting.")
 	defer sp.logger.V(logutil.DEFAULT).Info("Shard processor run loop stopped.")
@@ -148,10 +162,8 @@ func (sp *ShardProcessor) Run(ctx context.Context) {
 	//
 	//  1. Context Cancellation: The highest priority is shutting down. If the context's `Done` channel is closed, the
 	//     loop will drain all queues and exit. This is the primary exit condition.
-	//
 	//  2. New Item Arrival: If an item is available on `enqueueChan`, it will be processed. This ensures that the
 	//     processor is responsive to new work.
-	//
 	//  3. Default (Dispatch): If neither of the above cases is ready, the `default` case executes, ensuring the loop is
 	//     non-blocking. It continuously attempts to dispatch items from the existing backlog, preventing starvation and
 	//     ensuring queues are drained.
@@ -175,8 +187,9 @@ func (sp *ShardProcessor) Run(ctx context.Context) {
 			sp.enqueue(item)
 			sp.dispatchCycle(ctx)
 		default:
+			// If no new items are arriving, continuously try to dispatch from the backlog.
 			if !sp.dispatchCycle(ctx) {
-				// If no work was done, yield to other goroutines to prevent a tight, busy-loop when idle, but allow for
+				// If no work was done, yield to the scheduler to prevent a tight, busy-loop when idle, while still allowing for
 				// immediate rescheduling.
 				runtime.Gosched()
 			}
@@ -184,20 +197,10 @@ func (sp *ShardProcessor) Run(ctx context.Context) {
 	}
 }
 
-// Enqueue sends a new flow item to the processor's internal channel for asynchronous processing by its main `Run` loop.
-// If the processor is shutting down, it immediately finalizes the item with a shutdown error.
-func (sp *ShardProcessor) Enqueue(item *flowItem) {
-	if sp.isShuttingDown.Load() {
-		item.finalize(types.QueueOutcomeRejectedOther,
-			fmt.Errorf("%w: %w", types.ErrRejected, types.ErrFlowControllerShutdown))
-		return
-	}
-	sp.enqueueChan <- item
-}
-
-// enqueue is the internal implementation for adding a new item to a managed queue. It is always run from the single
-// main `Run` goroutine, making its "check-then-act" logic for capacity safe.
-func (sp *ShardProcessor) enqueue(item *flowItem) {
+// enqueue is responsible for adding a new item to its designated queue. It is always run from the single main `Run`
+// goroutine, which makes its multi-step "check-then-act" logic for capacity management inherently atomic and safe from
+// race conditions.
+func (sp *ShardProcessor) enqueue(item *FlowItem) {
 	req := item.OriginalRequest()
 	key := req.FlowKey()
 
@@ -213,7 +216,7 @@ func (sp *ShardProcessor) enqueue(item *flowItem) {
 	if err != nil {
 		finalErr := fmt.Errorf("configuration error: failed to get queue for flow key %s: %w", key, err)
 		logger.Error(finalErr, "Rejecting item.")
-		item.finalize(types.QueueOutcomeRejectedOther, fmt.Errorf("%w: %w", types.ErrRejected, finalErr))
+		item.Finalize(types.QueueOutcomeRejectedOther, fmt.Errorf("%w: %w", types.ErrRejected, finalErr))
 		return
 	}
 
@@ -221,7 +224,7 @@ func (sp *ShardProcessor) enqueue(item *flowItem) {
 	if err != nil {
 		finalErr := fmt.Errorf("configuration error: failed to get priority band for priority %d: %w", key.Priority, err)
 		logger.Error(finalErr, "Rejecting item.")
-		item.finalize(types.QueueOutcomeRejectedOther, fmt.Errorf("%w: %w", types.ErrRejected, finalErr))
+		item.Finalize(types.QueueOutcomeRejectedOther, fmt.Errorf("%w: %w", types.ErrRejected, finalErr))
 		return
 	}
 	logger = logger.WithValues("priorityName", band.PriorityName())
@@ -237,7 +240,7 @@ func (sp *ShardProcessor) enqueue(item *flowItem) {
 			"bandTotalBytes", bandStats.ByteSize,
 			"bandCapacityBytes", bandStats.CapacityBytes,
 		)
-		item.finalize(types.QueueOutcomeRejectedCapacity, fmt.Errorf("%w: %w", types.ErrRejected, types.ErrQueueAtCapacity))
+		item.Finalize(types.QueueOutcomeRejectedCapacity, fmt.Errorf("%w: %w", types.ErrRejected, types.ErrQueueAtCapacity))
 		return
 	}
 
@@ -250,7 +253,8 @@ func (sp *ShardProcessor) enqueue(item *flowItem) {
 	//  2. The background `runExpiryCleanup` goroutine acts as the ultimate guarantor of correctness, as it will
 	//     eventually find and evict any finalized item that slips through this check and is added to a queue.
 	if item.isFinalized() {
-		outcome, err := item.FinalState()
+		finalState := item.finalState
+		outcome, err := finalState.Outcome, finalState.Err
 		logger.V(logutil.VERBOSE).Info("Item finalized before adding to queue, ignoring.", "outcome", outcome, "err", err)
 		return
 	}
@@ -260,14 +264,14 @@ func (sp *ShardProcessor) enqueue(item *flowItem) {
 	if err := managedQ.Add(item); err != nil {
 		finalErr := fmt.Errorf("failed to add item to queue for flow key %s: %w", key, err)
 		logger.Error(finalErr, "Rejecting item.")
-		item.finalize(types.QueueOutcomeRejectedOther, fmt.Errorf("%w: %w", types.ErrRejected, finalErr))
+		item.Finalize(types.QueueOutcomeRejectedOther, fmt.Errorf("%w: %w", types.ErrRejected, finalErr))
 		return
 	}
 	logger.V(logutil.TRACE).Info("Item enqueued.")
 }
 
 // hasCapacity checks if the shard and the specific priority band have enough capacity to accommodate an item of a given
-// size.
+// size. This check is only safe because it is called from the single-writer `enqueue` method.
 func (sp *ShardProcessor) hasCapacity(priority int, itemByteSize uint64) bool {
 	if itemByteSize == 0 {
 		return true
@@ -286,22 +290,19 @@ func (sp *ShardProcessor) hasCapacity(priority int, itemByteSize uint64) bool {
 
 // dispatchCycle attempts to dispatch a single item by iterating through all priority bands from highest to lowest.
 // It applies the configured policies for each band to select an item and then attempts to dispatch it.
-// It returns true if an item was successfully dispatched, and false otherwise.
-//
-// # Error Handling Philosophy
+// It returns true if an item was successfully dispatched, and false otherwise, indicating that no work was done in this
+// cycle.
 //
-// The engine employs a robust, two-tiered error handling strategy to isolate failures and maximize system availability.
-// This is managed via the `errInterFlow` and `errIntraFlow` sentinel errors.
+// # Error Handling Philosophy: Failure Isolation & Work Conservation
 //
-//   - Inter-Flow Failures: If a failure occurs while selecting a flow (e.g., the `InterFlowDispatchPolicy` fails), the
-//     processor aborts the *current priority band* and immediately moves to the next one. This promotes work
-//     conservation, ensuring a single misconfigured band does not halt progress for the entire system.
+// The engine is designed to be resilient to failures in individual policies or transient errors within a specific flow.
+// The core principle is failure isolation. A problem in one priority band must not be allowed to halt processing for
+// other, healthy bands.
 //
-//   - Intra-Flow Failures: If a failure occurs *after* a flow has been selected (e.g., the `IntraFlowDispatchPolicy`
-//     fails), the processor aborts the *entire priority band* for the current cycle. This is a critical circuit
-//     breaker. An inter-flow policy that is not stateful with respect to past failures could otherwise repeatedly
-//     select the same problematic queue, causing a tight loop of failures. Halting the band for one cycle prevents
-//     this.
+// To achieve this, any error encountered during the selection or dispatch process for a given priority band is treated
+// as a non-critical failure for that band, in this cycle. The processor will log the error for observability and then
+// immediately continue its attempt to find work in the next-lower priority band. This promotes work conservation and
+// maximizes system throughput even in the presence of partial failures.
 func (sp *ShardProcessor) dispatchCycle(ctx context.Context) bool {
 	baseLogger := sp.logger.WithName("dispatchCycle")
 
@@ -329,12 +330,7 @@ func (sp *ShardProcessor) dispatchCycle(ctx context.Context) bool {
 		// Pass the (potentially filtered) band to the policies.
 		item, err := sp.selectItem(dispatchableBand, logger)
 		if err != nil {
-			// The error handling strategy depends on the type of failure (inter- vs. intra-flow).
-			if errors.Is(err, errIntraFlow) {
-				logger.Error(err, "Intra-flow policy failure, skipping priority band for this cycle")
-			} else {
-				logger.Error(err, "Inter-flow policy or configuration failure, skipping priority band for this cycle")
-			}
+			logger.Error(err, "Failed to select item, skipping priority band for this cycle")
 			continue
 		}
 		if item == nil {
@@ -350,7 +346,6 @@ func (sp *ShardProcessor) dispatchCycle(ctx context.Context) bool {
 			"reqByteSize", item.OriginalRequest().ByteSize())
 
 		if err := sp.dispatchItem(item, logger); err != nil {
-			// All errors from dispatchItem are considered intra-flow and unrecoverable for this band in this cycle.
 			logger.Error(err, "Failed to dispatch item, skipping priority band for this cycle")
 			continue
 		}
@@ -369,12 +364,11 @@ func (sp *ShardProcessor) selectItem(
 ) (types.QueueItemAccessor, error) {
 	interP, err := sp.shard.InterFlowDispatchPolicy(band.Priority())
 	if err != nil {
-		return nil, fmt.Errorf("%w: could not get InterFlowDispatchPolicy: %w", errInterFlow, err)
+		return nil, fmt.Errorf("could not get InterFlowDispatchPolicy: %w", err)
 	}
 	queue, err := interP.SelectQueue(band)
 	if err != nil {
-		return nil, fmt.Errorf("%w: InterFlowDispatchPolicy %q failed to select queue: %w",
-			errInterFlow, interP.Name(), err)
+		return nil, fmt.Errorf("InterFlowDispatchPolicy %q failed to select queue: %w", interP.Name(), err)
 	}
 	if queue == nil {
 		logger.V(logutil.TRACE).Info("No queue selected by InterFlowDispatchPolicy")
@@ -387,13 +381,11 @@ func (sp *ShardProcessor) selectItem(
 		"selectedFlowPriority", key.Priority)
 	intraP, err := sp.shard.IntraFlowDispatchPolicy(key)
 	if err != nil {
-		// This is an intra-flow failure because we have already successfully selected a queue.
-		return nil, fmt.Errorf("%w: could not get IntraFlowDispatchPolicy for flow %q: %w", errIntraFlow, key, err)
+		return nil, fmt.Errorf("could not get IntraFlowDispatchPolicy for flow %s: %w", key, err)
 	}
 	item, err := intraP.SelectItem(queue)
 	if err != nil {
-		return nil, fmt.Errorf("%w: IntraFlowDispatchPolicy %q failed to select item for flow %q: %w",
-			errIntraFlow, intraP.Name(), key, err)
+		return nil, fmt.Errorf("IntraFlowDispatchPolicy %q failed to select item for flow %s: %w", intraP.Name(), key, err)
 	}
 	if item == nil {
 		logger.V(logutil.TRACE).Info("No item selected by IntraFlowDispatchPolicy")
@@ -403,7 +395,7 @@ func (sp *ShardProcessor) selectItem(
 }
 
 // dispatchItem handles the final steps of dispatching an item after it has been selected by policies. This includes
-// removing it from its queue, checking for last-minute expiry, and finalizing its outcome.
+// removing it from its queue and finalizing its outcome.
 func (sp *ShardProcessor) dispatchItem(itemAcc types.QueueItemAccessor, logger logr.Logger) error {
 	logger = logger.WithName("dispatchItem")
 
@@ -411,7 +403,7 @@ func (sp *ShardProcessor) dispatchItem(itemAcc types.QueueItemAccessor, logger l
 	// We must look up the queue by its specific priority, as a flow might have draining queues at other levels.
 	managedQ, err := sp.shard.ManagedQueue(req.FlowKey())
 	if err != nil {
-		return fmt.Errorf("%w: failed to get ManagedQueue for flow %q: %w", errIntraFlow, req.FlowKey(), err)
+		return fmt.Errorf("failed to get ManagedQueue for flow %s: %w", req.FlowKey(), err)
 	}
 
 	// The core mutation: remove the item from the queue.
@@ -420,21 +412,11 @@ func (sp *ShardProcessor) dispatchItem(itemAcc types.QueueItemAccessor, logger l
 		// This can happen benignly if the item was already removed by the expiry cleanup loop between the time it was
 		// selected by the policy and the time this function is called.
 		logger.V(logutil.VERBOSE).Info("Item already removed from queue, likely by expiry cleanup", "err", err)
-		return fmt.Errorf("%w: failed to remove item %q from queue for flow %q: %w",
-			errIntraFlow, req.ID(), req.FlowKey(), err)
-	}
-
-	removedItem, ok := removedItemAcc.(*flowItem)
-	if !ok {
-		// This indicates a severe logic error where a queue returns an item of an unexpected type. This violates a
-		// core system invariant: all items managed by the processor must be of type *flowItem. This is an unrecoverable
-		// state for this shard.
-		unexpectedItemErr := fmt.Errorf("%w: internal error: item %q of type %T is not a *flowItem",
-			errIntraFlow, removedItemAcc.OriginalRequest().ID(), removedItemAcc)
-		panic(unexpectedItemErr)
+		return fmt.Errorf("failed to remove item %q from queue for flow %s: %w", req.ID(), req.FlowKey(), err)
 	}
 
 	// Final check for expiry/cancellation right before dispatch.
+	removedItem := removedItemAcc.(*FlowItem)
 	isExpired, outcome, expiryErr := checkItemExpiry(removedItem, sp.clock.Now())
 	if isExpired {
 		// Ensure we always have a non-nil error to wrap for consistent logging and error handling.
@@ -444,43 +426,34 @@ func (sp *ShardProcessor) dispatchItem(itemAcc types.QueueItemAccessor, logger l
 		}
 		logger.V(logutil.VERBOSE).Info("Item expired at time of dispatch, evicting", "outcome", outcome,
 			"err", finalErr)
-		removedItem.finalize(outcome, fmt.Errorf("%w: %w", types.ErrEvicted, finalErr))
+		removedItem.Finalize(outcome, fmt.Errorf("%w: %w", types.ErrEvicted, finalErr))
 		// Return an error to signal that the dispatch did not succeed.
-		return fmt.Errorf("%w: item %q expired before dispatch: %w", errIntraFlow, req.ID(), finalErr)
+		return fmt.Errorf("item %q expired before dispatch: %w", req.ID(), finalErr)
 	}
 
 	// Finalize the item as dispatched.
-	removedItem.finalize(types.QueueOutcomeDispatched, nil)
+	removedItem.Finalize(types.QueueOutcomeDispatched, nil)
 	logger.V(logutil.TRACE).Info("Item dispatched.")
 	return nil
 }
 
-// checkItemExpiry checks if an item has been cancelled (via its context) or has exceeded its TTL. It returns true if
-// the item is expired, along with the corresponding outcome and error.
+// checkItemExpiry provides the authoritative check to determine if an item should be evicted due to TTL expiry or
+// context cancellation.
 //
-// This function provides "defense in depth" against race conditions. It is the authoritative check that is called from
-// multiple locations (the dispatch loop and the cleanup loop) to determine if an item should be evicted. Its first
-// action is to check if the item has *already* been finalized by a competing goroutine, ensuring that the final outcome
-// is decided exactly once.
+// It serves as a safeguard against race conditions. Its first action is to check if the item has already been finalized
+// by a competing goroutine (e.g., the cleanup loop finalizing an item the dispatch loop is trying to process).=
+// This ensures that the final outcome is decided exactly once.
 func checkItemExpiry(
 	itemAcc types.QueueItemAccessor,
 	now time.Time,
 ) (isExpired bool, outcome types.QueueOutcome, err error) {
-	item, ok := itemAcc.(*flowItem)
-	if !ok {
-		// This indicates a severe logic error where a queue returns an item of an unexpected type. This violates a
-		// core system invariant: all items managed by the processor must be of type *flowItem. This is an unrecoverable
-		// state for this shard.
-		unexpectedItemErr := fmt.Errorf("internal error: item %q of type %T is not a *flowItem",
-			itemAcc.OriginalRequest().ID(), itemAcc)
-		panic(unexpectedItemErr)
-	}
+	item := itemAcc.(*FlowItem)
 
 	// This check is a critical defense against race conditions. If another goroutine (e.g., the cleanup loop) has
 	// already finalized this item, we must respect that outcome.
 	if item.isFinalized() {
-		outcome, err := item.FinalState()
-		return true, outcome, err
+		finalState := item.finalState
+		return true, finalState.Outcome, finalState.Err
 	}
 
 	// Check if the request's context has been cancelled.
@@ -517,7 +490,7 @@ func (sp *ShardProcessor) runExpiryCleanup(ctx context.Context) {
 }
 
 // cleanupExpired performs a single scan of all queues on the shard, removing and finalizing any items that have
-// expired due to TTL or context cancellation.
+// expired.
 func (sp *ShardProcessor) cleanupExpired(now time.Time) {
 	processFn := func(managedQ contracts.ManagedQueue, queueLogger logr.Logger) {
 		// This predicate identifies items to be removed by the Cleanup call.
@@ -537,9 +510,8 @@ func (sp *ShardProcessor) cleanupExpired(now time.Time) {
 	sp.processAllQueuesConcurrently("cleanupExpired", processFn)
 }
 
-// shutdown handles the graceful termination of the processor. It uses sync.Once to guarantee that the shutdown logic is
-// executed exactly once, regardless of whether it's triggered by context cancellation or the closing of the enqueue
-// channel.
+// shutdown handles the graceful termination of the processor, ensuring any pending items in the enqueue channel or in
+// the queues are finalized correctly.
 func (sp *ShardProcessor) shutdown() {
 	sp.shutdownOnce.Do(func() {
 		// Set the atomic bool so that any new calls to Enqueue will fail fast.
@@ -555,8 +527,8 @@ func (sp *ShardProcessor) shutdown() {
 				if item == nil { // This is a safeguard against logic errors in the distributor.
 					continue
 				}
-				item.finalize(types.QueueOutcomeRejectedOther,
-					fmt.Errorf("%w: %w", types.ErrRejected, types.ErrFlowControllerShutdown))
+				item.Finalize(types.QueueOutcomeRejectedOther,
+					fmt.Errorf("%w: %w", types.ErrRejected, types.ErrFlowControllerNotRunning))
 			default:
 				// The channel is empty, we can now safely close it.
 				break DrainLoop
@@ -569,8 +541,7 @@ func (sp *ShardProcessor) shutdown() {
 	})
 }
 
-// evictAll drains all queues on the shard and finalizes every item with a shutdown error. This is called when the
-// processor is shutting down to ensure no requests are left in a pending state.
+// evictAll drains all queues on the shard and finalizes every item with a shutdown error.
 func (sp *ShardProcessor) evictAll() {
 	processFn := func(managedQ contracts.ManagedQueue, queueLogger logr.Logger) {
 		removedItems, err := managedQ.Drain()
@@ -580,7 +551,7 @@ func (sp *ShardProcessor) evictAll() {
 
 		// Finalize all the items that were removed.
 		getOutcome := func(_ types.QueueItemAccessor) (types.QueueOutcome, error) {
-			return types.QueueOutcomeEvictedOther, fmt.Errorf("%w: %w", types.ErrEvicted, types.ErrFlowControllerShutdown)
+			return types.QueueOutcomeEvictedOther, fmt.Errorf("%w: %w", types.ErrEvicted, types.ErrFlowControllerNotRunning)
 		}
 		sp.finalizeItems(removedItems, queueLogger, getOutcome)
 	}
@@ -659,23 +630,23 @@ func (sp *ShardProcessor) finalizeItems(
 	getOutcome func(item types.QueueItemAccessor) (types.QueueOutcome, error),
 ) {
 	for _, i := range items {
-		item, ok := i.(*flowItem)
+		item, ok := i.(*FlowItem)
 		if !ok {
-			unexpectedItemErr := fmt.Errorf("internal error: item %q of type %T is not a *flowItem",
+			unexpectedItemErr := fmt.Errorf("internal error: item %q of type %T is not a *FlowItem",
 				i.OriginalRequest().ID(), i)
 			logger.Error(unexpectedItemErr, "Panic condition detected during finalization", "item", i)
 			continue
 		}
 
 		outcome, err := getOutcome(i)
-		item.finalize(outcome, err)
+		item.Finalize(outcome, err)
 		logger.V(logutil.TRACE).Info("Item finalized", "reqID", item.OriginalRequest().ID(),
 			"outcome", outcome, "err", err)
 	}
 }
 
-// finalizeExpiredItems is a specialized version of finalizeItems for items that are known to be expired. It determines
-// the precise reason for expiry and finalizes the item accordingly.
+// finalizeExpiredItems is a specialized version of finalizeItems for items that are known to be expired.
+// It determines the precise reason for expiry and finalizes the item accordingly.
 func (sp *ShardProcessor) finalizeExpiredItems(items []types.QueueItemAccessor, now time.Time, logger logr.Logger) {
 	getOutcome := func(item types.QueueItemAccessor) (types.QueueOutcome, error) {
 		// We don't need the `isExpired` boolean here because we know it's true, but this function conveniently returns the
diff --git a/pkg/epp/flowcontrol/framework/plugins/policies/intraflow/dispatch/fcfs/fcfs.go b/pkg/epp/flowcontrol/framework/plugins/policies/intraflow/dispatch/fcfs/fcfs.go
index edcc02a..7addb9d 100644
--- a/pkg/epp/flowcontrol/framework/plugins/policies/intraflow/dispatch/fcfs/fcfs.go
+++ b/pkg/epp/flowcontrol/framework/plugins/policies/intraflow/dispatch/fcfs/fcfs.go
@@ -26,6 +26,32 @@ import (
 )
 
 // FCFSPolicyName is the name of the FCFS policy implementation.
+//
+// This policy implements a First-Come, First-Served (FCFS) strategy by selecting the item with the earliest logical
+// enqueue time.
+//
+// # Behavior and Queue Pairing
+//
+// The behavioral guarantees of this policy are critically dependent on the capabilities of the `framework.SafeQueue` it
+// is paired with. The system distinguishes between:
+//   - "Logical Enqueue Time": The timestamp when a request first arrives at the `controller.FlowController`.
+//   - "Physical Enqueue Time": The timestamp when a request is added to a specific shard's queue, which happens later.
+//
+// This policy's behavior changes accordingly:
+//   - Paired with a `CapabilityPriorityConfigurable` queue, it provides strict FCFS ordering based on logical enqueue
+//     time, aligning with this policy's vended `framework.ItemComparator`.
+//     This configuration ensures that requests are processed in the order they arrived at the controller, providing the
+//     most intuitive behavior.
+//   - Paired with a `CapabilityFIFO` queue, it provides approximate FCFS ordering based on physical arrival order at
+//     the `framework.SafeQueue`.
+//     This configuration offers higher performance at the cost of strict logical-time ordering, as the
+//     `controller.FlowController`'s "bounce-and-retry" mechanic for Draining shards means a bounced request may be
+//     processed after a request that logically darrived later.
+//
+// Given that true end-to-end ordering is non-deterministic in a distributd system, this policy defaults to pairing with
+// a CapabilityFIFO` queue (like "ListQueue") to prioritize performance and high throughput. For users who require the
+// strictest possible logical-time ordering that this layer can provide, explicitly pairing this policy with a
+// `CapabilityPriorityConfigurable` queue is recommended.
 const FCFSPolicyName = "FCFS"
 
 func init() {
@@ -35,7 +61,9 @@ func init() {
 		})
 }
 
-// fcfs (First-Come, First-Served) implements the `framework.IntraFlowDispatchPolicy` interface.
+// fcfs is the internal implementation of the FCFS policy.
+// See the documentation for the exported `FCFSPolicyName` constant for detailed user-facing information about its
+// behavior.
 type fcfs struct {
 	comparator framework.ItemComparator
 }
@@ -70,9 +98,10 @@ func (p *fcfs) Comparator() framework.ItemComparator {
 	return p.comparator
 }
 
-// RequiredQueueCapabilities specifies that this policy needs a queue that supports FIFO operations.
+// RequiredQueueCapabilities returns an empty slice, indicating that this policy can operate with any queue.
+// See the `FCFSPolicyName` constant's documentation for details on the behavioral trade-offs.
 func (p *fcfs) RequiredQueueCapabilities() []framework.QueueCapability {
-	return []framework.QueueCapability{framework.CapabilityFIFO}
+	return []framework.QueueCapability{}
 }
 
 // --- enqueueTimeComparator ---
diff --git a/pkg/epp/flowcontrol/framework/plugins/queue/listqueue/listqueue.go b/pkg/epp/flowcontrol/framework/plugins/queue/listqueue/listqueue.go
index 8e123b6..792e3a4 100644
--- a/pkg/epp/flowcontrol/framework/plugins/queue/listqueue/listqueue.go
+++ b/pkg/epp/flowcontrol/framework/plugins/queue/listqueue/listqueue.go
@@ -14,8 +14,8 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-// Package listqueue provides a simple, concurrent-safe queue implementation using a standard library
-// `container/list.List` as the underlying data structure for FIFO (First-In, First-Out) behavior.
+// Package listqueue provides a high-performance, concurrent-safe FIFO (First-In, First-Out) implementation of
+// implementation of the `framework.SafeQueue` based on the standard library's `container/list`.
 package listqueue
 
 import (
@@ -28,7 +28,28 @@ import (
 	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/types"
 )
 
-// ListQueueName is the name of the list queue implementation.
+// ListQueueName is the name of the list-based queue implementation.
+//
+// This queue provides a high-performance, low-overhead implementation based on a standard `container/list`.
+// It advertises the `CapabilityFIFO`.
+//
+// # Behavioral Guarantees
+//
+// The core guarantee of this queue is strict physical First-In, First-Out (FIFO) ordering. It processes items in the
+// exact order they are added to the queue on a specific shard.
+//
+// # Performance and Trade-offs
+//
+// Because the physical insertion order may not match a request's logical arrival time (due to the
+// `controller.FlowController`'s internal "bounce-and-retry" mechanic), this queue provides an*approximate FCFS behavior
+// from a system-wide perspective.
+//
+// Given that true end-to-end ordering is non-deterministic in a distributed system, this high-performance queue is the
+// recommended default for most FCFS-like policies. It prioritizes throughput and efficiency, which aligns with the
+// primary goal of the Flow Control system.
+//
+// For workloads that require the strictest possible logical-time ordering this layer can provide, explicitly using a
+// queue that supports `CapabilityPriorityConfigurable` is the appropriate choice.
 const ListQueueName = "ListQueue"
 
 func init() {
@@ -39,8 +60,8 @@ func init() {
 		})
 }
 
-// listQueue implements the `framework.SafeQueue` interface using a standard `container/list.List` for FIFO behavior.
-// This implementation is concurrent-safe.
+// listQueue is the internal implementation of the ListQueue.
+// See the documentation for the exported `ListQueueName` constant for detailed user-facing information.
 type listQueue struct {
 	requests *list.List
 	byteSize atomic.Uint64
diff --git a/pkg/epp/flowcontrol/registry/config.go b/pkg/epp/flowcontrol/registry/config.go
index f9ad8e6..af345a6 100644
--- a/pkg/epp/flowcontrol/registry/config.go
+++ b/pkg/epp/flowcontrol/registry/config.go
@@ -112,7 +112,7 @@ type Config struct {
 // that operate at this priority level.
 type PriorityBandConfig struct {
 	// Priority is the unique numerical priority level for this band.
-	// Convention: Lower numerical values indicate lower priority.
+	// Convention: Highest numeric value corresponds to highest priority (centered on 0).
 	// Required.
 	Priority int
 
@@ -140,20 +140,6 @@ type PriorityBandConfig struct {
 	MaxBytes uint64
 }
 
-// NewConfig performs validation and initialization, returning a guaranteed-valid `Config` object.
-// This is the required constructor for creating a new configuration. It applies provided functional options (primarily
-// for testing) and does not mutate the input `cfg`.
-func NewConfig(cfg Config, opts ...configOption) (*Config, error) {
-	newCfg := cfg.deepCopy()
-	for _, opt := range opts {
-		opt(newCfg)
-	}
-	if err := newCfg.validateAndApplyDefaults(); err != nil {
-		return nil, err
-	}
-	return newCfg, nil
-}
-
 // =============================================================================
 // Shard-Level Configuration
 // =============================================================================
@@ -205,52 +191,55 @@ func (sc *ShardConfig) getBandConfig(priority int) (*ShardPriorityBandConfig, er
 
 // --- Validation and Defaulting ---
 
-// validateAndApplyDefaults checks the global configuration for validity (including plugin compatibility) and mutates
-// the receiver to populate any empty fields with system defaults. It also initializes internal lookup maps.
-func (c *Config) validateAndApplyDefaults() error {
+// ValidateAndApplyDefaults checks the global configuration for validity and then creates a new `Config` object,
+// populating any empty fields with system defaults.
+// It does not mutate the receiver.
+func (c *Config) ValidateAndApplyDefaults() (*Config, error) {
+	cfg := c.deepCopy()
+
 	// Apply defaults to top-level fields.
-	if c.InitialShardCount <= 0 {
-		c.InitialShardCount = defaultInitialShardCount
+	if cfg.InitialShardCount <= 0 {
+		cfg.InitialShardCount = defaultInitialShardCount
 	}
-	if c.FlowGCTimeout <= 0 {
-		c.FlowGCTimeout = defaultFlowGCTimeout
+	if cfg.FlowGCTimeout <= 0 {
+		cfg.FlowGCTimeout = defaultFlowGCTimeout
 	}
-	if c.EventChannelBufferSize <= 0 {
-		c.EventChannelBufferSize = defaultEventChannelBufferSize
+	if cfg.EventChannelBufferSize <= 0 {
+		cfg.EventChannelBufferSize = defaultEventChannelBufferSize
 	}
 
 	// Ensure the DI factories are initialized for production use if `NewConfig` was called without options.
-	if c.interFlowDispatchPolicyFactory == nil {
-		c.interFlowDispatchPolicyFactory = inter.NewPolicyFromName
+	if cfg.interFlowDispatchPolicyFactory == nil {
+		cfg.interFlowDispatchPolicyFactory = inter.NewPolicyFromName
 	}
-	if c.intraFlowDispatchPolicyFactory == nil {
-		c.intraFlowDispatchPolicyFactory = intra.NewPolicyFromName
+	if cfg.intraFlowDispatchPolicyFactory == nil {
+		cfg.intraFlowDispatchPolicyFactory = intra.NewPolicyFromName
 	}
-	if c.queueFactory == nil {
-		c.queueFactory = queue.NewQueueFromName
+	if cfg.queueFactory == nil {
+		cfg.queueFactory = queue.NewQueueFromName
 	}
 
-	if len(c.PriorityBands) == 0 {
-		return errors.New("config validation failed: at least one priority band must be defined")
+	if len(cfg.PriorityBands) == 0 {
+		return nil, errors.New("config validation failed: at least one priority band must be defined")
 	}
 
 	// Validate and default each priority band.
 	priorities := make(map[int]struct{})
 	priorityNames := make(map[string]struct{})
-	c.priorityBandMap = make(map[int]*PriorityBandConfig, len(c.PriorityBands))
+	cfg.priorityBandMap = make(map[int]*PriorityBandConfig, len(cfg.PriorityBands))
 
-	for i := range c.PriorityBands {
-		band := &c.PriorityBands[i]
+	for i := range cfg.PriorityBands {
+		band := &cfg.PriorityBands[i]
 		if _, exists := priorities[band.Priority]; exists {
-			return fmt.Errorf("config validation failed: duplicate priority level %d found", band.Priority)
+			return nil, fmt.Errorf("config validation failed: duplicate priority level %d found", band.Priority)
 		}
 		priorities[band.Priority] = struct{}{}
 
 		if band.PriorityName == "" {
-			return fmt.Errorf("config validation failed: PriorityName is required for priority band %d", band.Priority)
+			return nil, fmt.Errorf("config validation failed: PriorityName is required for priority band %d", band.Priority)
 		}
 		if _, exists := priorityNames[band.PriorityName]; exists {
-			return fmt.Errorf("config validation failed: duplicate priority name %q found", band.PriorityName)
+			return nil, fmt.Errorf("config validation failed: duplicate priority name %q found", band.PriorityName)
 		}
 		priorityNames[band.PriorityName] = struct{}{}
 
@@ -267,12 +256,12 @@ func (c *Config) validateAndApplyDefaults() error {
 			band.MaxBytes = defaultPriorityBandMaxBytes
 		}
 
-		if err := c.validateBandCompatibility(*band); err != nil {
-			return err
+		if err := cfg.validateBandCompatibility(*band); err != nil {
+			return nil, err
 		}
-		c.priorityBandMap[band.Priority] = band
+		cfg.priorityBandMap[band.Priority] = band
 	}
-	return nil
+	return cfg, nil
 }
 
 // validateBandCompatibility verifies that a band's configured queue type has the necessary capabilities.
@@ -423,6 +412,18 @@ func withQueueFactory(factory queueFactory) configOption {
 	}
 }
 
+// newConfig creates a new validated and defaulted `Config` object.
+// It applies provided test-only functional options before validation and defaulting.
+// It does not mutate the input `cfg`.
+// test-only
+func newConfig(cfg Config, opts ...configOption) (*Config, error) {
+	newCfg := cfg.deepCopy()
+	for _, opt := range opts {
+		opt(newCfg)
+	}
+	return newCfg.ValidateAndApplyDefaults()
+}
+
 // --- Internal Utilities ---
 
 // deepCopy creates a deep copy of the `Config` object.
@@ -436,7 +437,6 @@ func (c *Config) deepCopy() *Config {
 		FlowGCTimeout:                  c.FlowGCTimeout,
 		EventChannelBufferSize:         c.EventChannelBufferSize,
 		PriorityBands:                  make([]PriorityBandConfig, len(c.PriorityBands)),
-		priorityBandMap:                make(map[int]*PriorityBandConfig, len(c.PriorityBands)),
 		interFlowDispatchPolicyFactory: c.interFlowDispatchPolicyFactory,
 		intraFlowDispatchPolicyFactory: c.intraFlowDispatchPolicyFactory,
 		queueFactory:                   c.queueFactory,
@@ -445,11 +445,14 @@ func (c *Config) deepCopy() *Config {
 	// PriorityBandConfig contains only value types, so a slice copy is sufficient for a deep copy.
 	copy(newCfg.PriorityBands, c.PriorityBands)
 
-	// Crucial: We must rebuild the map and take the address of the elements within the new slice (`newCfg.PriorityBands`)
-	// to ensure the map pointers are correct for the newly created `Config` instance.
-	for i := range newCfg.PriorityBands {
-		band := &newCfg.PriorityBands[i]
-		newCfg.priorityBandMap[band.Priority] = band
+	if c.priorityBandMap != nil {
+		newCfg.priorityBandMap = make(map[int]*PriorityBandConfig, len(c.PriorityBands))
+		// Crucial: We must rebuild the map and take the address of the elements within the new slice (`newCfg.PriorityBands`)
+		// to ensure the map pointers are correct for the newly created `Config` instance.
+		for i := range newCfg.PriorityBands {
+			band := &newCfg.PriorityBands[i]
+			newCfg.priorityBandMap[band.Priority] = band
+		}
 	}
 	return newCfg
 }
diff --git a/pkg/epp/flowcontrol/registry/connection.go b/pkg/epp/flowcontrol/registry/connection.go
index 995f23c..cb98316 100644
--- a/pkg/epp/flowcontrol/registry/connection.go
+++ b/pkg/epp/flowcontrol/registry/connection.go
@@ -31,13 +31,13 @@ type connection struct {
 var _ contracts.ActiveFlowConnection = &connection{}
 
 // Shards returns a stable snapshot of accessors for all internal state shards.
-func (c *connection) Shards() []contracts.RegistryShard {
+func (c *connection) ActiveShards() []contracts.RegistryShard {
 	c.registry.mu.RLock()
 	defer c.registry.mu.RUnlock()
 
 	// Return a copy to ensure the caller cannot modify the registry's internal slice.
-	shardsCopy := make([]contracts.RegistryShard, len(c.registry.allShards))
-	for i, s := range c.registry.allShards {
+	shardsCopy := make([]contracts.RegistryShard, len(c.registry.activeShards))
+	for i, s := range c.registry.activeShards {
 		shardsCopy[i] = s
 	}
 	return shardsCopy
diff --git a/pkg/epp/flowcontrol/registry/registry.go b/pkg/epp/flowcontrol/registry/registry.go
index 12f83e2..3a73ef7 100644
--- a/pkg/epp/flowcontrol/registry/registry.go
+++ b/pkg/epp/flowcontrol/registry/registry.go
@@ -148,17 +148,13 @@ func withClock(clk clock.WithTickerAndDelayedExecution) RegistryOption {
 
 // NewFlowRegistry creates and initializes a new `FlowRegistry` instance.
 func NewFlowRegistry(config Config, logger logr.Logger, opts ...RegistryOption) (*FlowRegistry, error) {
-	validatedConfig, err := NewConfig(config)
-	if err != nil {
-		return nil, fmt.Errorf("master configuration is invalid: %w", err)
-	}
-
+	cfg := config.deepCopy()
 	fr := &FlowRegistry{
-		config:               validatedConfig,
+		config:               cfg,
 		logger:               logger.WithName("flow-registry"),
 		activeShards:         []*registryShard{},
 		drainingShards:       make(map[string]*registryShard),
-		perPriorityBandStats: make(map[int]*bandStats, len(validatedConfig.PriorityBands)),
+		perPriorityBandStats: make(map[int]*bandStats, len(cfg.PriorityBands)),
 	}
 
 	for _, opt := range opts {
@@ -173,7 +169,7 @@ func NewFlowRegistry(config Config, logger logr.Logger, opts ...RegistryOption)
 		fr.perPriorityBandStats[band.Priority] = &bandStats{}
 	}
 
-	if err := fr.updateShardCount(validatedConfig.InitialShardCount); err != nil {
+	if err := fr.updateShardCount(cfg.InitialShardCount); err != nil {
 		return nil, fmt.Errorf("failed to initialize shards: %w", err)
 	}
 	fr.logger.V(logging.DEFAULT).Info("FlowRegistry initialized successfully")
@@ -198,7 +194,7 @@ func (fr *FlowRegistry) Run(ctx context.Context) {
 	}
 }
 
-// --- `contracts.FlowRegistryClient` Implementation ---
+// --- `contracts.FlowRegistryDataPlane` Implementation ---
 
 // Connect establishes a session for a given flow, acquiring a lifecycle lease.
 // This is the primary entry point for the data path.
@@ -275,7 +271,7 @@ func (fr *FlowRegistry) prepareNewFlow(key types.FlowKey) (*flowState, error) {
 	return &flowState{key: key}, nil
 }
 
-// --- `contracts.FlowRegistryAdmin` Implementation ---
+// --- `contracts.FlowRegistryObserver` Implementation ---
 
 // Stats returns globally aggregated statistics for the entire `FlowRegistry`.
 //
diff --git a/pkg/epp/flowcontrol/registry/shard.go b/pkg/epp/flowcontrol/registry/shard.go
index c87a8e4..4a7918e 100644
--- a/pkg/epp/flowcontrol/registry/shard.go
+++ b/pkg/epp/flowcontrol/registry/shard.go
@@ -228,6 +228,8 @@ func (s *registryShard) Stats() contracts.ShardStats {
 	// Casts from `int64` to `uint64` are safe because the non-negative invariant is strictly enforced at the
 	// `managedQueue` level.
 	stats := contracts.ShardStats{
+		ID:                   s.id,
+		IsActive:             s.IsActive(),
 		TotalCapacityBytes:   s.config.MaxBytes,
 		TotalByteSize:        uint64(s.totalByteSize.Load()),
 		TotalLen:             uint64(s.totalLen.Load()),
diff --git a/pkg/epp/flowcontrol/types/errors.go b/pkg/epp/flowcontrol/types/errors.go
index f7dffbd..8c966bb 100644
--- a/pkg/epp/flowcontrol/types/errors.go
+++ b/pkg/epp/flowcontrol/types/errors.go
@@ -43,11 +43,8 @@ var (
 // The following errors can occur before a request is formally added to a `framework.SafeQueue`. When returned by
 // `FlowController.EnqueueAndWait()`, these specific errors will typically be wrapped by `ErrRejected`.
 var (
-	// ErrNilRequest indicates that a nil `types.FlowControlRequest` was provided.
-	ErrNilRequest = errors.New("FlowControlRequest cannot be nil")
-
 	// ErrQueueAtCapacity indicates that a request could not be enqueued because queue capacity limits were met.
-	ErrQueueAtCapacity = errors.New("queue at capacity and displacement failed to make space")
+	ErrQueueAtCapacity = errors.New("queue at capacity")
 )
 
 // --- Post-Enqueue Eviction Errors ---
@@ -68,10 +65,10 @@ var (
 // --- General `controller.FlowController` Errors ---
 
 var (
-	// ErrFlowControllerShutdown indicates that an operation could not complete or an item was evicted because the
-	// `controller.FlowController` is shutting down or has stopped.
+	// ErrFlowControllerNotRunning indicates that an operation could not complete or an item was evicted because the
+	// `controller.FlowController` is not running or is in the process of shutting down.
 	//
 	// When returned by `FlowController.EnqueueAndWait()`, this will be wrapped by `ErrRejected` (if rejection happens
 	// before internal queuing) or `ErrEvicted` (if eviction happens after internal queuing).
-	ErrFlowControllerShutdown = errors.New("FlowController is shutting down")
+	ErrFlowControllerNotRunning = errors.New("flow controller is not running")
 )
diff --git a/pkg/epp/flowcontrol/types/request.go b/pkg/epp/flowcontrol/types/request.go
index 7569407..5dfc18e 100644
--- a/pkg/epp/flowcontrol/types/request.go
+++ b/pkg/epp/flowcontrol/types/request.go
@@ -92,7 +92,8 @@ type QueueItemAccessor interface {
 	OriginalRequest() FlowControlRequest
 
 	// EnqueueTime is the timestamp when the item was logically accepted by the `controller.FlowController` for queuing
-	// (i.e., when `controller.FlowController.EnqueueAndWait()` was called).
+	// (i.e., when `controller.FlowController.EnqueueAndWait()` was called). It does not reflect the time the request
+	// landed in a `framework.SafeQueue` instance.
 	EnqueueTime() time.Time
 
 	// EffectiveTTL is the actual Time-To-Live assigned to this item by the `controller.FlowController`, taking into
diff --git a/pkg/epp/handlers/response.go b/pkg/epp/handlers/response.go
index 0ccaf81..7dfaf3b 100644
--- a/pkg/epp/handlers/response.go
+++ b/pkg/epp/handlers/response.go
@@ -19,6 +19,7 @@ package handlers
 import (
 	"context"
 	"encoding/json"
+	"fmt"
 	"strings"
 
 	configPb "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
@@ -39,8 +40,7 @@ func (s *StreamingServer) HandleResponseBody(ctx context.Context, reqCtx *Reques
 	logger := log.FromContext(ctx)
 	responseBytes, err := json.Marshal(response)
 	if err != nil {
-		logger.V(logutil.DEFAULT).Error(err, "error marshalling responseBody")
-		return reqCtx, err
+		return reqCtx, fmt.Errorf("error marshalling responseBody - %w", err)
 	}
 	if response["usage"] != nil {
 		usg := response["usage"].(map[string]any)
diff --git a/pkg/epp/handlers/server.go b/pkg/epp/handlers/server.go
index 6a5c116..ddfb331 100644
--- a/pkg/epp/handlers/server.go
+++ b/pkg/epp/handlers/server.go
@@ -177,9 +177,6 @@ func (s *StreamingServer) Process(srv extProcPb.ExternalProcessor_ProcessServer)
 			return nil
 		}
 		if recvErr != nil {
-			// This error occurs very frequently, though it doesn't seem to have any impact.
-			// TODO Figure out if we can remove this noise.
-			logger.V(logutil.DEFAULT).Error(err, "Cannot receive stream request")
 			return status.Errorf(codes.Unknown, "cannot receive stream request: %v", err)
 		}
 
diff --git a/pkg/epp/server/runserver.go b/pkg/epp/server/runserver.go
index 69a928e..870acc7 100644
--- a/pkg/epp/server/runserver.go
+++ b/pkg/epp/server/runserver.go
@@ -157,8 +157,7 @@ func (r *ExtProcServerRunner) AsRunnable(logger logr.Logger) manager.Runnable {
 				cert, err = tlsutil.CreateSelfSignedTLSCertificate(logger)
 			}
 			if err != nil {
-				logger.Error(err, "Failed to create self signed certificate")
-				return err
+				return fmt.Errorf("failed to create self signed certificate - %w", err)
 			}
 
 			creds := credentials.NewTLS(&tls.Config{
diff --git a/site-src/api-types/inferencemodel.md b/site-src/api-types/inferencemodel.md
deleted file mode 100644
index 54fe573..0000000
--- a/site-src/api-types/inferencemodel.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Inference Model
-
-??? example "Alpha since v0.1.0"
-
-    The `InferenceModel` resource is alpha and may have breaking changes in
-    future releases of the API.
-
-## Background
-
-An InferenceModel allows the Inference Workload Owner to define:
-
-- Which Model/LoRA adapter(s) to consume.
-  - Mapping from a client facing model name to the target model name in the InferencePool.
-  - InferenceModel allows for traffic splitting between adapters _in the same InferencePool_ to allow for new LoRA adapter versions to be easily rolled out.
-- Criticality of the requests to the InferenceModel.
-
-## Spec
-
-The full spec of the InferenceModel is defined [here](/reference/spec/#inferencemodel).
\ No newline at end of file
diff --git a/site-src/api-types/inferenceobjective.md b/site-src/api-types/inferenceobjective.md
new file mode 100644
index 0000000..9b7fe74
--- /dev/null
+++ b/site-src/api-types/inferenceobjective.md
@@ -0,0 +1,14 @@
+# Inference Objective
+
+??? example "Alpha since v1.0.0"
+
+    The `InferenceObjective` resource is alpha and may have breaking changes in
+    future releases of the API.
+
+## Background
+
+The **InferenceObjective** API defines a set of serving objectives of the specific request it is associated with. This CRD currently houses only `Priority` but will be expanded to include fields such as SLO attainment.
+
+## Spec
+
+The full spec of the InferenceModel is defined [here](/reference/x-spec/#inferenceobjective).
\ No newline at end of file
diff --git a/site-src/api-types/inferencepool.md b/site-src/api-types/inferencepool.md
index c4481b1..8922d0d 100644
--- a/site-src/api-types/inferencepool.md
+++ b/site-src/api-types/inferencepool.md
@@ -1,9 +1,8 @@
 # Inference Pool
 
-??? example "Alpha since v0.1.0"
+??? success example "GA since v1.0.0"
 
-    The `InferencePool` resource is alpha and may have breaking changes in
-    future releases of the API.
+    The `InferencePool` resource has been graduated to v1 and is considered stable.
 
 ## Background
 
diff --git a/site-src/concepts/api-overview.md b/site-src/concepts/api-overview.md
index ab07a1d..01ee254 100644
--- a/site-src/concepts/api-overview.md
+++ b/site-src/concepts/api-overview.md
@@ -23,6 +23,6 @@ each aligning with a specific user persona in the Generative AI serving workflow
 
 InferencePool represents a set of Inference-focused Pods and an extension that will be used to route to them. Within the broader Gateway API resource model, this resource is considered a "backend". In practice, that means that you'd replace a Kubernetes Service with an InferencePool. This resource has some similarities to Service (a way to select Pods and specify a port), but has some unique capabilities. With InferencePool, you can configure a routing extension as well as inference-specific routing optimizations. For more information on this resource, refer to our [InferencePool documentation](/api-types/inferencepool) or go directly to the [InferencePool spec](/reference/spec/#inferencepool).
 
-### InferenceModel
+### InferenceObjective
 
-An InferenceModel represents a model or adapter, and configuration associated with that model. This resource enables you to configure the relative criticality of a model, and allows you to seamlessly translate the requested model name to one or more backend model names. Multiple InferenceModels can be attached to an InferencePool. For more information on this resource, refer to our [InferenceModel documentation](/api-types/inferencemodel) or go directly to the [InferenceModel spec](/reference/spec/#inferencemodel).
+An InferenceObjective represents the objectives of a specific request. A single InferenceObjective is associated with a request, and multiple requests with different InferenceObjectives can be attached to an InferencePool. For more information on this resource, refer to our [InferenceObjective documentation](/api-types/inferenceobjective) or go directly to the [InferenceObjective spec](/reference/spec/#inferenceobjective).
diff --git a/site-src/concepts/priority-and-capacity.md b/site-src/concepts/priority-and-capacity.md
new file mode 100644
index 0000000..367aebf
--- /dev/null
+++ b/site-src/concepts/priority-and-capacity.md
@@ -0,0 +1,17 @@
+# Priority and Capacity
+
+The InferenceObjective creates the definition of `Priority` which describes how requests interact with each other, this naturally interacts with total pool capacity, and properly understanding and configuring these behaviors is important in allowing a pool to handle requests of different priority.
+
+## Priority (in flow control)
+
+It should be noted that priority is currently only used in [Capacity](#capacity), and that the description below is how Priority will be consumed in the `Flow Control` model.
+
+Priority is a simple stack rank; the higher the number, the higher the priority. Should no priority for a request be specified, the default value is zero. Requests of higher priority are _always_ selected first when requests are queued. Requests of equal priority currently operate on a FCFS basis. 
+
+## Capacity
+
+The current capacity model uses configurable [thresholds](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/35b14a10a9830d1a9e3850913539066ebc8fb317/pkg/epp/saturationdetector/saturationdetector.go#L49) to determine if the entire pool is saturated. The calculation is to simply iterate through each endpoint in the pool, and if all are above all thresholds, the pool is considered `saturated`. In the event of saturation, all requests with a negative priority will be rejected, and other requests will be scheduled and queued on the model servers. 
+
+## Future work
+
+The Flow Control system is nearing completion and will add more nuance to the Priority and Capacity model: proper priority enforcement, more articulate capacity tracking, queuing at the Inference Gateway level, etc. This documentation will be updated when the Flow Control has finished implementation.
\ No newline at end of file
diff --git a/site-src/concepts/roles-and-personas.md b/site-src/concepts/roles-and-personas.md
index 0746adb..f1d17a5 100644
--- a/site-src/concepts/roles-and-personas.md
+++ b/site-src/concepts/roles-and-personas.md
@@ -17,7 +17,7 @@ The Inference Platform Admin creates and manages the infrastructure necessary to
 
 An Inference Workload Owner persona owns and manages one or many Generative AI Workloads (LLM focused *currently*). This includes:
 
-- Defining criticality
+- Defining priority
 - Managing fine-tunes
   - LoRA Adapters
   - System Prompts
diff --git a/site-src/gieps/overview.md b/site-src/gieps/overview.md
index 438a0ff..df28fae 100644
--- a/site-src/gieps/overview.md
+++ b/site-src/gieps/overview.md
@@ -1,7 +1,7 @@
 # Gateway Inference Enhancement Proposal (GIEP)
 
 Gateway Inference Enhancement Proposals (GIEPs) serve a similar purpose to the
-[GIEP](https://gateway-api.sigs.k8s.io/GIEPs/overview/) process for the main
+[GEP](https://gateway-api.sigs.k8s.io/GEPs/overview/) process for the main
 Gateway API project:
 
 1. Ensure that changes to the API follow a known process and discussion in the
@@ -107,17 +107,17 @@ Before creating a GIEP, share your high level idea with the community. There are
 several places this may be done:
 
 - A [new GitHub
-  Discussion](https://github.com/kubernetes-sigs/gateway-api/discussions/new)
-- On our [Slack Channel](https://kubernetes.slack.com/archives/CR0H13KGA)
+  Discussion](https://github.com/kubernetes-sigs/gateway-api-inference-extension/discussions/new)
+- On our [Slack Channel](https://kubernetes.slack.com/archives/C08E3RZMT2P)
 - On one of our [community
-  meetings](https://gateway-api.sigs.k8s.io/contributing/?h=meetings#meetings)
+  meetings](https://gateway-api-inference-extension.sigs.k8s.io/contributing/?h=meetings#meetings)
 
 Please default to GitHub discussions: they work a lot like GitHub issues which
 makes them easy to search.
 
 ### 2. Create an Issue
 [Create a GIEP
-issue](https://github.com/kubernetes-sigs/gateway-api/issues/new?assignees=&labels=kind%2Ffeature&template=enhancement.md)
+issue](https://github.com/kubernetes-sigs/gateway-api-inference-extension/issues/new)
 in the repo describing your change. At this point, you should copy the outcome
 of any other conversations or documents into this document.
 
diff --git a/site-src/guides/adapter-rollout.md b/site-src/guides/adapter-rollout.md
index 0936d29..7d6611c 100644
--- a/site-src/guides/adapter-rollout.md
+++ b/site-src/guides/adapter-rollout.md
@@ -3,7 +3,6 @@
 The goal of this guide is to show you how to perform incremental roll out operations,
 which gradually deploy new versions of your inference infrastructure.
 You can update LoRA adapters and Inference Pool with minimal service disruption.
-This page also provides guidance on traffic splitting and rollbacks to help ensure reliable deployments for LoRA adapters rollout.
 
 LoRA adapter rollouts let you deploy new versions of LoRA adapters in phases,
 without altering the underlying base model or infrastructure.
@@ -49,36 +48,7 @@ data:
 
 The new adapter version is applied to the model servers live, without requiring a restart.
 
-
-### Direct traffic to the new adapter version
-
-Modify the InferenceModel to configure a canary rollout with traffic splitting. In this example, 10% of traffic for food-review model will be sent to the new ***food-review-2*** adapter.
-
-
-```bash
-kubectl edit inferencemodel food-review
-```
-
-Change the targetModels list in InferenceModel to match the following:
-
-
-```yaml
-apiVersion: inference.networking.x-k8s.io/v1alpha2
-kind: InferenceModel
-metadata:
-  name: food-review
-spec:
-  criticality: 1
-  poolRef:
-    name: vllm-llama3-8b-instruct
-  targetModels:
-  - name: food-review-1
-    weight: 90
-  - name: food-review-2
-    weight: 10
-```
-
-The above configuration means one in every ten requests should be sent to the new version. Try it out:
+Try it out:
 
 1. Get the gateway IP:
 ```bash
@@ -88,7 +58,7 @@ IP=$(kubectl get gateway/inference-gateway -o jsonpath='{.status.addresses[0].va
 2. Send a few requests as follows:
 ```bash
 curl -i ${IP}:${PORT}/v1/completions -H 'Content-Type: application/json' -d '{
-"model": "food-review",
+"model": "food-review-2",
 "prompt": "Write as if you were a critic: San Francisco",
 "max_tokens": 100,
 "temperature": 0
@@ -97,23 +67,6 @@ curl -i ${IP}:${PORT}/v1/completions -H 'Content-Type: application/json' -d '{
 
 ### Finish the rollout
 
-
-Modify the InferenceModel to direct 100% of the traffic to the latest version of the adapter.
-
-```yaml
-apiVersion: inference.networking.x-k8s.io/v1alpha2
-kind: InferenceModel
-metadata:
-  name: food-review
-spec:
-  criticality: 1
-  poolRef:
-    name: vllm-llama3-8b-instruct
-  targetModels:
-  - name: food-review-2
-    weight: 100
-```
-
 Unload the older versions from the servers by updating the LoRA syncer ConfigMap to list the older version under the `ensureNotExist` list:
 
 ```yaml
@@ -137,5 +90,5 @@ data:
           source: Kawon/llama3.1-food-finetune_v14_r8
 ```
 
-With this, all requests should be served by the new adapter version.
+With this, the new adapter version should be available for all incoming requests.
 
diff --git a/site-src/guides/epp-configuration/config-text.md b/site-src/guides/epp-configuration/config-text.md
index 6df19db..cdb3714 100644
--- a/site-src/guides/epp-configuration/config-text.md
+++ b/site-src/guides/epp-configuration/config-text.md
@@ -1,17 +1,14 @@
-# Configuring Plugins via text
+# Configuring Plugins via YAML
 
 The set of lifecycle hooks (plugins) that are used by the Inference Gateway (IGW) is determined by how
-it is configured. The IGW can be configured in several ways, either by code or via text.
+it is configured. The IGW is primarily configured via a configuration file.
 
-If configured by code either a set of predetermined environment variables must be used or one must
-fork the IGW and change code.
-
-A simpler way to congigure the IGW is to use a text based configuration. This text is in YAML format
-and can either be in a file or specified in-line as a parameter. The configuration defines the set of
+The YAML file can either be specified as a path to a file or in-line as a parameter. The configuration defines the set of
 plugins to be instantiated along with their parameters. Each plugin can also be given a name, enabling
-the same plugin type to be instantiated multiple times, if needed.
+the same plugin type to be instantiated multiple times, if needed (such as when configuring multiple scheduling profiles).
 
-Also defined is a set of SchedulingProfiles, which determine the set of plugins to be used when scheduling a request. If one is not defailed, a default one names `default` will be added and will reference all of the
+Also defined is a set of SchedulingProfiles, which determine the set of plugins to be used when scheduling a request.
+If no scheduling profile is specified, a default profile, named `default` will be added and will reference all of the
 instantiated plugins.
 
 The set of plugins instantiated can include a Profile Handler, which determines which SchedulingProfiles
@@ -22,12 +19,9 @@ In addition, the set of instantiated plugins can also include a picker, which ch
 the request is scheduled after filtering and scoring. If one is not referenced in a SchedulingProfile, an
 instance of `MaxScorePicker` will be added to the SchedulingProfile in question.
 
-It should be noted that while the configuration text looks like a Kubernetes Custom Resource, it is
-**NOT** a Kubernetes Custom Resource. Kubernetes infrastructure is used to load the configuration
-text and in the future will also help in versioning the text.
-
-It should also be noted that even when the configuration text is loaded from a file, it is loaded at
-the Endpoint-Picker's (EPP) startup and changes to the file at runtime are ignored.
+***NOTE***: While the configuration text looks like a Kubernetes CRD, it is
+**NOT** a Kubernetes CRD. Specifically, the config is not reconciled upon, and is only read on startup.
+This behavior is intentional, as augmenting the scheduling config without redeploying the EPP is not supported.
 
 The configuration text has the following form:
 ```yaml
diff --git a/site-src/guides/epp-configuration/flags.md b/site-src/guides/epp-configuration/flags.md
new file mode 100644
index 0000000..7154668
--- /dev/null
+++ b/site-src/guides/epp-configuration/flags.md
@@ -0,0 +1,33 @@
+# EPP Configuration Flags
+
+This page documents selected configuration flags for the Endpoint Picker (EPP) binary. Most flags are self-explanatory via their `--help` descriptions; only flags with nuanced or non-obvious behavior are detailed here.
+
+## --pool-namespace
+
+**Description:**
+Specifies the namespace of the InferencePool this Endpoint Picker is associated with.
+
+**Resolution order:**
+1. If `--pool-namespace` is set to a non-empty value, its value is used.
+2. If the flag is not set (i.e., left empty), the `NAMESPACE` environment variable is checked. If set, its value is used.
+3. If neither is set, the namespace defaults to `default`.
+
+This allows the EPP to automatically use the namespace it is running in (when the `NAMESPACE` env var is set via Kubernetes Downward API), without requiring explicit configuration. If you want to force the use of the default namespace, explicitly set `--pool-namespace=default`. If you want to use the environment variable or fallback, leave the flag unset or set it to an empty string.
+
+**Example manifest snippet to set the env var from pod metadata:**
+
+```yaml
+env:
+  - name: NAMESPACE
+    valueFrom:
+      fieldRef:
+        fieldPath: metadata.namespace
+```
+
+---
+
+For a full list of flags, run:
+
+```
+EPP_BINARY --help
+```
diff --git a/site-src/guides/implementers.md b/site-src/guides/implementers.md
index 6fce016..d42fa8d 100644
--- a/site-src/guides/implementers.md
+++ b/site-src/guides/implementers.md
@@ -157,8 +157,8 @@ An example of a similar approach is Kuadrant’s [WASM Shim](https://github.com/
 Here are some tips for testing your controller end-to-end:
 
 - **Focus on Key Scenarios**: Add common scenarios like creating, updating, and deleting InferencePool resources, as well as different routing rules that target InferencePool backends.
-- **Verify Routing Behaviors**: Design more complex routing scenarios and verify that requests are correctly routed to the appropriate model server pods within the InferencePool based on the InferenceModel configuration.
-- **Test Error Handling**: Verify that the controller correctly handles scenarios like unsupported model names or resource constraints (if criticality-based shedding is implemented). Test with state transitions (such as constant requests while Pods behind EPP are being replaced and Pods behind InferencePool are being replaced) to ensure that the system is resilient to failures and can automatically recover by redirecting traffic to healthy Pods.
+- **Verify Routing Behaviors**: Design more complex routing scenarios and verify that requests are correctly routed to the appropriate model server pods within the InferencePool.
+- **Test Error Handling**: Verify that the controller correctly handles scenarios like unsupported model names or resource constraints (if priority-based shedding is implemented). Test with state transitions (such as constant requests while Pods behind EPP are being replaced and Pods behind InferencePool are being replaced) to ensure that the system is resilient to failures and can automatically recover by redirecting traffic to healthy Pods.
 - **Using Reference EPP Implementation + Echoserver**: You can use the [reference EPP implementation](https://github.com/kubernetes-sigs/gateway-api-inference-extension/tree/main/pkg/epp) for testing your controller end-to-end. Instead of a full-fledged model server, a simple mock server (like the [echoserver](https://github.com/kubernetes-sigs/ingress-controller-conformance/tree/master/images/echoserver)) can be very useful for verifying routing to ensure the correct pod received the request. 
 - **Performance Test**: Run end-to-end [benchmarks](https://gateway-api-inference-extension.sigs.k8s.io/performance/benchmark/) to make sure that your inference gateway can achieve the latency target that is desired.
 
diff --git a/site-src/guides/index.md b/site-src/guides/index.md
index da80632..e7dd861 100644
--- a/site-src/guides/index.md
+++ b/site-src/guides/index.md
@@ -101,7 +101,7 @@ Tooling:
 === "Istio"
 
       ```bash
-      export GATEWAY_PROVIDER=none
+      export GATEWAY_PROVIDER=istio
       helm install vllm-llama3-8b-instruct \
       --set inferencePool.modelServers.matchLabels.app=vllm-llama3-8b-instruct \
       --set provider.name=$GATEWAY_PROVIDER \
@@ -178,7 +178,7 @@ Tooling:
       2. Install Istio
 
          ```
-         TAG=$(curl https://storage.googleapis.com/istio-build/dev/1.27-dev)
+         TAG=$(curl https://storage.googleapis.com/istio-build/dev/1.28-dev)
          # on Linux
          wget https://storage.googleapis.com/istio-build/dev/$TAG/istioctl-$TAG-linux-amd64.tar.gz
          tar -xvf istioctl-$TAG-linux-amd64.tar.gz
@@ -319,6 +319,10 @@ Tooling:
          kubectl get httproute llm-route -o yaml
          ```
 
+### Deploy the Body Based Router Extension (Optional)
+
+    This guide shows how to get started with serving only 1 base model type per L7 URL path. If in addition, you wish to exercise model-aware routing such that more than 1 base model is served at the same L7 url path, that requires use of the (optional) Body Based Routing (BBR) extension which is described in a following section of the guide, namely the [`Serving Multiple GenAI Models`](serve-multiple-genai-models.md) section.
+
 ### Deploy InferenceObjective (Optional)
 
    Deploy the sample InferenceObjective which allows you to specify priority of requests.
@@ -349,7 +353,7 @@ Tooling:
    The following instructions assume you would like to cleanup ALL resources that were created in this quickstart guide.
    Please be careful not to delete resources you'd like to keep.
 
-   1. Uninstall the InferencePool, InferenceModel, and model server resources
+   1. Uninstall the InferencePool, InferenceObjective and model server resources
 
       ```bash
       helm uninstall vllm-llama3-8b-instruct
@@ -360,35 +364,32 @@ Tooling:
       kubectl delete secret hf-token --ignore-not-found
       ```
 
-   1. Uninstall the Gateway API resources
-
-      ```bash
-      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/gke/gateway.yaml --ignore-not-found
-      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/gke/healthcheck.yaml --ignore-not-found
-      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/gke/gcp-backend-policy.yaml --ignore-not-found
-      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/gke/httproute.yaml --ignore-not-found
-      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/istio/gateway.yaml --ignore-not-found
-      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/istio/destination-rule.yaml --ignore-not-found
-      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/istio/httproute.yaml --ignore-not-found
-      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/kgateway/gateway.yaml --ignore-not-found
-      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/kgateway/httproute.yaml --ignore-not-found
-      ```
-
    1. Uninstall the Gateway API Inference Extension CRDs
 
       ```bash
       kubectl delete -k https://github.com/kubernetes-sigs/gateway-api-inference-extension/config/crd --ignore-not-found
       ```
-
+      
    1. Choose one of the following options to cleanup the Inference Gateway.
 
 === "GKE"
 
-      No further clean up is needed.
+      ```bash
+      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/gke/gateway.yaml --ignore-not-found
+      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/gke/healthcheck.yaml --ignore-not-found
+      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/gke/gcp-backend-policy.yaml --ignore-not-found
+      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/gke/httproute.yaml --ignore-not-found
+      ```
 
 === "Istio"
 
-      The following instructions assume you would like to clean up ALL Istio resources that were created in this quickstart guide.
+      ```bash
+      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/istio/gateway.yaml --ignore-not-found
+      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/istio/destination-rule.yaml --ignore-not-found
+      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/istio/httproute.yaml --ignore-not-found
+      ```
+
+      The following steps assume you would like to clean up ALL Istio resources that were created in this quickstart guide.
 
       1. Uninstall All Istio resources
 
@@ -402,10 +403,14 @@ Tooling:
          kubectl delete ns istio-system
          ```
 
-
 === "Kgateway"
 
-      The following instructions assume you would like to cleanup ALL Kgateway resources that were created in this quickstart guide.
+      ```bash
+      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/kgateway/gateway.yaml --ignore-not-found
+      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/kgateway/httproute.yaml --ignore-not-found
+      ```
+
+      The following steps assume you would like to cleanup ALL Kgateway resources that were created in this quickstart guide.
 
       1. Uninstall Kgateway
 
@@ -427,7 +432,12 @@ Tooling:
 
 === "Agentgateway"
 
-      The following instructions assume you would like to cleanup ALL Kgateway resources that were created in this quickstart guide.
+      ```bash
+      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/kgateway/gateway.yaml --ignore-not-found
+      kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/gateway/kgateway/httproute.yaml --ignore-not-found
+      ```
+
+      The following steps assume you would like to cleanup ALL Kgateway resources that were created in this quickstart guide.
 
       1. Uninstall Kgateway
 
diff --git a/site-src/guides/inferencepool-rollout.md b/site-src/guides/inferencepool-rollout.md
index f3d9294..b274a72 100644
--- a/site-src/guides/inferencepool-rollout.md
+++ b/site-src/guides/inferencepool-rollout.md
@@ -34,7 +34,6 @@ teams can ensure stability and performance, quickly identifying and reverting an
 
 1. **Deploy new infrastructure**: Create a new InferencePool configured with the new node(compute/accelerator) / model server / base model that you chose.
 1. **Configure traffic splitting**: Use an HTTPRoute to split traffic between the existing InferencePool and the new InferencePool. The `backendRefs.weight` field controls the traffic percentage allocated to each pool.
-1. **Maintain InferenceModel integrity**: Retain the existing InferenceModel configuration to ensure uniform model behavior across both node configurations or base model versions or model server versions.
 1. **Preserve rollback capability**: Retain the original nodes and InferencePool during the roll out to facilitate a rollback if necessary.
 
 ## Example
@@ -45,276 +44,10 @@ Follow the steps in the [main guide](index.md)
 
 ### Deploy new infrastructure
 You start with an existing InferencePool named vllm-llama3-8b-instruct.
-To replace the original InferencePool, you create a new InferencePool named vllm-llama3-8b-instruct-new along with
-InferenceModels and Endpoint Picker Extension configured with the updated node specifications of `nvidia-h100-80gb` accelerator type,
+To replace the original InferencePool, you create a new InferencePool, configured to select the pods with the `nvidia-h100-80gb` accelerator type.
 
-```yaml
-kubectl apply -f - <<EOF
----
-apiVersion: inference.networking.x-k8s.io/v1alpha2
-kind: InferenceModel
-metadata:
-  name: food-review-new
-spec:
-  criticality: 1
-  poolRef:
-    name: vllm-llama3-8b-instruct-new
-  targetModels:
-    - name: food-review-1
-      weight: 100
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: vllm-llama3-8b-instruct-new
-spec:
-  replicas: 3
-  selector:
-    matchLabels:
-      app: vllm-llama3-8b-instruct-new
-  template:
-    metadata:
-      labels:
-        app: vllm-llama3-8b-instruct-new
-    spec:
-      containers:
-        - name: vllm
-          image: "vllm/vllm-openai:v0.8.5"
-          imagePullPolicy: Always
-          command: ["python3", "-m", "vllm.entrypoints.openai.api_server"]
-          args:
-            - "--model"
-            - "meta-llama/Llama-3.1-8B-Instruct"
-            - "--tensor-parallel-size"
-            - "1"
-            - "--port"
-            - "8000"
-            - "--max-num-seq"
-            - "1024"
-            - "--compilation-config"
-            - "3"
-            - "--enable-lora"
-            - "--max-loras"
-            - "2"
-            - "--max-lora-rank"
-            - "8"
-            - "--max-cpu-loras"
-            - "12"
-          env:
-            - name: VLLM_USE_V1
-              value: "1"
-            - name: PORT
-              value: "8000"
-            - name: HUGGING_FACE_HUB_TOKEN
-              valueFrom:
-                secretKeyRef:
-                  name: hf-token
-                  key: token
-            - name: VLLM_ALLOW_RUNTIME_LORA_UPDATING
-              value: "true"
-          ports:
-            - containerPort: 8000
-              name: http
-              protocol: TCP
-          lifecycle:
-            preStop:
-              sleep:
-                seconds: 30
-          livenessProbe:
-            httpGet:
-              path: /health
-              port: http
-              scheme: HTTP
-            periodSeconds: 1
-            successThreshold: 1
-            failureThreshold: 5
-            timeoutSeconds: 1
-          readinessProbe:
-            httpGet:
-              path: /health
-              port: http
-              scheme: HTTP
-            periodSeconds: 1
-            successThreshold: 1
-            failureThreshold: 1
-            timeoutSeconds: 1
-          startupProbe:
-            failureThreshold: 600
-            initialDelaySeconds: 2
-            periodSeconds: 1
-            httpGet:
-              path: /health
-              port: http
-              scheme: HTTP
-          resources:
-            limits:
-              nvidia.com/gpu: 1
-            requests:
-              nvidia.com/gpu: 1
-          volumeMounts:
-            - mountPath: /data
-              name: data
-            - mountPath: /dev/shm
-              name: shm
-            - name: adapters
-              mountPath: "/adapters"
-      initContainers:
-        - name: lora-adapter-syncer
-          tty: true
-          stdin: true
-          image: us-central1-docker.pkg.dev/k8s-staging-images/gateway-api-inference-extension/lora-syncer:main
-          restartPolicy: Always
-          imagePullPolicy: Always
-          env:
-            - name: DYNAMIC_LORA_ROLLOUT_CONFIG
-              value: "/config/configmap.yaml"
-          volumeMounts: # DO NOT USE subPath, dynamic configmap updates don't work on subPaths
-            - name: config-volume
-              mountPath:  /config
-      restartPolicy: Always
-      enableServiceLinks: false
-      terminationGracePeriodSeconds: 130
-      nodeSelector:
-        cloud.google.com/gke-accelerator: "nvidia-h100-80gb"
-      volumes:
-        - name: data
-          emptyDir: {}
-        - name: shm
-          emptyDir:
-            medium: Memory
-        - name: adapters
-          emptyDir: {}
-        - name: config-volume
-          configMap:
-            name: vllm-llama3-8b-instruct-adapters-new
----
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: vllm-llama3-8b-instruct-adapters-new
-data:
-  configmap.yaml: |
-    vLLMLoRAConfig:
-      name: vllm-llama3-8b-instruct-adapters-new
-      port: 8000
-      defaultBaseModel: meta-llama/Llama-3.1-8B-Instruct
-      ensureExist:
-        models:
-        - id: food-review-1
-          source: Kawon/llama3.1-food-finetune_v14_r8
----
-apiVersion: inference.networking.k8s.io/v1
-kind: InferencePool
-metadata:
-  name: vllm-llama3-8b-instruct-new
-spec:
-  targetPorts:
-    - number: 8000
-  selector:
-    app: vllm-llama3-8b-instruct-new
-  extensionRef:
-    name: vllm-llama3-8b-instruct-epp-new
----
-apiVersion: v1
-kind: Service
-metadata:
-  name: vllm-llama3-8b-instruct-epp-new
-  namespace: default
-spec:
-  selector:
-    app: vllm-llama3-8b-instruct-epp-new
-  ports:
-    - protocol: TCP
-      port: 9002
-      targetPort: 9002
-      appProtocol: http2
-  type: ClusterIP
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: vllm-llama3-8b-instruct-epp-new
-  namespace: default
-  labels:
-    app: vllm-llama3-8b-instruct-epp-new
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: vllm-llama3-8b-instruct-epp-new
-  template:
-    metadata:
-      labels:
-        app: vllm-llama3-8b-instruct-epp-new
-    spec:
-      terminationGracePeriodSeconds: 130
-      containers:
-      - name: epp
-        image: us-central1-docker.pkg.dev/k8s-staging-images/gateway-api-inference-extension/epp:main
-        imagePullPolicy: Always
-        args:
-        - --pool-name
-        - "vllm-llama3-8b-instruct-new"
-        - --pool-namespace
-        - "default"
-        - --v
-        - "4"
-        - --zap-encoder
-        - "json"
-        - --grpc-port
-        - "9002"
-        - --grpc-health-port
-        - "9003"
-        - --config-file
-        - "/config/default-plugins.yaml"
-        ports:
-        - containerPort: 9002
-          name: grpc
-        - containerPort: 9003
-          name: grpc-health
-        - containerPort: 9090
-          name: metrics
-        livenessProbe:
-          grpc:
-            port: 9003
-            service: inference-extension
-          initialDelaySeconds: 5
-          periodSeconds: 10
-        readinessProbe:
-          grpc:
-            port: 9003
-            service: inference-extension
-          initialDelaySeconds: 5
-          periodSeconds: 10
-        volumeMounts:
-        - name: plugins-config-volume
-          mountPath: /config
-      volumes:
-      - name: plugins-config-volume
-        configMap:
-          name: plugins-config
----
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: plugins-config
-  namespace: default
-data:
-  default-plugins.yaml: |
-    apiVersion: inference.networking.x-k8s.io/v1alpha1
-    kind: EndpointPickerConfig
-    plugins:
-    - type: queue-scorer
-    - type: kv-cache-utilization-scorer
-    - type: prefix-cache-scorer
-    schedulingProfiles:
-    - name: default
-      plugins:
-      - pluginRef: queue-scorer
-      - pluginRef: kv-cache-utilization-scorer
-      - pluginRef: prefix-cache-scorer
-EOF
-```
+Assuming the new model servers already exist, simply:
+**Create a new helm-managed InferencePool of a different name, with a new selector specified**
 
 ### Direct traffic to the new inference pool
 By configuring an **HTTPRoute**, as shown below, you can incrementally split traffic between the original `vllm-llama3-8b-instruct` and new `vllm-llama3-8b-instruct-new`.
@@ -396,14 +129,9 @@ spec:
             value: /
 ```
 
-### Delete old version of InferencePool, InferenceModel and Endpoint Picker Extension
+### Delete old version of InferencePool and Endpoint Picker Extension
 ```shell
-kubectl delete InferenceModel food-review --ignore-not-found
-kubectl delete Deployment vllm-llama3-8b-instruct --ignore-not-found
-kubectl delete ConfigMap vllm-llama3-8b-instruct-adapters --ignore-not-found
-kubectl delete InferencePool vllm-llama3-8b-instruct --ignore-not-found
-kubectl delete Deployment vllm-llama3-8b-instruct-epp --ignore-not-found
-kubectl delete Service vllm-llama3-8b-instruct-epp --ignore-not-found
+helm uninstall <old-inference-pool-name>
 ```
 
 With this, all requests should be served by the new Inference Pool.
diff --git a/site-src/guides/serve-multiple-genai-models.md b/site-src/guides/serve-multiple-genai-models.md
index 92bfeda..0beee86 100644
--- a/site-src/guides/serve-multiple-genai-models.md
+++ b/site-src/guides/serve-multiple-genai-models.md
@@ -1,10 +1,8 @@
 # Serve multiple generative AI models
 
 A company wants to deploy multiple large language models (LLMs) to a cluster to serve different workloads.
-For example, they might want to deploy a Gemma3 model for a chatbot interface and a DeepSeek model for a recommendation application.
-The company needs to ensure optimal serving performance for these LLMs.
-By using an Inference Gateway, you can deploy these LLMs on your cluster with your chosen accelerator configuration in an `InferencePool`.
-You can then route requests based on the model name (such as `chatbot` and `recommender`) and the `Criticality` property.
+For example, they might want to deploy a Gemma3 model for a chatbot interface and a DeepSeek model for a recommendation application (or as in the example in this guide, a combination of a Llama3 model and a smaller Phi4 model).. You may choose to locate these 2 models at 2 different L7 url paths and follow the steps described in the [`Getting started`](index.md) guide for each such model as already described. However you may also need to serve multiple models located at the same L7 url path and rely on parsing information such as
+the Model name in the LLM prompt requests as defined in the OpenAI API format which is commonly used by most models. For such Model-aware routing, you can use the Body-Based Routing feature as described in this guide. 
 
 ## How
 
@@ -12,75 +10,157 @@ The following diagram illustrates how an Inference Gateway routes requests to di
 The model name is extracted by [Body-Based routing](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/main/pkg/bbr/README.md) (BBR)
  from the request body to the header. The header is then matched to dispatch
  requests to different `InferencePool` (and their EPPs) instances.
-![Serving multiple generative AI models](../images/serve-mul-gen-AI-models.png)
 
-### Deploy Body-Based Routing
+### Example Model-Aware Routing using Body-Based Routing (BBR)
 
-To enable body-based routing, you need to deploy the Body-Based Routing ExtProc server using Helm. Depending on your Gateway provider, you can use one of the following commands:
+This guide assumes you have already setup the cluster for basic model serving as described in the [`Getting started`](index.md) guide and this guide describes the additional steps needed from that point onwards in order to deploy and exercise an example of routing across multiple models.
+
+
+### Deploy Body-Based Routing Extension
+
+To enable body-based routing, you need to deploy the Body-Based Routing ExtProc server using Helm. This is a separate ExtProc server from the EndPoint Picker and when installed, is automatically inserted at the start of the gateway's ExtProc chain ahead of other EtxProc servers such as EPP.  
+
+First install this server. Depending on your Gateway provider, you can use one of the following commands:
 
 === "GKE"
 
     ```bash
     helm install body-based-router \
-      --set provider.name=gke \
-      --version v0.5.1 \
-      oci://registry.k8s.io/gateway-api-inference-extension/charts/body-based-routing
+    --set provider.name=gke \
+    --version v1.0.0 \
+    oci://registry.k8s.io/gateway-api-inference-extension/charts/body-based-routing
     ```
 
 === "Istio"
 
     ```bash
     helm install body-based-router \
-      --set provider.name=istio \
-      --version v0.5.1 \
-      oci://registry.k8s.io/gateway-api-inference-extension/charts/body-based-routing
+    --set provider.name=istio \
+    --version v1.0.0 \
+    oci://registry.k8s.io/gateway-api-inference-extension/charts/body-based-routing
     ```
 
 === "Other"
 
     ```bash
     helm install body-based-router \
-      --version v0.5.1 \
-      oci://registry.k8s.io/gateway-api-inference-extension/charts/body-based-routing
+    --version v1.0.0 \
+    oci://registry.k8s.io/gateway-api-inference-extension/charts/body-based-routing
+    ```
+
+Once this is installed, verify that the BBR pod is running without errors using the command `kubectl get pods`.
+
+### Serving a Second Base Model
+Next deploy the second base model that will be served from the same L7 path (which is `/`) as the `meta-llama/Llama-3.1-8B-Instruct` model already being served after following the steps from the [`Getting started`](index.md) guide. In this example the 2nd model is `microsoft/Phi-4-mini-instruct` a relatively small model ( about 3B parameters) from HuggingFace. Note that for this exercise, there need to be atleast 2 GPUs available on the system one each for the two models being served. Serve the second model via the following command. 
+
+```bash
+kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api-inference-extension/refs/heads/main/config/manifests/bbr-example/vllm-phi4-mini.yaml
+```
+Once this is installed, and after allowing for model download and startup time which can last several minutes, verify that the pod with this 2nd LLM phi4-mini, is running without errors using the command `kubectl get pods`.
+
+### Deploy the 2nd InferencePool and Endpoint Picker Extension
+We also want to use an InferencePool and EndPoint Picker for this second model in addition to the Body Based Router in order to be able to schedule across multiple endpoints or LORA adapters within each base model. Hence we create these for our second model as follows.
+
+=== "GKE"
+
+    ```bash
+    export GATEWAY_PROVIDER=gke
+    helm install vllm-phi4-mini-instruct \
+    --set inferencePool.modelServers.matchLabels.app=phi4-mini \
+    --set provider.name=$GATEWAY_PROVIDER \
+    --version v1.0.0 \
+    oci://registry.k8s.io/gateway-api-inference-extension/charts/inferencepool
+    ```
+
+=== "Istio"
+
+    ```bash
+    export GATEWAY_PROVIDER=istio
+    helm install vllm-phi4-mini-instruct \
+    --set inferencePool.modelServers.matchLabels.app=phi4-mini \
+    --set provider.name=$GATEWAY_PROVIDER \
+    --version v1.0.0 \
+    oci://registry.k8s.io/gateway-api-inference-extension/charts/inferencepool
     ```
 
+After executing this, very that you see two InferencePools and two EPP pods, one per base model type, running without errors, using the CLIs `kubectl get inferencepools` and `kubectl get pods`.
+
 ### Configure HTTPRoute
 
-This example illustrates a conceptual example regarding how to use the `HTTPRoute` object to route based on model name like “chatbot” or “recommender” to `InferencePool`.
+Before configuring the httproutes for the models, we need to delete the prior httproute created for the vllm-llama3-8b-instruct model because we will alter the routing to now also match on the model name as determined by the `X-Gateway-Model-Name` http header that will get inserted by the BBR extension after parsing the Model name from the body of the LLM request message. 
+
+```bash
+kubectl delete httproute llm-route
+```
+
+Now configure new HTTPRoutes, one per each model we want to serve via BBR using the following command which configures both routes. Also examine this manifest file, to see how the `X-Gateway-Model-Name` is used for a header match in the Gateway's rules to route requests to the correct Backend based on model name. For convenience the manifest is also listed below in order to view this routing configuration.
+
+```bash
+kubectl apply -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/main/config/manifests/bbr-example/httproute_bbr.yaml
+```
 
 ```yaml
+---
 apiVersion: gateway.networking.k8s.io/v1
 kind: HTTPRoute
 metadata:
-  name: routes-to-llms
+  name: llm-llama-route
 spec:
   parentRefs:
-  - name: inference-gateway
+  - group: gateway.networking.k8s.io
+    kind: Gateway
+    name: inference-gateway
   rules:
-  - matches:
-    - headers:
-      - type: Exact
-        name: X-Gateway-Model-Name # (1)!
-        value: chatbot
-      path:
+  - backendRefs:
+    - group: inference.networking.k8s.io
+      kind: InferencePool
+      name: vllm-llama3-8b-instruct
+    matches:
+    - path:
         type: PathPrefix
         value: /
-    backendRefs:
-    - name: gemma3
-      group: inference.networking.x-k8s.io
+      headers:
+        - type: Exact
+          name: X-Gateway-Model-Name # (1)!
+          value: 'meta-llama/Llama-3.1-8B-Instruct'
+    timeouts:
+      request: 300s
+---
+apiVersion: gateway.networking.k8s.io/v1
+kind: HTTPRoute
+metadata:
+  name: llm-phi4-route
+spec:
+  parentRefs:
+  - group: gateway.networking.k8s.io
+    kind: Gateway
+    name: inference-gateway
+  rules:
+  - backendRefs:
+    - group: inference.networking.k8s.io
       kind: InferencePool
-  - matches:
-    - headers:
-      - type: Exact
-        name: X-Gateway-Model-Name # (2)!
-        value: recommender
-      path:
+      name: vllm-phi4-mini-instruct
+    matches:
+    - path:
         type: PathPrefix
         value: /
-    backendRefs:
-    - name: deepseek-r1
-      group: inference.networking.x-k8s.io
-      kind: InferencePool
+      headers:
+        - type: Exact
+          name: X-Gateway-Model-Name # (2)!
+          value: 'microsoft/Phi-4-mini-instruct'
+    timeouts:
+      request: 300s
+---
+```
+
+Confirm that the HTTPRoute status conditions include `Accepted=True` and `ResolvedRefs=True` for both routes:
+
+```bash
+kubectl get httproute llm-llama-route -o yaml
+```
+
+```bash
+kubectl get httproute llm-phi4-route -o yaml
 ```
 
 1. [BBR](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/main/pkg/bbr/README.md) is being used to copy the model name from the request body to the header with key `X-Gateway-Model-Name`. The header can then be used in the `HTTPRoute` to route requests to different `InferencePool` instances.
@@ -89,58 +169,59 @@ spec:
 ## Try it out
 
 1. Get the gateway IP:
-```bash
-IP=$(kubectl get gateway/inference-gateway -o jsonpath='{.status.addresses[0].value}'); PORT=80
-```
+    ```bash
+    IP=$(kubectl get gateway/inference-gateway -o jsonpath='{.status.addresses[0].value}'); PORT=80
+    ```
 
 === "Chat Completions API"
 
-      1. Send a few requests to model `chatbot` as follows:
-      ```bash
-      curl -X POST -i ${IP}:${PORT}/v1/chat/completions \
-        -H "Content-Type: application/json" \
-        -d '{
-          "model": "chatbot",
-          "messages": [{"role": "user", "content": "What is the color of the sky?"}],
-          "max_tokens": 100,
-          "temperature": 0
-        }'
-      ```
-
-      2. Send a few requests to model `recommender` as follows:
-      ```bash
-      curl -X POST -i ${IP}:${PORT}/v1/chat/completions \
-        -H "Content-Type: application/json" \
-        -d '{
-          "model": "recommender",
-          "messages": [{"role": "user", "content": "Give me restaurant recommendations in Paris"}],
-          "max_tokens": 100,
-          "temperature": 0
-        }'
-      ```
+    1. Send a few requests to Llama model as follows:
+        ```bash
+        curl -X POST -i ${IP}:${PORT}/v1/chat/completions \
+          -H "Content-Type: application/json" \
+          -d '{
+                "model": "meta-llama/Llama-3.1-8B-Instruct",
+                "prompt": "Linux is said to be an open source kernel because ",
+                "max_tokens": 100,
+                "temperature": 0
+          }'
+        ```
+
+    2. Send a few requests to the Phi4 as follows:
+        ```bash
+        curl -X POST -i ${IP}:${PORT}/v1/chat/completions \
+          -H "Content-Type: application/json" \
+          -d '{
+                "model": "microsoft/Phi-4-mini-instruct",
+                "prompt": "2+2 is ",
+                "max_tokens": 20,
+                "temperature": 0
+          }'
+        ```
 
 === "Completions API"
 
-      1. Send a few requests to model `chatbot` as follows:
-      ```bash
-      curl -X POST -i ${IP}:${PORT}/v1/completions \
-        -H 'Content-Type: application/json' \
-        -d '{
-          "model": "chatbot",
-          "prompt": "What is the color of the sky",
-          "max_tokens": 100,
-          "temperature": 0
-        }'
-      ```
-
-      2. Send a few requests to model `recommender` as follows:
-      ```bash
-      curl -X POST -i ${IP}:${PORT}/v1/completions \
-        -H 'Content-Type: application/json' \
-        -d '{
-          "model": "recommender",
-          "prompt": "Give me restaurant recommendations in Paris",
-          "max_tokens": 100,
-          "temperature": 0
-        }'
-      ```
+    1. Send a few requests to Llama model as follows:
+        ```bash
+        curl -X POST -i ${IP}:${PORT}/v1/completions \
+          -H "Content-Type: application/json" \
+          -d '{
+                "model": "meta-llama/Llama-3.1-8B-Instruct",
+                "prompt": "Linux is said to be an open source kernel because ",
+                "max_tokens": 100,
+                "temperature": 0
+          }'
+        ```
+
+    2. Send a few requests to the Phi4 as follows:
+        ```bash
+        curl -X POST -i ${IP}:${PORT}/v1/completions \
+          -H "Content-Type: application/json" \
+          -d '{
+                "model": "microsoft/Phi-4-mini-instruct",
+                "prompt": "2+2 is ",
+                "max_tokens": 20,
+                "temperature": 0
+          }'
+        ```
+
diff --git a/site-src/guides/serve-multiple-lora-adapters.md b/site-src/guides/serve-multiple-lora-adapters.md
deleted file mode 100644
index 59cfe72..0000000
--- a/site-src/guides/serve-multiple-lora-adapters.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# Serve LoRA adapters on a shared pool
-A company wants to serve LLMs for document analysis and focuses on audiences in multiple languages, such as English and Spanish.
-They have a fine-tuned LoRA adapter for each language, but need to efficiently use their GPU and TPU capacity.
-You can use an Inference Gateway to deploy dynamic LoRA fine-tuned adapters for each language (for example, `english-bot` and `spanish-bot`) on a common base model and accelerator.
-This lets you reduce the number of required accelerators by densely packing multiple models in a shared pool.
-
-## How
-The following diagram illustrates how Inference Gateway serves multiple LoRA adapters on a shared pool.
-![Serving LoRA adapters on a shared pool](../images/serve-LoRA-adapters.png)
-This example illustrates how you can densely serve multiple LoRA adapters with distinct workload performance objectives on a common InferencePool.
-```yaml
-apiVersion: gateway.networking.x-k8s.io/v1alpha1
-kind: InferencePool
-metadata:
-  name: gemma3
-spec:
-  selector:
-    pool: gemma3
-```
-Let us say we have a couple of LoRA adapters named “english-bot” and “spanish-bot” for the Gemma3 base model.
-You can create an `InferenceModel` resource and associate these LoRA adapters to the relevant InferencePool resource.  
-In this case, we associate these LoRA adapters to the gemma3 InferencePool resource created above.
-
-```yaml
-apiVersion: inference.networking.x-k8s.io/v1alpha2
-kind: InferenceModel
-metadata:
-  name: english-bot
-spec:
-  criticality: 1
-  poolRef:
-    name: gemma3
-        
----
-apiVersion: inference.networking.x-k8s.io/v1alpha2
-kind: InferenceModel
-metadata:
-  name: spanish-bot
-spec:
-  criticality: 2
-  poolRef:
-    name: gemma3
-    
-```
-Now, you can route your requests from the gateway using the `HTTPRoute` object.
-```yaml
-apiVersion: gateway.networking.k8s.io/v1
-kind: Gateway
-metadata:
-  name: inference-gateway
-spec:
-  listeners:
-  - protocol: HTTP
-    port: 80
-    name: http
-
----
-kind: HTTPRoute
-apiVersion: gateway.networking.k8s.io/v1
-metadata:
-  name: routes-to-llms
-spec:
-  parentRefs:
-    - name: inference-gateway
-  rules:
-  - matches:
-      path:
-        type: PathPrefix
-        value: /
-    backendRefs:
-    - name: gemma3
-      kind: InferencePool
-```
-
-## Try it out
-
-1. Get the gateway IP:
-```bash
-IP=$(kubectl get gateway/inference-gateway -o jsonpath='{.status.addresses[0].value}'); PORT=80
-```
-2. Send a few requests to model "english-bot" as follows:
-```bash
-curl -i ${IP}:${PORT}/v1/completions -H 'Content-Type: application/json' -d '{
-"model": "english-bot",
-"prompt": "What is the color of the sky",
-"max_tokens": 100,
-"temperature": 0
-}'
-```
-3. Send a few requests to model "spanish-bot" as follows:
-```bash
-curl -i ${IP}:${PORT}/v1/completions -H 'Content-Type: application/json' -d '{
-"model": "spanish-bot",
-"prompt": "¿De qué color es...?",
-"max_tokens": 100,
-"temperature": 0
-}'
-```
\ No newline at end of file
diff --git a/site-src/guides/troubleshooting.md b/site-src/guides/troubleshooting.md
index c741d59..1f08619 100644
--- a/site-src/guides/troubleshooting.md
+++ b/site-src/guides/troubleshooting.md
@@ -16,7 +16,7 @@ This is a default gateway error, meaning the request never reached a backend ser
 
 ## 429 Too Many Requests
 ### `system saturated, sheddable request dropped`
-This error indicates that the entire inference pool has exceeded its saturation thresholds. This means the system is under heavy load and is shedding non-critical requests. To address this, check the following:
+This error indicates that the entire inference pool has exceeded its saturation thresholds. This means the system is under heavy load and is shedding low priority requests. To address this, check the following:
 
 * gateway-api-inference-extension version:
     * **v0.5.1 and earlier**: Verify you're using an `InferenceModel` and that its `criticality` is set to `Critical`. This ensures requests are queued on the model servers instead of being dropped.
diff --git a/site-src/images/inference-overview.svg b/site-src/images/inference-overview.svg
index a82c09e..8524ebb 100644
--- a/site-src/images/inference-overview.svg
+++ b/site-src/images/inference-overview.svg
@@ -1 +1 @@
-<svg version="1.1" viewBox="0.0 0.0 757.3700787401575 171.03412073490813" fill="none" stroke="none" stroke-linecap="square" stroke-miterlimit="10" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><clipPath id="p.0"><path d="m0 0l757.37006 0l0 171.03412l-757.37006 0l0 -171.03412z" clip-rule="nonzero"/></clipPath><g clip-path="url(#p.0)"><path fill="#000000" fill-opacity="0.0" d="m0 0l757.37006 0l0 171.03412l-757.37006 0z" fill-rule="evenodd"/><path fill="#ead1dc" d="m492.2756 27.767786l0 0c0 -2.450531 1.9865417 -4.4370766 4.4370728 -4.4370766l244.4802 0c1.1767578 0 2.305359 0.4674759 3.1374512 1.2995892c0.8320923 0.83211327 1.2996216 1.960701 1.2996216 3.1374874l0 44.38569c0 2.450531 -1.9865723 4.4370804 -4.4370728 4.4370804l-244.4802 0c-2.450531 0 -4.4370728 -1.9865494 -4.4370728 -4.4370804z" fill-rule="evenodd"/><path stroke="#d5a6bd" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m492.2756 27.767786l0 0c0 -2.450531 1.9865417 -4.4370766 4.4370728 -4.4370766l244.4802 0c1.1767578 0 2.305359 0.4674759 3.1374512 1.2995892c0.8320923 0.83211327 1.2996216 1.960701 1.2996216 3.1374874l0 44.38569c0 2.450531 -1.9865723 4.4370804 -4.4370728 4.4370804l-244.4802 0c-2.450531 0 -4.4370728 -1.9865494 -4.4370728 -4.4370804z" fill-rule="evenodd"/><path fill="#d9ead3" d="m253.18898 18.972511l0 0c0 -2.450531 1.9865417 -4.4370785 4.437088 -4.4370785l172.79514 0c1.1767578 0 2.305359 0.46747684 3.1374817 1.2995901c0.8320923 0.8321142 1.2995911 1.960702 1.2995911 3.1374884l0 44.385685c0 2.4505348 -1.9865417 4.4370766 -4.4370728 4.4370766l-172.79514 0c-2.4505463 0 -4.437088 -1.9865417 -4.437088 -4.4370766z" fill-rule="evenodd"/><path stroke="#b6d7a8" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m253.18898 18.972511l0 0c0 -2.450531 1.9865417 -4.4370785 4.437088 -4.4370785l172.79514 0c1.1767578 0 2.305359 0.46747684 3.1374817 1.2995901c0.8320923 0.8321142 1.2995911 1.960702 1.2995911 3.1374884l0 44.385685c0 2.4505348 -1.9865417 4.4370766 -4.4370728 4.4370766l-172.79514 0c-2.4505463 0 -4.437088 -1.9865417 -4.437088 -4.4370766z" fill-rule="evenodd"/><path fill="#274e13" d="m264.8948 38.305355l0 -12.406252l2.34375 0l0 12.406252l-2.34375 0zm1.296875 -5.234375l0 -2.218752l7.296875 0l0 2.218752l-7.296875 0zm6.25 5.234375l0 -12.406252l2.34375 0l0 12.406252l-2.34375 0zm7.5920715 0l0 -11.234377l2.34375 0l0 11.234377l-2.34375 0zm-3.46875 -10.187502l0 -2.21875l9.28125 0l0 2.21875l-9.28125 0zm13.934998 10.187502l0 -11.234377l2.34375 0l0 11.234377l-2.34375 0zm-3.46875 -10.187502l0 -2.21875l9.28125 0l0 2.21875l-9.28125 0zm11.064178 10.187502l0 -12.406252l4.359375 0q1.203125 0 2.15625 0.5q0.953125 0.484375 1.515625 1.375q0.5625 0.875 0.5625 2.046875q0 1.15625 -0.5625 2.046875q-0.5625 0.8906269 -1.515625 1.3906269q-0.953125 0.484375 -2.15625 0.484375l-3.0625 0l0 -2.218752l3.140625 0q0.609375 0 1.015625 -0.234375q0.421875 -0.25 0.625 -0.640625q0.203125 -0.390625 0.203125 -0.828125q0 -0.453125 -0.203125 -0.828125q-0.203125 -0.390625 -0.625 -0.625q-0.40625 -0.25 -1.015625 -0.25l-2.09375 0l0 10.187502l-2.34375 0zm10.535461 0l0 -12.406252l4.515625 0q1.25 0 2.171875 0.5q0.9375 0.5 1.453125 1.390625q0.515625 0.875 0.515625 2.03125q0 0.84375 -0.359375 1.546875q-0.34375 0.7031269 -0.96875 1.2187519q-0.609375 0.5 -1.4375 0.78125q-0.8125 0.28125 -1.75 0.28125l-2.84375 0l0 -2.156252l3.203125 0q0.546875 0 0.9375 -0.21875q0.40625 -0.234375 0.640625 -0.625q0.234375 -0.390625 0.234375 -0.875q0 -0.4375 -0.203125 -0.828125q-0.203125 -0.390625 -0.609375 -0.625q-0.390625 -0.25 -0.96875 -0.25l-2.1875 0l0 10.234377l-2.34375 0zm2.734375 -5.625l2.734375 0l3.84375 5.484375l0 0.140625l-2.671875 0l-3.90625 -5.625zm12.244476 5.90625q-1.375 0 -2.453125 -0.609375q-1.0625 -0.625 -1.65625 -1.6875q-0.59375 -1.0625 -0.59375 -2.40625q0 -1.328125 0.59375 -2.390627q0.59375 -1.078125 1.65625 -1.6875q1.078125 -0.609375 2.453125 -0.609375q1.390625 0 2.4375 0.625q1.0625 0.625 1.65625 1.6875q0.609375 1.0468769 0.609375 2.375002q0 1.34375 -0.609375 2.40625q-0.59375 1.0625 -1.65625 1.6875q-1.046875 0.609375 -2.4375 0.609375zm0 -2.125q0.671875 0 1.203125 -0.296875q0.546875 -0.296875 0.890625 -0.875q0.34375 -0.59375 0.34375 -1.40625q0 -0.8125 -0.34375 -1.375q-0.34375 -0.5781269 -0.890625 -0.8906269q-0.53125 -0.3125 -1.171875 -0.3125q-0.671875 0 -1.234375 0.3125q-0.5625 0.3125 -0.90625 0.8906269q-0.328125 0.5625 -0.328125 1.375q0 0.8125 0.328125 1.40625q0.34375 0.578125 0.90625 0.875q0.5625 0.296875 1.203125 0.296875zm9.59082 2.125q-1.625 0 -2.453125 -1.0q-0.8125 -1.015625 -0.8125 -2.75l0 -5.375002l2.28125 0l0 5.093752q0 0.90625 0.4375 1.421875q0.4375 0.515625 1.140625 0.515625q0.671875 0 1.140625 -0.34375q0.46875 -0.34375 0.71875 -0.90625q0.25 -0.578125 0.25 -1.265625l0 -4.515627l2.265625 0l0 8.843752l-2.125 0l0 -1.109375l-0.140625 0q-0.265625 0.421875 -0.6875 0.734375q-0.40625 0.3125 -0.921875 0.484375q-0.5 0.171875 -1.09375 0.171875zm6.5010986 -7.171877l0 -1.953125l1.625 0l0 1.953125l-1.625 0zm4.46875 7.031252q-1.375 0 -2.15625 -0.78125q-0.78125 -0.796875 -0.78125 -2.1875l0 -8.500002l2.28125 0l0 8.093752q0 0.640625 0.25 0.9375q0.265625 0.296875 0.859375 0.296875q0.265625 0 0.5 -0.078125q0.25 -0.078125 0.625 -0.296875l0 2.21875q-0.390625 0.140625 -0.78125 0.21875q-0.390625 0.078125 -0.796875 0.078125zm-0.75 -7.031252l0 -1.953125l2.25 0l0 1.953125l-2.25 0zm7.835907 7.171877q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328127q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.0156269 0.5 2.250002q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125019 -0.4375 -0.5781269q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.9531269q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625z" fill-rule="nonzero"/><path fill="#274e13" d="m270.7698 53.026608q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm7.808075 3.671875l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm9.370575 3.171875q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm8.04245 0.09375l-1.25 0l0 -4.59375q0 -0.828125 -0.3125 -1.234375q-0.3125 -0.40625 -0.890625 -0.40625q-0.25 0 -0.46875 0.0625q-0.21875 0.0625 -0.453125 0.234375q-0.234375 0.171875 -0.515625 0.453125q-0.28125 0.28125 -0.640625 0.71875l0 4.765625l-1.25 0l0 -10.109375l1.25 0l0 2.921875l-0.046875 1.140625q0.296875 -0.359375 0.578125 -0.59375q0.28125 -0.25 0.5625 -0.390625q0.28125 -0.15625 0.578125 -0.21875q0.296875 -0.0625 0.609375 -0.0625q1.078125 0 1.65625 0.65625q0.59375 0.65625 0.59375 1.96875l0 4.6875zm5.16745 -7.3125q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm19.006775 -8.046875l-4.90625 11.640625l-1.1875 0l4.90625 -11.640625l1.1875 0zm7.870575 9.84375q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm8.72995 -3.390625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm8.1987 3.59375l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0zm9.0737 -3.71875q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm5.6362 -5.421875l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm11.683075 5.125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm9.0737 4.0625q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm4.714325 -6.0625l-2.125 0l0 -1.03125l3.390625 0l0 6.15625l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -5.125zm0.4375 -4.046875q0.203125 0 0.375 0.078125q0.1875 0.078125 0.3125 0.21875q0.140625 0.125 0.21875 0.3125q0.078125 0.171875 0.078125 0.375q0 0.203125 -0.078125 0.390625q-0.078125 0.171875 -0.21875 0.3125q-0.125 0.125 -0.3125 0.203125q-0.171875 0.078125 -0.375 0.078125q-0.203125 0 -0.390625 -0.078125q-0.171875 -0.078125 -0.3125 -0.203125q-0.125 -0.140625 -0.203125 -0.3125q-0.078125 -0.1875 -0.078125 -0.390625q0 -0.203125 0.078125 -0.375q0.078125 -0.1875 0.203125 -0.3125q0.140625 -0.140625 0.3125 -0.21875q0.1875 -0.078125 0.390625 -0.078125zm11.433075 6.546875q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm3.0737 -3.59375l1.109375 0l0.046875 1.15625q0.328125 -0.359375 0.609375 -0.609375q0.296875 -0.25 0.578125 -0.390625q0.28125 -0.15625 0.578125 -0.21875q0.296875 -0.0625 0.609375 -0.0625q1.109375 0 1.671875 0.65625q0.578125 0.65625 0.578125 1.96875l0 4.6875l-1.25 0l0 -4.59375q0 -0.84375 -0.3125 -1.234375q-0.3125 -0.40625 -0.9375 -0.40625q-0.234375 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.234375q-0.234375 0.171875 -0.515625 0.453125q-0.265625 0.28125 -0.609375 0.71875l0 4.765625l-1.25 0l0 -7.1875zm13.745575 5.234375q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m204.56693 41.165356l48.62993 0" fill-rule="evenodd"/><path stroke="#b7b7b7" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m216.56693 41.165356l36.62993 0" fill-rule="evenodd"/><path fill="#b7b7b7" stroke="#b7b7b7" stroke-width="2.0" stroke-linecap="butt" d="m216.56693 37.86189l-9.076187 3.3034668l9.076187 3.303463z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m434.85828 41.165356l48.629913 0" fill-rule="evenodd"/><path stroke="#b7b7b7" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m434.85828 41.165356l36.629913 0" fill-rule="evenodd"/><path fill="#b7b7b7" stroke="#b7b7b7" stroke-width="2.0" stroke-linecap="butt" d="m471.4882 44.46882l9.076202 -3.303463l-9.076202 -3.3034668z" fill-rule="evenodd"/><path fill="#ead1dc" d="m483.48032 18.972511l0 0c0 -2.450531 1.9865417 -4.4370785 4.4370728 -4.4370785l244.4802 0c1.1767578 0 2.305359 0.46747684 3.1374512 1.2995901c0.8321533 0.8321142 1.2996216 1.960702 1.2996216 3.1374884l0 44.385685c0 2.4505348 -1.9865723 4.4370766 -4.4370728 4.4370766l-244.4802 0c-2.450531 0 -4.4370728 -1.9865417 -4.4370728 -4.4370766z" fill-rule="evenodd"/><path stroke="#d5a6bd" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m483.48032 18.972511l0 0c0 -2.450531 1.9865417 -4.4370785 4.4370728 -4.4370785l244.4802 0c1.1767578 0 2.305359 0.46747684 3.1374512 1.2995901c0.8321533 0.8321142 1.2996216 1.960702 1.2996216 3.1374884l0 44.385685c0 2.4505348 -1.9865723 4.4370766 -4.4370728 4.4370766l-244.4802 0c-2.450531 0 -4.4370728 -1.9865417 -4.4370728 -4.4370766z" fill-rule="evenodd"/><path fill="#4c1130" d="m495.18613 38.305355l0 -12.406252l2.34375 0l0 12.406252l-2.34375 0zm4.8339233 0l0 -8.843752l2.125 0l0 1.109375l0.140625 0q0.40625 -0.640625 1.125 -1.0q0.734375 -0.375 1.578125 -0.375q1.625 0 2.4375 0.984375q0.828125 0.984375 0.828125 2.625002l0 5.5l-2.28125 0l0 -5.21875q0 -0.859375 -0.4375 -1.3125019q-0.4375 -0.46875 -1.203125 -0.46875q-0.625 0 -1.09375 0.34375q-0.453125 0.328125 -0.703125 0.8906269q-0.25 0.5625 -0.25 1.265625l0 4.5l-2.265625 0zm9.428589 -6.890627l0 -1.953125l1.65625 0l0 1.953125l-1.65625 0zm1.578125 6.890627l0 -9.328127q0 -0.984375 0.40625 -1.703125q0.40625 -0.734375 1.1406555 -1.125q0.734375 -0.390625 1.734375 -0.390625q0.359375 0 0.71875 0.0625q0.359375 0.046875 0.6875 0.125l0 2.21875q-0.296875 -0.140625 -0.578125 -0.203125q-0.265625 -0.078125 -0.546875 -0.078125q-0.59375 0 -0.953125 0.34375q-0.34375 0.34375 -0.34375 0.953125l0 9.125002l-2.2656555 0zm2.1719055 -6.890627l0 -1.953125l2.265625 0l0 1.953125l-2.265625 0zm7.406128 7.171877q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328127q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.0156269 0.5 2.250002q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125019 -0.4375 -0.5781269q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.9531269q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm5.978943 -0.28125l0 -8.843752l2.125 0l0 1.1875l0.140625 0q0.234375 -0.421875 0.59375 -0.734375q0.375 -0.328125 0.875 -0.515625q0.515625 -0.1875 1.078125 -0.1875q0.34375 0 0.625 0.046875q0.28125 0.046875 0.484375 0.140625l0 2.265625q-0.359375 -0.140625 -0.71875 -0.234375q-0.359375 -0.09375 -0.75 -0.09375q-0.671875 0 -1.171875 0.34375q-0.5 0.3281269 -0.765625 0.9218769q-0.25 0.578125 -0.25 1.296875l0 4.40625l-2.265625 0zm11.08905 0.28125q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328127q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.0156269 0.5 2.250002q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125019 -0.4375 -0.5781269q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.9531269q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm5.978943 -0.28125l0 -8.843752l2.125 0l0 1.109375l0.140625 0q0.40625 -0.640625 1.125 -1.0q0.734375 -0.375 1.578125 -0.375q1.625 0 2.4375 0.984375q0.828125 0.984375 0.828125 2.625002l0 5.5l-2.28125 0l0 -5.21875q0 -0.859375 -0.4375 -1.3125019q-0.4375 -0.46875 -1.203125 -0.46875q-0.625 0 -1.09375 0.34375q-0.453125 0.328125 -0.703125 0.8906269q-0.25 0.5625 -0.25 1.265625l0 4.5l-2.265625 0zm14.501099 0.28125q-1.34375 0 -2.40625 -0.59375q-1.046875 -0.609375 -1.640625 -1.671875q-0.59375 -1.0625 -0.59375 -2.4375q0 -1.359375 0.59375 -2.421877q0.59375 -1.0625 1.640625 -1.65625q1.0625 -0.609375 2.40625 -0.609375q1.46875 0 2.53125 0.625q1.0625 0.625 1.53125 1.796875l-2.09375 0.8593769q-0.265625 -0.5937519 -0.78125 -0.8750019q-0.5 -0.296875 -1.1875 -0.296875q-0.671875 0 -1.21875 0.328125q-0.53125 0.3125 -0.84375 0.8906269q-0.3125 0.5625 -0.3125 1.359375q0 0.796875 0.3125 1.390625q0.3125 0.578125 0.84375 0.90625q0.546875 0.3125 1.21875 0.3125q0.765625 0 1.265625 -0.34375q0.5 -0.34375 0.8125 -0.921875l2.03125 0.890625q-0.515625 1.109375 -1.578125 1.796875q-1.0625 0.671875 -2.53125 0.671875zm9.635986 0q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328127q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.0156269 0.5 2.250002q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125019 -0.4375 -0.5781269q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.9531269q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm6.291443 -0.28125l0 -12.406252l4.359375 0q1.203125 0 2.15625 0.5q0.953125 0.484375 1.515625 1.375q0.5625 0.875 0.5625 2.046875q0 1.15625 -0.5625 2.046875q-0.5625 0.8906269 -1.515625 1.3906269q-0.953125 0.484375 -2.15625 0.484375l-3.0625 0l0 -2.218752l3.140625 0q0.609375 0 1.015625 -0.234375q0.421875 -0.25 0.625 -0.640625q0.203125 -0.390625 0.203125 -0.828125q0 -0.453125 -0.203125 -0.828125q-0.203125 -0.390625 -0.625 -0.625q-0.40625 -0.25 -1.015625 -0.25l-2.09375 0l0 10.187502l-2.34375 0zm14.008362 0.28125q-1.375 0 -2.453125 -0.609375q-1.0625 -0.625 -1.65625 -1.6875q-0.59375 -1.0625 -0.59375 -2.40625q0 -1.328125 0.59375 -2.390627q0.59375 -1.078125 1.65625 -1.6875q1.078125 -0.609375 2.453125 -0.609375q1.390625 0 2.4375 0.625q1.0625 0.625 1.65625 1.6875q0.609375 1.0468769 0.609375 2.375002q0 1.34375 -0.609375 2.40625q-0.59375 1.0625 -1.65625 1.6875q-1.046875 0.609375 -2.4375 0.609375zm0 -2.125q0.671875 0 1.203125 -0.296875q0.546875 -0.296875 0.890625 -0.875q0.34375 -0.59375 0.34375 -1.40625q0 -0.8125 -0.34375 -1.375q-0.34375 -0.5781269 -0.890625 -0.8906269q-0.53125 -0.3125 -1.171875 -0.3125q-0.671875 0 -1.234375 0.3125q-0.5625 0.3125 -0.90625 0.8906269q-0.328125 0.5625 -0.328125 1.375q0 0.8125 0.328125 1.40625q0.34375 0.578125 0.90625 0.875q0.5625 0.296875 1.203125 0.296875zm10.622131 2.125q-1.375 0 -2.453125 -0.609375q-1.0625 -0.625 -1.65625 -1.6875q-0.59375 -1.0625 -0.59375 -2.40625q0 -1.328125 0.59375 -2.390627q0.59375 -1.078125 1.65625 -1.6875q1.078125 -0.609375 2.453125 -0.609375q1.390625 0 2.4375 0.625q1.0625 0.625 1.65625 1.6875q0.609375 1.0468769 0.609375 2.375002q0 1.34375 -0.609375 2.40625q-0.59375 1.0625 -1.65625 1.6875q-1.046875 0.609375 -2.4375 0.609375zm0 -2.125q0.671875 0 1.203125 -0.296875q0.546875 -0.296875 0.890625 -0.875q0.34375 -0.59375 0.34375 -1.40625q0 -0.8125 -0.34375 -1.375q-0.34375 -0.5781269 -0.890625 -0.8906269q-0.53125 -0.3125 -1.171875 -0.3125q-0.671875 0 -1.234375 0.3125q-0.5625 0.3125 -0.90625 0.8906269q-0.328125 0.5625 -0.328125 1.375q0 0.8125 0.328125 1.40625q0.34375 0.578125 0.90625 0.875q0.5625 0.296875 1.203125 0.296875zm6.4033203 1.84375l0 -12.406252l2.265625 0l0 12.406252l-2.265625 0z" fill-rule="nonzero"/><path fill="#4c1130" d="m500.608 54.792233q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.4487 -2.015625q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm5.7299805 -4.9375l-2.1250305 0l0 -1.015625l3.3906555 0l0 9.078125l2.125 0l0 1.03125l-5.7500305 0l0 -1.03125l2.3594055 0l0 -8.0625zm11.683044 5.125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.870605 3.890625q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm8.261169 0.171875q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm8.526855 -3.5625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm3.3705444 -3.59375l1.140625 0l0.03125 1.328125q0.640625 -0.765625 1.25 -1.109375q0.625 -0.34375 1.25 -0.34375q1.125 0 1.703125 0.71875q0.578125 0.71875 0.53125 2.15625l-1.265625 0q0.03125 -0.953125 -0.265625 -1.375q-0.296875 -0.421875 -0.875 -0.421875q-0.25 0 -0.515625 0.09375q-0.25 0.078125 -0.515625 0.28125q-0.265625 0.1875 -0.5625 0.5q-0.296875 0.3125 -0.640625 0.75l0 4.609375l-1.265625 0l0 -7.1875zm10.651855 -0.125q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm18.506775 5.0l-0.53125 0q-1.375 0 -2.0625 -0.65625q-0.671875 -0.640625 -0.671875 -1.953125l0 -2.46875q0 -0.34375 -0.078125 -0.625q-0.078125 -0.28125 -0.28125 -0.46875q-0.1875 -0.1875 -0.515625 -0.28125q-0.328125 -0.109375 -0.8125 -0.109375l-0.3125 0l0 -0.984375l0.3125 0q0.515625 0 0.84375 -0.078125q0.328125 -0.09375 0.515625 -0.265625q0.1875 -0.1875 0.25 -0.453125q0.078125 -0.28125 0.078125 -0.640625l0 -1.703125q0 -0.59375 0.140625 -1.078125q0.15625 -0.484375 0.46875 -0.828125q0.328125 -0.34375 0.84375 -0.515625q0.53125 -0.1875 1.28125 -0.1875l0.53125 0l0 1.0l-0.421875 0q-1.65625 0 -1.65625 1.609375l0 1.671875q0 1.734375 -1.515625 1.96875q1.515625 0.140625 1.515625 1.953125l0 2.453125q0 1.640625 1.65625 1.640625l0.421875 0l0 1.0zm8.917419 -6.65625q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm9.44873 0.015625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm9.339294 -0.0625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm5.5268555 -5.5l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm8.495544 1.78125q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm19.36615 -1.65625q0 0.890625 -0.25 1.59375q-0.234375 0.703125 -0.703125 1.203125q-0.453125 0.484375 -1.109375 0.75q-0.640625 0.25 -1.453125 0.25q-0.640625 0 -1.3125 -0.109375q-0.65625 -0.125 -1.3125 -0.390625l0 -9.6875l1.25 0l0 2.78125l-0.0625 1.328125q0.546875 -0.71875 1.15625 -1.015625q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.359375 0.140625 0.734375 0.234375q0.390625 0.078125 0.734375 0.078125q0.421875 0 0.8125 -0.125q0.390625 -0.140625 0.6875 -0.453125q0.296875 -0.328125 0.46875 -0.859375q0.1875 -0.53125 0.1875 -1.3125zm7.8081055 3.671875l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm9.261169 1.3125q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.44873 -2.015625q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.308044 0.84375l-4.28125 0l0 -1.171875l4.28125 0l0 1.171875zm8.151855 3.3125l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0zm9.198669 -3.65625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm2.7143555 0.15625q0 -0.921875 0.25 -1.625q0.25 -0.71875 0.703125 -1.203125q0.46875 -0.5 1.109375 -0.75q0.65625 -0.25 1.453125 -0.25q0.34375 0 0.671875 0.046875q0.328125 0.03125 0.65625 0.125l0 -3.015625l1.25 0l0 10.109375l-1.109375 0l-0.046875 -1.359375q-0.515625 0.765625 -1.125 1.125q-0.609375 0.359375 -1.328125 0.359375q-0.609375 0 -1.078125 -0.25q-0.46875 -0.265625 -0.78125 -0.734375q-0.3125 -0.46875 -0.46875 -1.125q-0.15625 -0.65625 -0.15625 -1.453125zm1.265625 -0.078125q0 1.296875 0.375 1.9375q0.390625 0.640625 1.09375 0.640625q0.484375 0 1.0 -0.421875q0.53125 -0.421875 1.109375 -1.25l0 -3.34375q-0.3125 -0.140625 -0.6875 -0.203125q-0.359375 -0.078125 -0.734375 -0.078125q-1.015625 0 -1.59375 0.65625q-0.5625 0.65625 -0.5625 2.0625zm13.229919 -0.453125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm5.7299805 -4.9375l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm6.1049194 -1.265625l0.53125 0q1.375 0 2.046875 0.65625q0.671875 0.640625 0.671875 1.953125l0 1.65625q0 0.34375 0.078125 0.625q0.078125 0.265625 0.28125 0.46875q0.203125 0.1875 0.53125 0.296875q0.328125 0.09375 0.8125 0.09375l0.3125 0l0 0.984375l-0.3125 0q-0.515625 0 -0.859375 0.09375q-0.328125 0.078125 -0.515625 0.265625q-0.1875 0.171875 -0.265625 0.4375q-0.0625 0.265625 -0.0625 0.640625l0 2.515625q0 0.59375 -0.140625 1.078125q-0.140625 0.484375 -0.46875 0.8125q-0.3125 0.34375 -0.84375 0.53125q-0.515625 0.1875 -1.265625 0.1875l-0.53125 0l0 -1.0l0.421875 0q1.65625 0 1.65625 -1.609375l0 -2.484375q0 -1.75 1.515625 -1.953125q-1.53125 -0.171875 -1.53125 -1.96875l0 -1.640625q0 -1.640625 -1.640625 -1.640625l-0.421875 0l0 -1.0z" fill-rule="nonzero"/><path fill="#c9daf8" d="m2.5485563 9.969208l0 0c0 -3.7881055 3.070866 -6.8589716 6.8589716 -6.8589716l190.84898 0c1.819107 0 3.5637207 0.72263956 4.8500214 2.0089464c1.2863159 1.2863064 2.0089417 3.0309124 2.0089417 4.850025l0 68.61276c0 3.7881088 -3.0708618 6.8589783 -6.858963 6.8589783l-190.84898 0l0 0c-3.7881055 0 -6.8589716 -3.0708694 -6.8589716 -6.8589783z" fill-rule="evenodd"/><path stroke="#a4c2f4" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m2.5485563 9.969208l0 0c0 -3.7881055 3.070866 -6.8589716 6.8589716 -6.8589716l190.84898 0c1.819107 0 3.5637207 0.72263956 4.8500214 2.0089464c1.2863159 1.2863064 2.0089417 3.0309124 2.0089417 4.850025l0 68.61276c0 3.7881088 -3.0708618 6.8589783 -6.858963 6.8589783l-190.84898 0l0 0c-3.7881055 0 -6.8589716 -3.0708694 -6.8589716 -6.8589783z" fill-rule="evenodd"/><path fill="#1c4587" d="m20.885605 32.69684q-1.328125 0 -2.515625 -0.484375q-1.1875 -0.484375 -2.109375 -1.34375q-0.90624905 -0.875 -1.421874 -2.0625q-0.5 -1.1875 -0.5 -2.59375q0 -1.40625 0.5 -2.59375q0.515625 -1.1875 1.421874 -2.046875q0.90625 -0.875 2.09375 -1.359375q1.1875 -0.484375 2.53125 -0.484375q1.484375 0 2.6875 0.53125q1.203125 0.515625 2.046875 1.4375l-1.609375 1.5625q-0.40625 -0.421875 -0.875 -0.703125q-0.46875 -0.296875 -1.03125 -0.453125q-0.546875 -0.15625 -1.234375 -0.15625q-0.84375 0 -1.609375 0.3125q-0.75 0.296875 -1.328125 0.859375q-0.578125 0.5625 -0.90625 1.34375q-0.328125 0.78125 -0.328125 1.75q0 0.96875 0.328125 1.75q0.328125 0.78125 0.90625 1.34375q0.578125 0.5625 1.34375 0.875q0.765625 0.296875 1.625 0.296875q0.875 0 1.546875 -0.234375q0.671875 -0.25 1.140625 -0.65625q0.484375 -0.421875 0.765625 -0.9375q0.296875 -0.515625 0.375 -1.046875l-3.890625 0l0 -2.0l6.078125 0q0.046875 0.171875 0.078125 0.53125q0.046875 0.34375 0.046875 0.5625l0 0l0 0l0 0q0 1.375 -0.46875 2.484375q-0.453125 1.109375 -1.28125 1.90625q-0.8125 0.78125 -1.953125 1.203125q-1.125 0.40625 -2.453125 0.40625zm10.485352 0q-0.9375 0 -1.65625 -0.375q-0.71875 -0.375 -1.140625 -1.046875q-0.40625 -0.671875 -0.40625 -1.5625q0 -0.921875 0.46875 -1.578125q0.484375 -0.65625 1.28125 -1.015625q0.8125 -0.375 1.796875 -0.375q0.546875 0 0.984375 0.0625q0.4375 0.0625 0.78125 0.15625q0.34375 0.078125 0.578125 0.1875l0 -0.390625q0 -0.703125 -0.546875 -1.15625q-0.53125 -0.46875 -1.46875 -0.46875q-0.625 0 -1.203125 0.296875q-0.578125 0.28125 -0.953125 0.75l-1.46875 -1.140625q0.4375 -0.5625 1.0 -0.953125q0.578125 -0.390625 1.265625 -0.578125q0.703125 -0.203125 1.46875 -0.203125q2.03125 0 3.078125 0.9375q1.0625 0.921875 1.0625 2.734375l0 5.4375l-2.234375 0l0 -0.90625l-0.140625 0q-0.25 0.3125 -0.609375 0.59375q-0.359375 0.265625 -0.84375 0.421875q-0.484375 0.171875 -1.09375 0.171875zm0.53125 -1.765625q0.703125 0 1.171875 -0.296875q0.484375 -0.3125 0.734375 -0.796875q0.25 -0.484375 0.25 -1.03125q-0.390625 -0.1875 -0.875 -0.296875q-0.484375 -0.109375 -0.984375 -0.109375q-1.0 0 -1.390625 0.390625q-0.375 0.375 -0.375 0.921875q0 0.515625 0.375 0.875q0.375 0.34375 1.09375 0.34375zm5.537445 -5.40625l0 -1.953125l1.625 0l0 1.953125l-1.625 0zm4.46875 7.03125q-1.375 0 -2.15625 -0.78125q-0.78125 -0.796875 -0.78125 -2.1875l0 -8.5l2.28125 0l0 8.09375q0 0.640625 0.25 0.9375q0.265625 0.296875 0.859375 0.296875q0.265625 0 0.5 -0.078125q0.25 -0.078125 0.625 -0.296875l0 2.21875q-0.390625 0.140625 -0.78125 0.21875q-0.390625 0.078125 -0.796875 0.078125zm-0.75 -7.03125l0 -1.953125l2.25 0l0 1.953125l-2.25 0zm7.8359222 7.171875q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm7.791443 -0.28125l-2.796875 -8.84375l2.546875 0l1.515625 5.734375l0.125 0l1.765625 -5.734375l2.328125 0l1.765625 5.734375l0.125 0l1.515625 -5.734375l2.515625 0l-2.828125 8.84375l-2.4375 0l-1.796875 -5.71875l-0.125 0l-1.78125 5.71875l-2.4375 0zm15.149826 0.28125q-0.9375 0 -1.65625 -0.375q-0.71875 -0.375 -1.140625 -1.046875q-0.40625 -0.671875 -0.40625 -1.5625q0 -0.921875 0.46875 -1.578125q0.484375 -0.65625 1.28125 -1.015625q0.8125 -0.375 1.796875 -0.375q0.546875 0 0.984375 0.0625q0.4375 0.0625 0.78125 0.15625q0.34375 0.078125 0.578125 0.1875l0 -0.390625q0 -0.703125 -0.546875 -1.15625q-0.53125 -0.46875 -1.46875 -0.46875q-0.625 0 -1.203125 0.296875q-0.578125 0.28125 -0.953125 0.75l-1.46875 -1.140625q0.4375 -0.5625 1.0 -0.953125q0.578125 -0.390625 1.265625 -0.578125q0.703125 -0.203125 1.46875 -0.203125q2.03125 0 3.078125 0.9375q1.0625 0.921875 1.0625 2.734375l0 5.4375l-2.234375 0l0 -0.90625l-0.140625 0q-0.25 0.3125 -0.609375 0.59375q-0.359375 0.265625 -0.84375 0.421875q-0.484375 0.171875 -1.09375 0.171875zm0.53125 -1.765625q0.703125 0 1.171875 -0.296875q0.484375 -0.3125 0.734375 -0.796875q0.25 -0.484375 0.25 -1.03125q-0.390625 -0.1875 -0.875 -0.296875q-0.484375 -0.109375 -0.984375 -0.109375q-1.0 0 -1.390625 0.390625q-0.375 0.375 -0.375 0.921875q0 0.515625 0.375 0.875q0.375 0.34375 1.09375 0.34375zm9.702225 4.828125q-0.046875 0.125 -0.09375 0.21875q-0.03125 0.09375 -0.078125 0.1875l-2.4375 0q0.0625 -0.140625 0.265625 -0.59375q0.203125 -0.4375 0.34375 -0.75q0.09375 -0.203125 0.234375 -0.53125q0.140625 -0.328125 0.28125 -0.65625q0.15625 -0.3125 0.25 -0.484375l1.328125 -2.96875l0.46875 -1.109375l2.203125 -5.5l2.53125 0l-4.5625 10.5q-0.1875 0.453125 -0.34375 0.78125q-0.140625 0.328125 -0.234375 0.546875q-0.078125 0.21875 -0.15625 0.359375zm-0.59375 -3.484375l-3.859375 -8.703125l2.59375 0l2.28125 5.5l0.265625 0l-1.28125 3.203125z" fill-rule="nonzero"/><path fill="#1c4587" d="m20.479355 50.855587l-1.25 0l0 -4.59375q0 -0.828125 -0.3125 -1.234375q-0.3125 -0.40625 -0.890625 -0.40625q-0.25 0 -0.46875 0.0625q-0.21875 0.0625 -0.453125 0.234375q-0.234375 0.171875 -0.515625 0.453125q-0.28125 0.28125 -0.64062405 0.71875l0 4.765625l-1.25 0l0 -10.109375l1.25 0l0 2.921875l-0.046875 1.140625q0.29687405 -0.359375 0.57812405 -0.59375q0.28125 -0.25 0.5625 -0.390625q0.28125 -0.15625 0.578125 -0.21875q0.296875 -0.0625 0.609375 -0.0625q1.078125 0 1.65625 0.65625q0.59375 0.65625 0.59375 1.96875l0 4.6875zm8.54245 -3.65625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm8.7612 1.640625q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.16745 1.859375q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm2.2612 -7.09375l1.109375 0l0.046875 1.15625q0.328125 -0.359375 0.609375 -0.609375q0.296875 -0.25 0.578125 -0.390625q0.28125 -0.15625 0.578125 -0.21875q0.296875 -0.0625 0.609375 -0.0625q1.109375 0 1.671875 0.65625q0.578125 0.65625 0.578125 1.96875l0 4.6875l-1.25 0l0 -4.59375q0 -0.84375 -0.3125 -1.234375q-0.3125 -0.40625 -0.9375 -0.40625q-0.234375 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.234375q-0.234375 0.171875 -0.515625 0.453125q-0.265625 0.28125 -0.609375 0.71875l0 4.765625l-1.25 0l0 -7.1875zm12.683075 7.1875l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm8.6987 3.265625l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0zm9.0112 -3.96875q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm6.16745 -3.15625q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm19.30365 -1.90625q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm9.7612 4.15625l-1.65625 0l-1.9375 -2.734375l-1.921875 2.734375l-1.609375 0l2.78125 -3.609375l-2.65625 -3.578125l1.59375 0l1.890625 2.765625l1.859375 -2.765625l1.53125 0l-2.6875 3.609375l2.8125 3.578125zm6.1987 0l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm8.6987 3.265625l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0zm9.0737 -3.71875q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm5.6362 -5.421875l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm11.683075 5.125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm6.10495 1.90625q0.25 0 0.46875 0.09375q0.21875 0.09375 0.375 0.265625q0.15625 0.15625 0.25 0.375q0.09375 0.21875 0.09375 0.46875q0 0.234375 -0.09375 0.453125q-0.09375 0.21875 -0.25 0.375q-0.15625 0.15625 -0.375 0.25q-0.21875 0.09375 -0.46875 0.09375q-0.25 0 -0.46875 -0.09375q-0.203125 -0.09375 -0.375 -0.25q-0.15625 -0.15625 -0.25 -0.375q-0.09375 -0.21875 -0.09375 -0.453125q0 -0.25 0.09375 -0.46875q0.09375 -0.21875 0.25 -0.375q0.171875 -0.171875 0.375 -0.265625q0.21875 -0.09375 0.46875 -0.09375zm10.8237 1.984375q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm8.72995 -3.390625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm8.1987 3.59375l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0z" fill-rule="nonzero"/><path fill="#1c4587" d="m20.83873 65.13684q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.68749905 -0.125l0 3.015625l-1.25 0l0 -10.125004l1.109375 0l0.078125 1.203125q0.54687405 -0.734375 1.156249 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.6562538 0.15625 1.4687538zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.4687538 -0.265625 -0.7968788q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.60937405 0.7031288l0 3.484375q0.34374905 0.140625 0.71874905 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm9.4487 0.015625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.5312538q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875038 0.234375 1.5625038zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5000038 -0.421875 -0.8281288q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.8437538q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm3.370575 -3.5937538l1.140625 0l0.03125 1.328125q0.640625 -0.765625 1.25 -1.109375q0.625 -0.34375 1.25 -0.34375q1.125 0 1.703125 0.71875q0.578125 0.71875 0.53125 2.1562538l-1.265625 0q0.03125 -0.9531288 -0.265625 -1.3750038q-0.296875 -0.421875 -0.875 -0.421875q-0.25 0 -0.515625 0.09375q-0.25 0.078125 -0.515625 0.28125q-0.265625 0.1875 -0.5625 0.5q-0.296875 0.3125 -0.640625 0.7500038l0 4.609375l-1.265625 0l0 -7.187504zm13.558075 7.093754q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.7500038l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.6562538q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm5.151825 -7.218754q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.250004q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm19.756775 0l-1.59375 0l0 2.0625l-1.265625 0l0 -2.0625l-4.5 0l0 -1.09375l3.984375 -6.203129l1.78125 0l0 6.203129l1.59375 0l0 1.09375zm-2.859375 -6.093754l-3.265625 5.000004l3.265625 0l0 -5.000004zm10.91745 6.093754l-1.59375 0l0 2.0625l-1.265625 0l0 -2.0625l-4.5 0l0 -1.09375l3.984375 -6.203129l1.78125 0l0 6.203129l1.59375 0l0 1.09375zm-2.859375 -6.093754l-3.265625 5.000004l3.265625 0l0 -5.000004zm10.276825 5.312504q0 0.625 -0.25 1.171875q-0.25 0.53125 -0.75 0.9375q-0.5 0.390625 -1.265625 0.625q-0.75 0.234375 -1.765625 0.234375q-0.546875 0 -1.0 -0.03125q-0.4375 -0.03125 -0.828125 -0.09375l0 -1.109375q0.453125 0.078125 0.9375 0.125q0.5 0.03125 1.015625 0.03125q0.703125 0 1.1875 -0.125q0.5 -0.125 0.8125 -0.359375q0.328125 -0.234375 0.46875 -0.5625q0.140625 -0.34375 0.140625 -0.765625q0 -0.390625 -0.171875 -0.671875q-0.171875 -0.296875 -0.484375 -0.484375q-0.3125 -0.1875 -0.75 -0.28125q-0.421875 -0.109375 -0.9375 -0.109375l-1.078125 0l0 -1.0156288l1.09375 0q0.421875 0 0.765625 -0.109375q0.34375 -0.109375 0.59375 -0.3125q0.25 -0.21875 0.375 -0.515625q0.140625 -0.3125 0.140625 -0.703125q0 -0.75 -0.46875 -1.09375q-0.453125 -0.34375 -1.34375 -0.34375q-0.46875 0 -0.96875 0.09375q-0.5 0.09375 -1.078125 0.28125l0 -1.09375q0.25 -0.078125 0.515625 -0.140625q0.28125 -0.078125 0.546875 -0.125q0.28125 -0.046875 0.546875 -0.0625q0.28125 -0.03125 0.53125 -0.03125q0.75 0 1.3125 0.171875q0.5625 0.15625 0.9375 0.453125q0.390625 0.296875 0.578125 0.734375q0.1875 0.421875 0.1875 0.96875q0 0.796875 -0.40625 1.34375q-0.40625 0.53125 -1.125 0.859375q0.359375 0.0625 0.71875 0.23437881q0.359375 0.171875 0.640625 0.4375q0.28125 0.265625 0.453125 0.640625q0.171875 0.359375 0.171875 0.796875z" fill-rule="nonzero"/><path fill="#c9daf8" d="m0 6.858971l0 0c0 -3.788105 3.070866 -6.858971 6.858971 -6.858971l190.84898 0c1.819107 0 3.5637207 0.72263956 4.8500214 2.0089462c1.2863007 1.2863066 2.0089417 3.0309126 2.0089417 4.850025l0 68.61277c0 3.7881012 -3.0708618 6.8589706 -6.858963 6.8589706l-190.84898 0l0 0c-3.788105 0 -6.858971 -3.0708694 -6.858971 -6.8589706z" fill-rule="evenodd"/><path stroke="#a4c2f4" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m0 6.858971l0 0c0 -3.788105 3.070866 -6.858971 6.858971 -6.858971l190.84898 0c1.819107 0 3.5637207 0.72263956 4.8500214 2.0089462c1.2863007 1.2863066 2.0089417 3.0309126 2.0089417 4.850025l0 68.61277c0 3.7881012 -3.0708618 6.8589706 -6.858963 6.8589706l-190.84898 0l0 0c-3.788105 0 -6.858971 -3.0708694 -6.858971 -6.8589706z" fill-rule="evenodd"/><path fill="#1c4587" d="m18.33705 29.586603q-1.328125 0 -2.515625 -0.484375q-1.1875 -0.484375 -2.109375 -1.34375q-0.90625 -0.875 -1.421875 -2.0625q-0.5 -1.1875 -0.5 -2.59375q0 -1.40625 0.5 -2.59375q0.515625 -1.1875 1.421875 -2.046875q0.90625 -0.875 2.09375 -1.359375q1.1875 -0.484375 2.53125 -0.484375q1.484375 0 2.6875 0.53125q1.203125 0.515625 2.046875 1.4375l-1.609375 1.5625q-0.40625 -0.421875 -0.875 -0.703125q-0.46875 -0.296875 -1.03125 -0.453125q-0.546875 -0.15625 -1.234375 -0.15625q-0.84375 0 -1.609375 0.3125q-0.75 0.296875 -1.328125 0.859375q-0.578125 0.5625 -0.90625 1.34375q-0.328125 0.78125 -0.328125 1.75q0 0.96875 0.328125 1.75q0.328125 0.78125 0.90625 1.34375q0.578125 0.5625 1.34375 0.875q0.765625 0.296875 1.625 0.296875q0.875 0 1.546875 -0.234375q0.671875 -0.25 1.140625 -0.65625q0.484375 -0.421875 0.765625 -0.9375q0.296875 -0.515625 0.375 -1.046875l-3.890625 0l0 -2.0l6.078125 0q0.046875 0.171875 0.078125 0.53125q0.046875 0.34375 0.046875 0.5625l0 0l0 0l0 0q0 1.375 -0.46875 2.484375q-0.453125 1.109375 -1.28125 1.90625q-0.8125 0.78125 -1.953125 1.203125q-1.125 0.40625 -2.453125 0.40625zm10.485352 0q-0.9375 0 -1.65625 -0.375q-0.71875 -0.375 -1.140625 -1.046875q-0.40625 -0.671875 -0.40625 -1.5625q0 -0.921875 0.46875 -1.578125q0.484375 -0.65625 1.28125 -1.015625q0.8125 -0.375 1.796875 -0.375q0.546875 0 0.984375 0.0625q0.4375 0.0625 0.78125 0.15625q0.34375 0.078125 0.578125 0.1875l0 -0.390625q0 -0.703125 -0.546875 -1.15625q-0.53125 -0.46875 -1.46875 -0.46875q-0.625 0 -1.203125 0.296875q-0.578125 0.28125 -0.953125 0.75l-1.46875 -1.140625q0.4375 -0.5625 1.0 -0.953125q0.578125 -0.390625 1.265625 -0.578125q0.703125 -0.203125 1.46875 -0.203125q2.03125 0 3.078123 0.9375q1.0625 0.921875 1.0625 2.734375l0 5.4375l-2.234373 0l0 -0.90625l-0.140625 0q-0.25 0.3125 -0.609375 0.59375q-0.359375 0.265625 -0.84375 0.421875q-0.484375 0.171875 -1.09375 0.171875zm0.53125 -1.765625q0.703125 0 1.171875 -0.296875q0.484375 -0.3125 0.734375 -0.796875q0.25 -0.484375 0.25 -1.03125q-0.390625 -0.1875 -0.875 -0.296875q-0.484375 -0.109375 -0.984375 -0.109375q-1.0 0 -1.390625 0.390625q-0.375 0.375 -0.375 0.921875q0 0.515625 0.375 0.875q0.375 0.34375 1.09375 0.34375zm5.537443 -5.40625l0 -1.953125l1.625 0l0 1.953125l-1.625 0zm4.46875 7.03125q-1.375 0 -2.15625 -0.78125q-0.78125 -0.796875 -0.78125 -2.1875l0 -8.5l2.28125 0l0 8.09375q0 0.640625 0.25 0.9375q0.265625 0.296875 0.859375 0.296875q0.265625 0 0.5 -0.078125q0.25 -0.078125 0.625 -0.296875l0 2.21875q-0.390625 0.140625 -0.78125 0.21875q-0.390625 0.078125 -0.796875 0.078125zm-0.75 -7.03125l0 -1.953125l2.25 0l0 1.953125l-2.25 0zm7.8359222 7.171875q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm7.791443 -0.28125l-2.796875 -8.84375l2.546875 0l1.515625 5.734375l0.125 0l1.765625 -5.734375l2.328125 0l1.765625 5.734375l0.125 0l1.515625 -5.734375l2.5156288 0l-2.8281288 8.84375l-2.4375 0l-1.796875 -5.71875l-0.125 0l-1.78125 5.71875l-2.4375 0zm15.14983 0.28125q-0.9375 0 -1.65625 -0.375q-0.71875 -0.375 -1.140625 -1.046875q-0.40625 -0.671875 -0.40625 -1.5625q0 -0.921875 0.46875 -1.578125q0.484375 -0.65625 1.28125 -1.015625q0.8125 -0.375 1.796875 -0.375q0.546875 0 0.984375 0.0625q0.4375 0.0625 0.78125 0.15625q0.34375 0.078125 0.578125 0.1875l0 -0.390625q0 -0.703125 -0.546875 -1.15625q-0.53125 -0.46875 -1.46875 -0.46875q-0.625 0 -1.203125 0.296875q-0.578125 0.28125 -0.953125 0.75l-1.46875 -1.140625q0.4375 -0.5625 1.0 -0.953125q0.578125 -0.390625 1.265625 -0.578125q0.703125 -0.203125 1.46875 -0.203125q2.03125 0 3.078125 0.9375q1.0625 0.921875 1.0625 2.734375l0 5.4375l-2.234375 0l0 -0.90625l-0.140625 0q-0.25 0.3125 -0.609375 0.59375q-0.359375 0.265625 -0.84375 0.421875q-0.484375 0.171875 -1.09375 0.171875zm0.53125 -1.765625q0.703125 0 1.171875 -0.296875q0.484375 -0.3125 0.734375 -0.796875q0.25 -0.484375 0.25 -1.03125q-0.390625 -0.1875 -0.875 -0.296875q-0.484375 -0.109375 -0.984375 -0.109375q-1.0 0 -1.390625 0.390625q-0.375 0.375 -0.375 0.921875q0 0.515625 0.375 0.875q0.375 0.34375 1.09375 0.34375zm9.702225 4.828123q-0.046875 0.125 -0.09375 0.21875q-0.03125 0.09375 -0.078125 0.1875l-2.4375 0q0.0625 -0.140625 0.265625 -0.59375q0.203125 -0.4375 0.34375 -0.7499981q0.09375 -0.203125 0.234375 -0.53125q0.140625 -0.328125 0.28125 -0.65625q0.15625 -0.3125 0.25 -0.484375l1.328125 -2.96875l0.46875 -1.109375l2.203125 -5.5l2.53125 0l-4.5625 10.5q-0.1875 0.453125 -0.34375 0.78125q-0.140625 0.3281231 -0.234375 0.5468731q-0.078125 0.21875 -0.15625 0.359375zm-0.59375 -3.484373l-3.859375 -8.703125l2.59375 0l2.28125 5.5l0.265625 0l-1.28125 3.203125z" fill-rule="nonzero"/><path fill="#1c4587" d="m17.9308 47.74535l-1.25 0l0 -4.59375q0 -0.828125 -0.3125 -1.234375q-0.3125 -0.40625 -0.890625 -0.40625q-0.25 0 -0.46875 0.0625q-0.21875 0.0625 -0.453125 0.234375q-0.234375 0.171875 -0.515625 0.453125q-0.28125 0.28125 -0.640625 0.71875l0 4.765625l-1.25 0l0 -10.109375l1.25 0l0 2.921875l-0.046875 1.140625q0.296875 -0.359375 0.578125 -0.59375q0.28125 -0.25 0.5625 -0.390625q0.28125 -0.15625 0.578125 -0.21875q0.296875 -0.0625 0.609375 -0.0625q1.078125 0 1.65625 0.65625q0.59375 0.65625 0.59375 1.96875l0 4.6875zm8.54245 -3.65625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm8.761198 1.640625q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6874981 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3124981 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.5468731 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9374981 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.5312481 -0.078125 -0.9062481 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.6406231 0.1875 1.0624981 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.16745 1.859375q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm2.2612 -7.09375l1.109375 0l0.046875 1.15625q0.328125 -0.359375 0.609375 -0.609375q0.296875 -0.25 0.578125 -0.390625q0.28125 -0.15625 0.578125 -0.21875q0.296875 -0.0625 0.609375 -0.0625q1.109375 0 1.671875 0.65625q0.578125 0.65625 0.578125 1.96875l0 4.6875l-1.25 0l0 -4.59375q0 -0.84375 -0.3125 -1.234375q-0.3125 -0.40625 -0.9375 -0.40625q-0.234375 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.234375q-0.234375 0.171875 -0.515625 0.453125q-0.265625 0.28125 -0.609375 0.71875l0 4.765625l-1.25 0l0 -7.1875zm12.683075 7.1875l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm8.698704 3.265625l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.3906288 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.3281288 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0zm9.0112 -3.96875q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm6.16745 -3.15625q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm19.30365 -1.90625q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm9.7612 4.15625l-1.65625 0l-1.9375 -2.734375l-1.921875 2.734375l-1.609375 0l2.78125 -3.609375l-2.65625 -3.578125l1.59375 0l1.890625 2.765625l1.859375 -2.765625l1.53125 0l-2.6875 3.609375l2.8125 3.578125zm6.1987 0l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm8.6987 3.265625l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0zm9.0737 -3.71875q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm5.6362 -5.421875l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm11.683075 5.125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm6.10495 1.90625q0.25 0 0.46875 0.09375q0.21875 0.09375 0.375 0.265625q0.15625 0.15625 0.25 0.375q0.09375 0.21875 0.09375 0.46875q0 0.234375 -0.09375 0.453125q-0.09375 0.21875 -0.25 0.375q-0.15625 0.15625 -0.375 0.25q-0.21875 0.09375 -0.46875 0.09375q-0.25 0 -0.46875 -0.09375q-0.203125 -0.09375 -0.375 -0.25q-0.15625 -0.15625 -0.25 -0.375q-0.09375 -0.21875 -0.09375 -0.453125q0 -0.25 0.09375 -0.46875q0.09375 -0.21875 0.25 -0.375q0.171875 -0.171875 0.375 -0.265625q0.21875 -0.09375 0.46875 -0.09375zm10.8237 1.984375q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm8.72995 -3.390625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm8.1987 3.59375l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0z" fill-rule="nonzero"/><path fill="#1c4587" d="m18.290174 62.0266q0 0.953125 -0.265625 1.671875q-0.265625 0.7187538 -0.75 1.1875038q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125004l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.4843788q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875038 0.578125 -2.0625038zm9.4487 0.015625q0 0.84375 -0.25 1.546875q-0.234375 0.6875038 -0.671875 1.1875038q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.1562538q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.8281288q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.3750038 0.375 -0.8593788q0.125 -0.484375 0.125 -1.015625zm3.370575 -3.59375l1.140625 0l0.03125 1.328125q0.640625 -0.765625 1.25 -1.109375q0.625 -0.34375 1.2499981 -0.34375q1.125 0 1.703125 0.71875q0.578125 0.71875 0.53125 2.15625l-1.265625 0q0.03125 -0.953125 -0.265625 -1.375q-0.296875 -0.421875 -0.875 -0.421875q-0.2499981 0 -0.5156231 0.09375q-0.25 0.078125 -0.515625 0.28125q-0.265625 0.1875 -0.5625 0.5q-0.296875 0.3125 -0.640625 0.75l0 4.609379l-1.265625 0l0 -7.187504zm13.558073 7.093754q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.8750038l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.7656288 0.40625 1.1562538q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm5.151825 -7.218754q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.23437881q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625381 0.34375 -0.23437881q0.203125 -0.09375 0.4375 -0.09375zm19.756779 0l-1.59375 0l0 2.0625038l-1.265625 0l0 -2.0625038l-4.500004 0l0 -1.09375l3.984375 -6.203125l1.7812538 0l0 6.203125l1.59375 0l0 1.09375zm-2.859375 -6.09375l-3.2656288 5.0l3.2656288 0l0 -5.0zm10.91745 6.09375l-1.59375 0l0 2.0625038l-1.265625 0l0 -2.0625038l-4.5 0l0 -1.09375l3.984375 -6.203125l1.78125 0l0 6.203125l1.59375 0l0 1.09375zm-2.859375 -6.09375l-3.265625 5.0l3.265625 0l0 -5.0zm10.276825 5.3125q0 0.625 -0.25 1.1718788q-0.25 0.53125 -0.75 0.9375q-0.5 0.390625 -1.265625 0.625q-0.75 0.234375 -1.765625 0.234375q-0.546875 0 -1.0 -0.03125q-0.4375 -0.03125 -0.828125 -0.09375l0 -1.109375q0.453125 0.078125 0.9375 0.125q0.5 0.03125 1.015625 0.03125q0.703125 0 1.1875 -0.125q0.5 -0.125 0.8125 -0.359375q0.328125 -0.234375 0.46875 -0.5625038q0.140625 -0.34375 0.140625 -0.765625q0 -0.390625 -0.171875 -0.671875q-0.171875 -0.296875 -0.484375 -0.484375q-0.3125 -0.1875 -0.75 -0.28125q-0.421875 -0.109375 -0.9375 -0.109375l-1.078125 0l0 -1.015625l1.09375 0q0.421875 0 0.765625 -0.109375q0.34375 -0.109375 0.59375 -0.3125q0.25 -0.21875 0.375 -0.515625q0.140625 -0.3125 0.140625 -0.703125q0 -0.75 -0.46875 -1.09375q-0.453125 -0.34375 -1.34375 -0.34375q-0.46875 0 -0.96875 0.09375q-0.5 0.09375 -1.078125 0.28125l0 -1.09375q0.25 -0.078125 0.515625 -0.140625q0.28125 -0.078125 0.546875 -0.125q0.28125 -0.046875 0.546875 -0.0625q0.28125 -0.03125 0.53125 -0.03125q0.75 0 1.3125 0.171875q0.5625 0.15625 0.9375 0.453125q0.390625 0.296875 0.578125 0.734375q0.1875 0.421875 0.1875 0.96875q0 0.796875 -0.40625 1.34375q-0.40625 0.53125 -1.125 0.859375q0.359375 0.0625 0.71875 0.234375q0.359375 0.171875 0.640625 0.4375q0.28125 0.265625 0.453125 0.640625q0.171875 0.359375 0.171875 0.796875z" fill-rule="nonzero"/><path fill="#d9d2e9" d="m519.3228 109.33209l0 0c0 -2.450531 1.9865723 -4.4370804 4.4370728 -4.4370804l172.79517 0c1.1767578 0 2.305359 0.4674759 3.1375122 1.2995911c0.8320923 0.8321152 1.2995605 1.960701 1.2995605 3.1374893l0 44.38568c0 2.450531 -1.9865723 4.437088 -4.4370728 4.437088l-172.79517 0c-2.4505005 0 -4.4370728 -1.986557 -4.4370728 -4.437088z" fill-rule="evenodd"/><path stroke="#b4a7d6" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m519.3228 109.33209l0 0c0 -2.450531 1.9865723 -4.4370804 4.4370728 -4.4370804l172.79517 0c1.1767578 0 2.305359 0.4674759 3.1375122 1.2995911c0.8320923 0.8321152 1.2995605 1.960701 1.2995605 3.1374893l0 44.38568c0 2.450531 -1.9865723 4.437088 -4.4370728 4.437088l-172.79517 0c-2.4505005 0 -4.4370728 -1.986557 -4.4370728 -4.437088z" fill-rule="evenodd"/><path fill="#20124d" d="m531.0287 128.66493l0 -12.40625l2.34375 0l0 12.40625l-2.34375 0zm4.8339233 0l0 -8.84375l2.125 0l0 1.109375l0.140625 0q0.40625 -0.640625 1.125 -1.0q0.734375 -0.375 1.578125 -0.375q1.625 0 2.4375 0.984375q0.828125 0.984375 0.828125 2.625l0 5.5l-2.28125 0l0 -5.21875q0 -0.859375 -0.4375 -1.3125q-0.4375 -0.46875 -1.203125 -0.46875q-0.625 0 -1.09375 0.34375q-0.453125 0.328125 -0.703125 0.890625q-0.25 0.5625 -0.25 1.265625l0 4.5l-2.265625 0zm9.428589 -6.890625l0 -1.953125l1.65625 0l0 1.953125l-1.65625 0zm1.578125 6.890625l0 -9.328125q0 -0.984375 0.40625 -1.703125q0.40625 -0.734375 1.140625 -1.125q0.734375 -0.390625 1.734375 -0.390625q0.359375 0 0.71875 0.0625q0.359375 0.046875 0.6875 0.125l0 2.21875q-0.296875 -0.140625 -0.578125 -0.203125q-0.265625 -0.078125 -0.546875 -0.078125q-0.59375 0 -0.953125 0.34375q-0.34375 0.34375 -0.34375 0.953125l0 9.125l-2.265625 0zm2.171875 -6.890625l0 -1.953125l2.265625 0l0 1.953125l-2.265625 0zm7.406128 7.171875q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm5.978943 -0.28125l0 -8.84375l2.125 0l0 1.1875l0.140625 0q0.234375 -0.421875 0.59375 -0.734375q0.375 -0.328125 0.875 -0.515625q0.515625 -0.1875 1.078125 -0.1875q0.34375 0 0.625 0.046875q0.28125 0.046875 0.484375 0.140625l0 2.265625q-0.359375 -0.140625 -0.71875 -0.234375q-0.359375 -0.09375 -0.75 -0.09375q-0.671875 0 -1.171875 0.34375q-0.5 0.328125 -0.765625 0.921875q-0.25 0.578125 -0.25 1.296875l0 4.40625l-2.265625 0zm11.08905 0.28125q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm5.978943 -0.28125l0 -8.84375l2.125 0l0 1.109375l0.140625 0q0.40625 -0.640625 1.125 -1.0q0.734375 -0.375 1.578125 -0.375q1.625 0 2.4375 0.984375q0.828125 0.984375 0.828125 2.625l0 5.5l-2.28125 0l0 -5.21875q0 -0.859375 -0.4375 -1.3125q-0.4375 -0.46875 -1.203125 -0.46875q-0.625 0 -1.09375 0.34375q-0.453125 0.328125 -0.703125 0.890625q-0.25 0.5625 -0.25 1.265625l0 4.5l-2.265625 0zm14.501099 0.28125q-1.34375 0 -2.40625 -0.59375q-1.046875 -0.609375 -1.640625 -1.671875q-0.59375 -1.0625 -0.59375 -2.4375q0 -1.359375 0.59375 -2.421875q0.59375 -1.0625 1.640625 -1.65625q1.0625 -0.609375 2.40625 -0.609375q1.46875 0 2.53125 0.625q1.0625 0.625 1.53125 1.796875l-2.09375 0.859375q-0.265625 -0.59375 -0.78125 -0.875q-0.5 -0.296875 -1.1875 -0.296875q-0.671875 0 -1.21875 0.328125q-0.53125 0.3125 -0.84375 0.890625q-0.3125 0.5625 -0.3125 1.359375q0 0.796875 0.3125 1.390625q0.3125 0.578125 0.84375 0.90625q0.546875 0.3125 1.21875 0.3125q0.765625 0 1.265625 -0.34375q0.5 -0.34375 0.8125 -0.921875l2.03125 0.890625q-0.515625 1.109375 -1.578125 1.796875q-1.0625 0.671875 -2.53125 0.671875zm9.635986 0q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm6.291443 -0.28125l0 -12.40625l3.015625 0l3.296875 8.71875l0.125 0l3.296875 -8.71875l3.03125 0l0 12.40625l-2.3125 0l0 -6.109375l0.125 -2.0625l-0.125 0l-3.15625 8.171875l-1.828125 0l-3.171875 -8.171875l-0.140625 0l0.140625 2.0625l0 6.109375l-2.296875 0zm19.484192 0.28125q-1.375 0 -2.453125 -0.609375q-1.0625 -0.625 -1.65625 -1.6875q-0.59375 -1.0625 -0.59375 -2.40625q0 -1.328125 0.59375 -2.390625q0.59375 -1.078125 1.65625 -1.6875q1.078125 -0.609375 2.453125 -0.609375q1.390625 0 2.4375 0.625q1.0625 0.625 1.65625 1.6875q0.609375 1.046875 0.609375 2.375q0 1.34375 -0.609375 2.40625q-0.59375 1.0625 -1.65625 1.6875q-1.046875 0.609375 -2.4375 0.609375zm0 -2.125q0.671875 0 1.203125 -0.296875q0.546875 -0.296875 0.890625 -0.875q0.34375 -0.59375 0.34375 -1.40625q0 -0.8125 -0.34375 -1.375q-0.34375 -0.578125 -0.890625 -0.890625q-0.53125 -0.3125 -1.171875 -0.3125q-0.671875 0 -1.234375 0.3125q-0.5625 0.3125 -0.90625 0.890625q-0.328125 0.5625 -0.328125 1.375q0 0.8125 0.328125 1.40625q0.34375 0.578125 0.90625 0.875q0.5625 0.296875 1.203125 0.296875zm10.200195 2.125q-1.21875 0 -2.1875 -0.59375q-0.96875 -0.609375 -1.53125 -1.65625q-0.5625 -1.0625 -0.5625 -2.453125q0 -1.390625 0.5625 -2.4375q0.5625 -1.0625 1.53125 -1.65625q0.96875 -0.59375 2.1875 -0.59375q0.640625 0 1.15625 0.1875q0.515625 0.1875 0.890625 0.5q0.390625 0.3125 0.59375 0.65625l0.140625 0l-0.140625 -1.25l0 -3.390625l2.265625 0l0 12.40625l-2.125 0l0 -1.0625l-0.140625 0q-0.203125 0.359375 -0.59375 0.65625q-0.375 0.296875 -0.890625 0.484375q-0.515625 0.203125 -1.15625 0.203125zm0.375 -2.09375q0.640625 0 1.1875 -0.328125q0.546875 -0.34375 0.875 -0.921875q0.34375 -0.578125 0.34375 -1.359375q0 -0.78125 -0.34375 -1.359375q-0.328125 -0.578125 -0.875 -0.890625q-0.546875 -0.328125 -1.1875 -0.328125q-0.625 0 -1.171875 0.328125q-0.546875 0.3125 -0.890625 0.890625q-0.328125 0.5625 -0.328125 1.359375q0 0.78125 0.328125 1.375q0.34375 0.59375 0.890625 0.921875q0.546875 0.3125 1.171875 0.3125zm10.850769 2.09375q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm5.978943 -0.28125l0 -12.40625l2.265625 0l0 12.40625l-2.265625 0z" fill-rule="nonzero"/><path fill="#20124d" d="m537.32556 147.10493l-1.234375 0l-0.1875 -5.828125l-0.078125 -2.25l-0.4375 1.3125l-1.390625 3.71875l-0.875 0l-1.3125 -3.578125l-0.4375 -1.453125l-0.03125 2.34375l-0.171875 5.734375l-1.203125 0l0.46875 -9.359375l1.5 0l1.265625 3.53125l0.40625 1.1875l0.390625 -1.1875l1.328125 -3.53125l1.546875 0l0.453125 9.359375zm7.7611694 -3.65625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm2.7143555 0.15625q0 -0.921875 0.25 -1.625q0.25 -0.71875 0.703125 -1.203125q0.46875 -0.5 1.109375 -0.75q0.65625 -0.25 1.453125 -0.25q0.34375 0 0.671875 0.046875q0.328125 0.03125 0.65625 0.125l0 -3.015625l1.25 0l0 10.109375l-1.109375 0l-0.046875 -1.359375q-0.515625 0.765625 -1.125 1.125q-0.609375 0.359375 -1.328125 0.359375q-0.609375 0 -1.078125 -0.25q-0.46875 -0.265625 -0.78125 -0.734375q-0.3125 -0.46875 -0.46875 -1.125q-0.15625 -0.65625 -0.15625 -1.453125zm1.265625 -0.078125q0 1.296875 0.375 1.9375q0.390625 0.640625 1.09375 0.640625q0.484375 0 1.0 -0.421875q0.53125 -0.421875 1.109375 -1.25l0 -3.34375q-0.3125 -0.140625 -0.6875 -0.203125q-0.359375 -0.078125 -0.734375 -0.078125q-1.015625 0 -1.59375 0.65625q-0.5625 0.65625 -0.5625 2.0625zm13.229919 -0.453125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm5.7299805 -4.9375l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm11.292419 7.140625q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm16.74115 -1.40625l-2.8125 0l0 2.921875l-1.234375 0l0 -2.921875l-2.8125 0l0 -1.078125l2.8125 0l0 -2.90625l1.234375 0l0 2.90625l2.8125 0l0 1.078125zm16.069275 -0.296875q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm9.214355 -0.125q0 0.890625 -0.25 1.59375q-0.234375 0.703125 -0.703125 1.203125q-0.453125 0.484375 -1.109375 0.75q-0.640625 0.25 -1.453125 0.25q-0.640625 0 -1.3125 -0.109375q-0.65625 -0.125 -1.3125 -0.390625l0 -9.6875l1.25 0l0 2.78125l-0.0625 1.328125q0.546875 -0.71875 1.15625 -1.015625q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.359375 0.140625 0.734375 0.234375q0.390625 0.078125 0.734375 0.078125q0.421875 0 0.8125 -0.125q0.390625 -0.140625 0.6875 -0.453125q0.296875 -0.328125 0.46875 -0.859375q0.1875 -0.53125 0.1875 -1.3125zm8.058044 -3.515625l0 7.0625q0 0.75 -0.21875 1.328125q-0.21875 0.59375 -0.625 0.984375q-0.390625 0.40625 -0.984375 0.609375q-0.578125 0.203125 -1.296875 0.203125q-0.53125 0 -1.046875 -0.09375q-0.5 -0.09375 -0.90625 -0.265625l0 -1.1875q0.21875 0.109375 0.46875 0.203125q0.265625 0.09375 0.53125 0.15625q0.265625 0.0625 0.53125 0.09375q0.28125 0.046875 0.53125 0.046875q0.828125 0 1.28125 -0.515625q0.46875 -0.515625 0.46875 -1.515625l0 -6.078125l-3.515625 0l0 -1.03125l4.78125 0zm-0.75 -3.015625q0.203125 0 0.375 0.078125q0.1875 0.078125 0.3125 0.21875q0.140625 0.125 0.203125 0.3125q0.078125 0.171875 0.078125 0.375q0 0.203125 -0.078125 0.390625q-0.0625 0.171875 -0.203125 0.3125q-0.125 0.125 -0.3125 0.203125q-0.171875 0.078125 -0.375 0.078125q-0.21875 0 -0.40625 -0.078125q-0.171875 -0.078125 -0.296875 -0.203125q-0.125 -0.140625 -0.203125 -0.3125q-0.078125 -0.1875 -0.078125 -0.390625q0 -0.203125 0.078125 -0.375q0.078125 -0.1875 0.203125 -0.3125q0.125 -0.140625 0.296875 -0.21875q0.1875 -0.078125 0.40625 -0.078125zm10.01123 6.234375q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.870544 3.890625q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm8.26123 0.171875q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm4.7142944 -6.0625l-2.125 0l0 -1.03125l3.390625 0l0 6.15625l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -5.125zm0.4375 -4.046875q0.203125 0 0.375 0.078125q0.1875 0.078125 0.3125 0.21875q0.140625 0.125 0.21875 0.3125q0.078125 0.171875 0.078125 0.375q0 0.203125 -0.078125 0.390625q-0.078125 0.171875 -0.21875 0.3125q-0.125 0.125 -0.3125 0.203125q-0.171875 0.078125 -0.375 0.078125q-0.203125 0 -0.390625 -0.078125q-0.171875 -0.078125 -0.3125 -0.203125q-0.125 -0.140625 -0.203125 -0.3125q-0.078125 -0.1875 -0.078125 -0.390625q0 -0.203125 0.078125 -0.375q0.078125 -0.1875 0.203125 -0.3125q0.140625 -0.140625 0.3125 -0.21875q0.1875 -0.078125 0.390625 -0.078125zm4.4956055 3.015625l1.421875 0l1.765625 4.75l0.375 1.15625l0.390625 -1.1875l1.75 -4.71875l1.359375 0l-2.8125 7.1875l-1.4375 0l-2.8125 -7.1875zm14.808044 3.21875q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.964355 2.203125q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m610.1575 104.89501l0 -37.102364" fill-rule="evenodd"/><path stroke="#b7b7b7" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m610.1575 104.89501l0 -25.102364" fill-rule="evenodd"/><path fill="#b7b7b7" stroke="#b7b7b7" stroke-width="2.0" stroke-linecap="butt" d="m613.46094 79.79265l-3.3034668 -9.076195l-3.3034668 9.076195z" fill-rule="evenodd"/></g></svg>
\ No newline at end of file
+<svg version="1.1" viewBox="0.0 0.0 886.9475065616798 215.17322834645668" fill="none" stroke="none" stroke-linecap="square" stroke-miterlimit="10" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><clipPath id="p.0"><path d="m0 0l886.9475 0l0 215.17323l-886.9475 0l0 -215.17323z" clip-rule="nonzero"/></clipPath><g clip-path="url(#p.0)"><path fill="#000000" fill-opacity="0.0" d="m0 0l886.9475 0l0 215.17323l-886.9475 0z" fill-rule="evenodd"/><path fill="#d9d2e9" d="m650.7113 139.07448l0 0c0 -3.2214813 2.6115112 -5.833008 5.833008 -5.833008l192.90088 0c1.5469971 0 3.0307007 0.6145477 4.1245728 1.7084503c1.0939331 1.0939026 1.708435 2.5775452 1.708435 4.1245575l0 58.34973c0 3.2214813 -2.6115112 5.833008 -5.833008 5.833008l-192.90088 0c-3.2214966 0 -5.833008 -2.6115265 -5.833008 -5.833008z" fill-rule="evenodd"/><path stroke="#b4a7d6" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m650.7113 139.07448l0 0c0 -3.2214813 2.6115112 -5.833008 5.833008 -5.833008l192.90088 0c1.5469971 0 3.0307007 0.6145477 4.1245728 1.7084503c1.0939331 1.0939026 1.708435 2.5775452 1.708435 4.1245575l0 58.34973c0 3.2214813 -2.6115112 5.833008 -5.833008 5.833008l-192.90088 0c-3.2214966 0 -5.833008 -2.6115265 -5.833008 -5.833008z" fill-rule="evenodd"/><path fill="#20124d" d="m662.826 156.38934l0 -12.40625l2.34375 0l0 12.40625l-2.34375 0zm4.8339233 0l0 -8.84375l2.125 0l0 1.109375l0.140625 0q0.40625 -0.640625 1.125 -1.0q0.734375 -0.375 1.578125 -0.375q1.625 0 2.4375 0.984375q0.828125 0.984375 0.828125 2.625l0 5.5l-2.28125 0l0 -5.21875q0 -0.859375 -0.4375 -1.3125q-0.4375 -0.46875 -1.203125 -0.46875q-0.625 0 -1.09375 0.34375q-0.453125 0.328125 -0.703125 0.890625q-0.25 0.5625 -0.25 1.265625l0 4.5l-2.265625 0zm9.428589 -6.890625l0 -1.953125l1.65625 0l0 1.953125l-1.65625 0zm1.578125 6.890625l0 -9.328125q0 -0.984375 0.40625 -1.703125q0.40625 -0.734375 1.140625 -1.125q0.734375 -0.390625 1.734375 -0.390625q0.359375 0 0.71875 0.0625q0.359375 0.046875 0.6875 0.125l0 2.21875q-0.296875 -0.140625 -0.578125 -0.203125q-0.265625 -0.078125 -0.546875 -0.078125q-0.59375 0 -0.953125 0.34375q-0.34375 0.34375 -0.34375 0.953125l0 9.125l-2.265625 0zm2.171875 -6.890625l0 -1.953125l2.265625 0l0 1.953125l-2.265625 0zm7.406128 7.171875q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm5.978943 -0.28125l0 -8.84375l2.125 0l0 1.1875l0.140625 0q0.234375 -0.421875 0.59375 -0.734375q0.375 -0.328125 0.875 -0.515625q0.515625 -0.1875 1.078125 -0.1875q0.34375 0 0.625 0.046875q0.28125 0.046875 0.484375 0.140625l0 2.265625q-0.359375 -0.140625 -0.71875 -0.234375q-0.359375 -0.09375 -0.75 -0.09375q-0.671875 0 -1.171875 0.34375q-0.5 0.328125 -0.765625 0.921875q-0.25 0.578125 -0.25 1.296875l0 4.40625l-2.265625 0zm11.08905 0.28125q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm5.978943 -0.28125l0 -8.84375l2.125 0l0 1.109375l0.140625 0q0.40625 -0.640625 1.125 -1.0q0.734375 -0.375 1.578125 -0.375q1.625 0 2.4375 0.984375q0.828125 0.984375 0.828125 2.625l0 5.5l-2.28125 0l0 -5.21875q0 -0.859375 -0.4375 -1.3125q-0.4375 -0.46875 -1.203125 -0.46875q-0.625 0 -1.09375 0.34375q-0.453125 0.328125 -0.703125 0.890625q-0.25 0.5625 -0.25 1.265625l0 4.5l-2.265625 0zm14.501099 0.28125q-1.34375 0 -2.40625 -0.59375q-1.046875 -0.609375 -1.640625 -1.671875q-0.59375 -1.0625 -0.59375 -2.4375q0 -1.359375 0.59375 -2.421875q0.59375 -1.0625 1.640625 -1.65625q1.0625 -0.609375 2.40625 -0.609375q1.46875 0 2.53125 0.625q1.0625 0.625 1.53125 1.796875l-2.09375 0.859375q-0.265625 -0.59375 -0.78125 -0.875q-0.5 -0.296875 -1.1875 -0.296875q-0.671875 0 -1.21875 0.328125q-0.53125 0.3125 -0.84375 0.890625q-0.3125 0.5625 -0.3125 1.359375q0 0.796875 0.3125 1.390625q0.3125 0.578125 0.84375 0.90625q0.546875 0.3125 1.21875 0.3125q0.765625 0 1.265625 -0.34375q0.5 -0.34375 0.8125 -0.921875l2.03125 0.890625q-0.515625 1.109375 -1.578125 1.796875q-1.0625 0.671875 -2.53125 0.671875zm9.635986 0q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm12.150818 0q-1.390625 0 -2.578125 -0.484375q-1.1875 -0.5 -2.0625 -1.390625q-0.875 -0.90625 -1.359375 -2.078125q-0.484375 -1.1875 -0.484375 -2.53125q0 -1.359375 0.484375 -2.53125q0.484375 -1.171875 1.359375 -2.0625q0.875 -0.90625 2.0625 -1.390625q1.1875 -0.5 2.578125 -0.5q1.375 0 2.546875 0.5q1.1875 0.484375 2.0625 1.390625q0.890625 0.890625 1.375 2.0625q0.484375 1.171875 0.484375 2.53125q0 1.34375 -0.484375 2.53125q-0.484375 1.171875 -1.375 2.078125q-0.875 0.890625 -2.0625 1.390625q-1.171875 0.484375 -2.546875 0.484375zm0 -2.21875q1.15625 0 2.09375 -0.53125q0.9375 -0.546875 1.484375 -1.5q0.5625 -0.96875 0.5625 -2.234375q0 -1.28125 -0.5625 -2.234375q-0.546875 -0.953125 -1.484375 -1.484375q-0.9375 -0.546875 -2.09375 -0.546875q-1.15625 0 -2.09375 0.546875q-0.921875 0.53125 -1.484375 1.484375q-0.546875 0.953125 -0.546875 2.234375q0 1.265625 0.546875 2.234375q0.5625 0.953125 1.484375 1.5q0.9375 0.53125 2.09375 0.53125zm13.270935 2.21875q-0.640625 0 -1.171875 -0.203125q-0.515625 -0.1875 -0.890625 -0.484375q-0.359375 -0.296875 -0.59375 -0.65625l-0.140625 0l0 1.0625l-2.125 0l0 -12.40625l2.265625 0l0 3.390625l-0.140625 1.25l0.140625 0q0.234375 -0.34375 0.59375 -0.65625q0.375 -0.3125 0.890625 -0.5q0.53125 -0.1875 1.171875 -0.1875q1.203125 0 2.171875 0.59375q0.96875 0.59375 1.53125 1.65625q0.5625 1.046875 0.5625 2.4375q0 1.390625 -0.5625 2.453125q-0.5625 1.046875 -1.53125 1.65625q-0.96875 0.59375 -2.171875 0.59375zm-0.40625 -2.09375q0.640625 0 1.1875 -0.3125q0.546875 -0.328125 0.875 -0.921875q0.34375 -0.59375 0.34375 -1.375q0 -0.796875 -0.34375 -1.359375q-0.328125 -0.578125 -0.875 -0.890625q-0.546875 -0.328125 -1.1875 -0.328125q-0.625 0 -1.171875 0.328125q-0.53125 0.3125 -0.875 0.890625q-0.34375 0.578125 -0.34375 1.359375q0 0.78125 0.34375 1.359375q0.34375 0.578125 0.875 0.921875q0.546875 0.328125 1.171875 0.328125zm5.850708 5.734375q-0.328125 0 -0.59375 -0.03125q-0.28125 -0.03125 -0.59375 -0.09375l0 -2.203125q0.1875 0.109375 0.421875 0.171875q0.234375 0.078125 0.5 0.078125q0.421875 0 0.59375 -0.265625q0.1875 -0.265625 0.1875 -0.765625l0 -9.65625l2.265625 0l0 9.703125q0 1.109375 -0.390625 1.78125q-0.375 0.671875 -1.015625 0.96875q-0.625 0.3125 -1.375 0.3125zm1.65625 -13.734375q-0.609375 0 -1.046875 -0.421875q-0.421875 -0.4375 -0.421875 -1.046875q0 -0.609375 0.421875 -1.03125q0.4375 -0.421875 1.046875 -0.421875q0.609375 0 1.03125 0.421875q0.421875 0.421875 0.421875 1.03125q0 0.609375 -0.421875 1.046875q-0.421875 0.421875 -1.03125 0.421875zm7.453308 10.09375q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm10.135193 0q-1.34375 0 -2.40625 -0.59375q-1.046875 -0.609375 -1.640625 -1.671875q-0.59375 -1.0625 -0.59375 -2.4375q0 -1.359375 0.59375 -2.421875q0.59375 -1.0625 1.640625 -1.65625q1.0625 -0.609375 2.40625 -0.609375q1.46875 0 2.53125 0.625q1.0625 0.625 1.53125 1.796875l-2.09375 0.859375q-0.265625 -0.59375 -0.78125 -0.875q-0.5 -0.296875 -1.1875 -0.296875q-0.671875 0 -1.21875 0.328125q-0.53125 0.3125 -0.84375 0.890625q-0.3125 0.5625 -0.3125 1.359375q0 0.796875 0.3125 1.390625q0.3125 0.578125 0.84375 0.90625q0.546875 0.3125 1.21875 0.3125q0.765625 0 1.265625 -0.34375q0.5 -0.34375 0.8125 -0.921875l2.03125 0.890625q-0.515625 1.109375 -1.578125 1.796875q-1.0625 0.671875 -2.53125 0.671875zm4.8391724 -7.171875l0 -1.953125l1.625 0l0 1.953125l-1.625 0zm4.46875 7.03125q-1.375 0 -2.15625 -0.78125q-0.78125 -0.796875 -0.78125 -2.1875l0 -8.5l2.28125 0l0 8.09375q0 0.640625 0.25 0.9375q0.265625 0.296875 0.859375 0.296875q0.265625 0 0.5 -0.078125q0.25 -0.078125 0.625 -0.296875l0 2.21875q-0.390625 0.140625 -0.78125 0.21875q-0.390625 0.078125 -0.796875 0.078125zm-0.75 -7.03125l0 -1.953125l2.25 0l0 1.953125l-2.25 0zm4.128662 6.890625l0 -8.84375l2.265625 0l0 8.84375l-2.265625 0zm1.140625 -9.8125q-0.609375 0 -1.046875 -0.421875q-0.421875 -0.4375 -0.421875 -1.046875q0 -0.609375 0.421875 -1.03125q0.4375 -0.421875 1.046875 -0.421875q0.609375 0 1.03125 0.421875q0.421875 0.421875 0.421875 1.03125q0 0.609375 -0.421875 1.046875q-0.421875 0.421875 -1.03125 0.421875zm6.031433 9.8125l-3.75 -8.84375l2.59375 0l2.234375 5.765625l0.140625 0l2.265625 -5.765625l2.546875 0l-3.78125 8.84375l-2.25 0zm10.986816 0.28125q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625z" fill-rule="nonzero"/><path fill="#20124d" d="m668.93536 174.82935l-1.4375 0l-1.390625 -2.984375q-0.15625 -0.34375 -0.328125 -0.5625q-0.15625 -0.234375 -0.34375 -0.359375q-0.1875 -0.140625 -0.421875 -0.203125q-0.21875 -0.0625 -0.5 -0.0625l-0.609375 0l0 4.171875l-1.265625 0l0 -9.359375l2.5 0q0.8125 0 1.390625 0.1875q0.59375 0.171875 0.96875 0.5q0.390625 0.328125 0.5625 0.78125q0.171875 0.453125 0.171875 1.0q0 0.4375 -0.125 0.828125q-0.125 0.390625 -0.390625 0.71875q-0.25 0.3125 -0.625 0.546875q-0.375 0.21875 -0.859375 0.34375q0.390625 0.125 0.65625 0.46875q0.28125 0.34375 0.578125 0.90625l1.46875 3.078125zm-2.03125 -6.78125q0 -0.75 -0.46875 -1.125q-0.46875 -0.375 -1.328125 -0.375l-1.203125 0l0 3.09375l1.03125 0q0.453125 0 0.8125 -0.09375q0.359375 -0.109375 0.609375 -0.3125q0.265625 -0.203125 0.40625 -0.5q0.140625 -0.296875 0.140625 -0.6875zm9.792419 2.8125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm2.9174805 0.71875q0 -0.78125 0.203125 -1.46875q0.203125 -0.703125 0.625 -1.21875q0.4375 -0.53125 1.09375 -0.828125q0.671875 -0.3125 1.59375 -0.3125q0.359375 0 0.71875 0.0625q0.359375 0.046875 0.765625 0.171875l1.09375 -0.28125l0 10.25l-1.25 0l0 -2.71875l0.0625 -1.53125q-1.015625 1.4375 -2.421875 1.4375q-0.625 0 -1.09375 -0.25q-0.46875 -0.265625 -0.78125 -0.734375q-0.296875 -0.46875 -0.453125 -1.125q-0.15625 -0.65625 -0.15625 -1.453125zm1.265625 -0.078125q0 0.59375 0.09375 1.078125q0.09375 0.484375 0.265625 0.8125q0.1875 0.328125 0.46875 0.515625q0.28125 0.171875 0.640625 0.171875q0.484375 0 1.0 -0.421875q0.53125 -0.421875 1.109375 -1.25l0 -3.34375q-0.28125 -0.125 -0.65625 -0.203125q-0.359375 -0.09375 -0.765625 -0.09375q-1.046875 0 -1.609375 0.703125q-0.546875 0.6875 -0.546875 2.03125zm12.933044 3.515625l-1.125 0l-0.03125 -1.15625q-0.328125 0.375 -0.625 0.625q-0.28125 0.234375 -0.578125 0.390625q-0.28125 0.140625 -0.578125 0.203125q-0.28125 0.0625 -0.59375 0.0625q-1.109375 0 -1.6875 -0.640625q-0.5625 -0.65625 -0.5625 -1.96875l0 -4.703125l1.25 0l0 4.59375q0 1.65625 1.25 1.65625q0.21875 0 0.4375 -0.0625q0.21875 -0.078125 0.453125 -0.234375q0.25 -0.171875 0.515625 -0.453125q0.28125 -0.296875 0.625 -0.734375l0 -4.765625l1.25 0l0 7.1875zm8.35498 -3.96875q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.964294 2.203125q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.16748 1.859375q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm7.2924194 -3.21875l-4.28125 0l0 -1.171875l4.28125 0l0 1.171875zm8.714355 1.359375q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.511169 -1.765625q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm9.26123 -0.296875q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.870544 3.890625q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm4.9174805 -5.890625l-2.125 0l0 -1.03125l3.390625 0l0 6.15625l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -5.125zm0.4375 -4.046875q0.203125 0 0.375 0.078125q0.1875 0.078125 0.3125 0.21875q0.140625 0.125 0.21875 0.3125q0.078125 0.171875 0.078125 0.375q0 0.203125 -0.078125 0.390625q-0.078125 0.171875 -0.21875 0.3125q-0.125 0.125 -0.3125 0.203125q-0.171875 0.078125 -0.375 0.078125q-0.203125 0 -0.390625 -0.078125q-0.171875 -0.078125 -0.3125 -0.203125q-0.125 -0.140625 -0.203125 -0.3125q-0.078125 -0.1875 -0.078125 -0.390625q0 -0.203125 0.078125 -0.375q0.078125 -0.1875 0.203125 -0.3125q0.140625 -0.140625 0.3125 -0.21875q0.1875 -0.078125 0.390625 -0.078125zm11.542419 1.25q-0.96875 -0.203125 -1.6875 -0.203125q-1.671875 0 -1.671875 1.75l0 1.265625l3.140625 0l0 1.03125l-3.140625 0l0 5.109375l-1.265625 0l0 -5.109375l-2.3125 0l0 -1.03125l2.3125 0l0 -1.1875q0 -2.875 2.984375 -2.875q0.75 0 1.640625 0.171875l0 1.078125zm-7.515625 1.765625l0 0zm11.651855 1.03125l-2.125 0l0 -1.03125l3.390625 0l0 6.15625l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -5.125zm0.4375 -4.046875q0.203125 0 0.375 0.078125q0.1875 0.078125 0.3125 0.21875q0.140625 0.125 0.21875 0.3125q0.078125 0.171875 0.078125 0.375q0 0.203125 -0.078125 0.390625q-0.078125 0.171875 -0.21875 0.3125q-0.125 0.125 -0.3125 0.203125q-0.171875 0.078125 -0.375 0.078125q-0.203125 0 -0.390625 -0.078125q-0.171875 -0.078125 -0.3125 -0.203125q-0.125 -0.140625 -0.203125 -0.3125q-0.078125 -0.1875 -0.078125 -0.390625q0 -0.203125 0.078125 -0.375q0.078125 -0.1875 0.203125 -0.3125q0.140625 -0.140625 0.3125 -0.21875q0.1875 -0.078125 0.390625 -0.078125zm10.761169 9.9375q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625z" fill-rule="nonzero"/><path fill="#20124d" d="m668.826 189.1731q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm9.214294 -0.125q0 0.890625 -0.25 1.59375q-0.234375 0.703125 -0.703125 1.203125q-0.453125 0.484375 -1.109375 0.75q-0.640625 0.25 -1.453125 0.25q-0.640625 0 -1.3125 -0.109375q-0.65625 -0.125 -1.3125 -0.390625l0 -9.6875l1.25 0l0 2.78125l-0.0625 1.328125q0.546875 -0.71875 1.15625 -1.015625q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.359375 0.140625 0.734375 0.234375q0.390625 0.078125 0.734375 0.078125q0.421875 0 0.8125 -0.125q0.390625 -0.140625 0.6875 -0.453125q0.296875 -0.328125 0.46875 -0.859375q0.1875 -0.53125 0.1875 -1.3125zm8.058105 -3.515625l0 7.0625q0 0.75 -0.21875 1.328125q-0.21875 0.59375 -0.625 0.984375q-0.390625 0.40625 -0.984375 0.609375q-0.578125 0.203125 -1.296875 0.203125q-0.53125 0 -1.046875 -0.09375q-0.5 -0.09375 -0.90625 -0.265625l0 -1.1875q0.21875 0.109375 0.46875 0.203125q0.265625 0.09375 0.53125 0.15625q0.265625 0.0625 0.53125 0.09375q0.28125 0.046875 0.53125 0.046875q0.828125 0 1.28125 -0.515625q0.46875 -0.515625 0.46875 -1.515625l0 -6.078125l-3.515625 0l0 -1.03125l4.78125 0zm-0.75 -3.015625q0.203125 0 0.375 0.078125q0.1875 0.078125 0.3125 0.21875q0.140625 0.125 0.203125 0.3125q0.078125 0.171875 0.078125 0.375q0 0.203125 -0.078125 0.390625q-0.0625 0.171875 -0.203125 0.3125q-0.125 0.125 -0.3125 0.203125q-0.171875 0.078125 -0.375 0.078125q-0.21875 0 -0.40625 -0.078125q-0.171875 -0.078125 -0.296875 -0.203125q-0.125 -0.140625 -0.203125 -0.3125q-0.078125 -0.1875 -0.078125 -0.390625q0 -0.203125 0.078125 -0.375q0.078125 -0.1875 0.203125 -0.3125q0.125 -0.140625 0.296875 -0.21875q0.1875 -0.078125 0.40625 -0.078125zm10.011169 6.234375q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.870605 3.890625q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm8.261169 0.171875q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm4.7143555 -6.0625l-2.125 0l0 -1.03125l3.390625 0l0 6.15625l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -5.125zm0.4375 -4.046875q0.203125 0 0.375 0.078125q0.1875 0.078125 0.3125 0.21875q0.140625 0.125 0.21875 0.3125q0.078125 0.171875 0.078125 0.375q0 0.203125 -0.078125 0.390625q-0.078125 0.171875 -0.21875 0.3125q-0.125 0.125 -0.3125 0.203125q-0.171875 0.078125 -0.375 0.078125q-0.203125 0 -0.390625 -0.078125q-0.171875 -0.078125 -0.3125 -0.203125q-0.125 -0.140625 -0.203125 -0.3125q-0.078125 -0.1875 -0.078125 -0.390625q0 -0.203125 0.078125 -0.375q0.078125 -0.1875 0.203125 -0.3125q0.140625 -0.140625 0.3125 -0.21875q0.1875 -0.078125 0.390625 -0.078125zm4.4955444 3.015625l1.421875 0l1.765625 4.75l0.375 1.15625l0.390625 -1.1875l1.75 -4.71875l1.359375 0l-2.8125 7.1875l-1.4375 0l-2.8125 -7.1875zm14.808105 3.21875q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.964294 2.203125q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875z" fill-rule="nonzero"/><path fill="#ead1dc" d="m626.31757 22.082747l0 0c0 -2.450529 1.9865723 -4.4370766 4.4370728 -4.4370766l244.48022 0c1.1767578 0 2.305359 0.4674759 3.1374512 1.2995892c0.8321533 0.83211327 1.2996216 1.960701 1.2996216 3.1374874l0 44.38569c0 2.450531 -1.9865723 4.4370728 -4.4370728 4.4370728l-244.48022 0c-2.4505005 0 -4.4370728 -1.9865417 -4.4370728 -4.4370728z" fill-rule="evenodd"/><path stroke="#d5a6bd" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m626.31757 22.082747l0 0c0 -2.450529 1.9865723 -4.4370766 4.4370728 -4.4370766l244.48022 0c1.1767578 0 2.305359 0.4674759 3.1374512 1.2995892c0.8321533 0.83211327 1.2996216 1.960701 1.2996216 3.1374874l0 44.38569c0 2.450531 -1.9865723 4.4370728 -4.4370728 4.4370728l-244.48022 0c-2.4505005 0 -4.4370728 -1.9865417 -4.4370728 -4.4370728z" fill-rule="evenodd"/><path fill="#4c1130" d="m638.02344 41.41559l0 -12.406248l2.34375 0l0 10.187498l5.25 0l0 2.21875l-7.59375 0zm9.478394 0l0 -12.406248l2.34375 0l0 10.187498l5.25 0l0 2.21875l-7.59375 0zm9.478455 0l0 -12.406248l3.015625 0l3.296875 8.718748l0.125 0l3.296875 -8.718748l3.03125 0l0 12.406248l-2.3125 0l0 -6.109375l0.125 -2.0625l-0.125 0l-3.15625 8.171875l-1.828125 0l-3.171875 -8.171875l-0.140625 0l0.140625 2.0625l0 6.109375l-2.296875 0zm15.577881 0l0 -12.406248l4.84375 0q1.078125 0 1.9375 0.453125q0.859375 0.4375 1.359375 1.171875q0.5 0.71875 0.5 1.6093731q0 0.96875 -0.484375 1.65625q-0.46875 0.671875 -1.171875 1.015625l0 0.140625q0.953125 0.328125 1.53125 1.09375q0.578125 0.75 0.578125 1.8125q0 1.0625 -0.546875 1.84375q-0.546875 0.765625 -1.46875 1.1875q-0.921875 0.421875 -2.0625 0.421875l-5.015625 0zm1.296875 -5.34375l0 -2.0l3.375 0q0.546875 0 0.90625 -0.203125q0.375 -0.203125 0.578125 -0.546875q0.203125 -0.34375 0.203125 -0.75q0 -0.40625 -0.203125 -0.7343731q-0.1875 -0.328125 -0.546875 -0.53125q-0.359375 -0.203125 -0.859375 -0.203125l-2.40625 0l0 8.187498l2.59375 0q0.59375 0 0.984375 -0.203125q0.40625 -0.21875 0.609375 -0.578125q0.203125 -0.375 0.203125 -0.8125q0 -0.46875 -0.203125 -0.828125q-0.203125 -0.375 -0.625 -0.578125q-0.421875 -0.21875 -1.046875 -0.21875l-3.5625 0zm12.216614 5.625q-0.9375 0 -1.65625 -0.375q-0.71875 -0.375 -1.140625 -1.046875q-0.40625 -0.671875 -0.40625 -1.5625q0 -0.921875 0.46875 -1.578125q0.484375 -0.65625 1.28125 -1.015625q0.8125 -0.375 1.796875 -0.375q0.546875 0 0.984375 0.0625q0.4375 0.0625 0.78125 0.15625q0.34375 0.078125 0.578125 0.1875l0 -0.390625q0 -0.703125 -0.546875 -1.15625q-0.53125 -0.46875 -1.46875 -0.46875q-0.625 0 -1.203125 0.296875q-0.578125 0.28125 -0.953125 0.75l-1.46875 -1.140625q0.4375 -0.5625 1.0 -0.953125q0.578125 -0.390625 1.265625 -0.578125q0.703125 -0.203125 1.46875 -0.203125q2.03125 0 3.078125 0.9375q1.0625 0.921875 1.0625 2.734375l0 5.4375l-2.234375 0l0 -0.90625l-0.140625 0q-0.25 0.3125 -0.609375 0.59375q-0.359375 0.265625 -0.84375 0.421875q-0.484375 0.171875 -1.09375 0.171875zm0.53125 -1.765625q0.703125 0 1.171875 -0.296875q0.484375 -0.3125 0.734375 -0.796875q0.25 -0.484375 0.25 -1.03125q-0.390625 -0.1875 -0.875 -0.296875q-0.484375 -0.109375 -0.984375 -0.109375q-1.0 0 -1.390625 0.390625q-0.375 0.375 -0.375 0.921875q0 0.515625 0.375 0.875q0.375 0.34375 1.09375 0.34375zm10.609985 1.765625q-1.34375 0 -2.40625 -0.59375q-1.046875 -0.609375 -1.640625 -1.671875q-0.59375 -1.0625 -0.59375 -2.4375q0 -1.359375 0.59375 -2.421875q0.59375 -1.0625 1.640625 -1.65625q1.0625 -0.609375 2.40625 -0.609375q1.46875 0 2.53125 0.625q1.0625 0.625 1.53125 1.796875l-2.09375 0.859375q-0.265625 -0.59375 -0.78125 -0.875q-0.5 -0.296875 -1.1875 -0.296875q-0.671875 0 -1.21875 0.328125q-0.53125 0.3125 -0.84375 0.890625q-0.3125 0.5625 -0.3125 1.359375q0 0.796875 0.3125 1.390625q0.3125 0.578125 0.84375 0.90625q0.546875 0.3125 1.21875 0.3125q0.765625 0 1.265625 -0.34375q0.5 -0.34375 0.8125 -0.921875l2.03125 0.890625q-0.515625 1.109375 -1.578125 1.796875q-1.0625 0.671875 -2.53125 0.671875zm5.668701 -0.28125l0 -12.406248l2.265625 0l0 12.406248l-2.265625 0zm1.328125 -1.859375l0 -2.796875l4.234375 -4.1875l2.78125 0l0 0.140625l-7.015625 6.84375zm4.484375 1.859375l-2.96875 -4.765625l1.578125 -1.546875l4.078125 6.171875l0 0.140625l-2.6875 0zm7.7198486 0.28125q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm5.978943 -0.28125l0 -8.84375l2.125 0l0 1.109375l0.140625 0q0.40625 -0.640625 1.125 -1.0q0.734375 -0.375 1.578125 -0.375q1.625 0 2.4375 0.984375q0.828125 0.984375 0.828125 2.625l0 5.5l-2.28125 0l0 -5.21875q0 -0.859375 -0.4375 -1.3125q-0.4375 -0.46875 -1.203125 -0.46875q-0.625 0 -1.09375 0.34375q-0.453125 0.328125 -0.703125 0.890625q-0.25 0.5625 -0.25 1.265625l0 4.5l-2.265625 0zm14.141724 0.28125q-1.21875 0 -2.1875 -0.59375q-0.96875 -0.609375 -1.53125 -1.65625q-0.5625 -1.0625 -0.5625 -2.453125q0 -1.390625 0.5625 -2.4375q0.5625 -1.0625 1.53125 -1.65625q0.96875 -0.59375 2.1875 -0.59375q0.640625 0 1.15625 0.1875q0.515625 0.1875 0.890625 0.5q0.390625 0.3125 0.59375 0.65625l0.140625 0l-0.140625 -1.25l0 -3.390623l2.265625 0l0 12.406248l-2.125 0l0 -1.0625l-0.140625 0q-0.203125 0.359375 -0.59375 0.65625q-0.375 0.296875 -0.890625 0.484375q-0.515625 0.203125 -1.15625 0.203125zm0.375 -2.09375q0.640625 0 1.1875 -0.328125q0.546875 -0.34375 0.875 -0.921875q0.34375 -0.578125 0.34375 -1.359375q0 -0.78125 -0.34375 -1.359375q-0.328125 -0.578125 -0.875 -0.890625q-0.546875 -0.328125 -1.1875 -0.328125q-0.625 0 -1.171875 0.328125q-0.546875 0.3125 -0.890625 0.890625q-0.328125 0.5625 -0.328125 1.359375q0 0.78125 0.328125 1.375q0.34375 0.59375 0.890625 0.921875q0.546875 0.3125 1.171875 0.3125zm7.022644 1.8125l0 -12.406248l4.359375 0q1.203125 0 2.15625 0.5q0.953125 0.484375 1.515625 1.375q0.5625 0.875 0.5625 2.046873q0 1.15625 -0.5625 2.046875q-0.5625 0.890625 -1.515625 1.390625q-0.953125 0.484375 -2.15625 0.484375l-3.0625 0l0 -2.21875l3.140625 0q0.609375 0 1.015625 -0.234375q0.421875 -0.25 0.625 -0.640625q0.203125 -0.390625 0.203125 -0.828125q0 -0.453125 -0.203125 -0.828125q-0.203125 -0.3906231 -0.625 -0.6249981q-0.40625 -0.25 -1.015625 -0.25l-2.09375 0l0 10.187498l-2.34375 0zm14.008362 0.28125q-1.375 0 -2.453125 -0.609375q-1.0625 -0.625 -1.65625 -1.6875q-0.59375 -1.0625 -0.59375 -2.40625q0 -1.328125 0.59375 -2.390625q0.59375 -1.078125 1.65625 -1.6875q1.078125 -0.609375 2.453125 -0.609375q1.390625 0 2.4375 0.625q1.0625 0.625 1.65625 1.6875q0.609375 1.046875 0.609375 2.375q0 1.34375 -0.609375 2.40625q-0.59375 1.0625 -1.65625 1.6875q-1.046875 0.609375 -2.4375 0.609375zm0 -2.125q0.671875 0 1.203125 -0.296875q0.546875 -0.296875 0.890625 -0.875q0.34375 -0.59375 0.34375 -1.40625q0 -0.8125 -0.34375 -1.375q-0.34375 -0.578125 -0.890625 -0.890625q-0.53125 -0.3125 -1.171875 -0.3125q-0.671875 0 -1.234375 0.3125q-0.5625 0.3125 -0.90625 0.890625q-0.328125 0.5625 -0.328125 1.375q0 0.8125 0.328125 1.40625q0.34375 0.578125 0.90625 0.875q0.5625 0.296875 1.203125 0.296875zm10.62207 2.125q-1.375 0 -2.453125 -0.609375q-1.0625 -0.625 -1.65625 -1.6875q-0.59375 -1.0625 -0.59375 -2.40625q0 -1.328125 0.59375 -2.390625q0.59375 -1.078125 1.65625 -1.6875q1.078125 -0.609375 2.453125 -0.609375q1.390625 0 2.4375 0.625q1.0625 0.625 1.65625 1.6875q0.609375 1.046875 0.609375 2.375q0 1.34375 -0.609375 2.40625q-0.59375 1.0625 -1.65625 1.6875q-1.046875 0.609375 -2.4375 0.609375zm0 -2.125q0.671875 0 1.203125 -0.296875q0.546875 -0.296875 0.890625 -0.875q0.34375 -0.59375 0.34375 -1.40625q0 -0.8125 -0.34375 -1.375q-0.34375 -0.578125 -0.890625 -0.890625q-0.53125 -0.3125 -1.171875 -0.3125q-0.671875 0 -1.234375 0.3125q-0.5625 0.3125 -0.90625 0.890625q-0.328125 0.5625 -0.328125 1.375q0 0.8125 0.328125 1.40625q0.34375 0.578125 0.90625 0.875q0.5625 0.296875 1.203125 0.296875zm6.4033203 1.84375l0 -12.406248l2.265625 0l0 12.406248l-2.265625 0z" fill-rule="nonzero"/><path fill="#4c1130" d="m643.4453 57.902466q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.448669 -2.015625q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm5.7299805 -4.9375l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm11.683044 5.125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.870605 3.890625q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm8.261169 0.171875q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm8.526855 -3.5625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm3.3705444 -3.59375l1.140625 0l0.03125 1.328125q0.640625 -0.765625 1.25 -1.109375q0.625 -0.34375 1.25 -0.34375q1.125 0 1.703125 0.71875q0.578125 0.71875 0.53125 2.15625l-1.265625 0q0.03125 -0.953125 -0.265625 -1.375q-0.296875 -0.421875 -0.875 -0.421875q-0.25 0 -0.515625 0.09375q-0.25 0.078125 -0.515625 0.28125q-0.265625 0.1875 -0.5625 0.5q-0.296875 0.3125 -0.640625 0.75l0 4.609375l-1.265625 0l0 -7.1875zm10.651855 -0.125q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm18.506775 5.0l-0.53125 0q-1.375 0 -2.0625 -0.65625q-0.671875 -0.640625 -0.671875 -1.953125l0 -2.46875q0 -0.34375 -0.078125 -0.625q-0.078125 -0.28125 -0.28125 -0.46875q-0.1875 -0.1875 -0.515625 -0.28125q-0.328125 -0.109375 -0.8125 -0.109375l-0.3125 0l0 -0.984375l0.3125 0q0.515625 0 0.84375 -0.078125q0.328125 -0.09375 0.515625 -0.265625q0.1875 -0.1875 0.25 -0.453125q0.078125 -0.28125 0.078125 -0.640625l0 -1.703125q0 -0.59375 0.140625 -1.078125q0.15625 -0.484375 0.46875 -0.828125q0.328125 -0.34375 0.84375 -0.515625q0.53125 -0.1875 1.28125 -0.1875l0.53125 0l0 1.0l-0.421875 0q-1.65625 0 -1.65625 1.609375l0 1.671875q0 1.734375 -1.515625 1.96875q1.515625 0.140625 1.515625 1.953125l0 2.453125q0 1.640625 1.65625 1.640625l0.421875 0l0 1.0zm8.917419 -6.65625q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm9.44873 0.015625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm9.339294 -0.0625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm5.5268555 -5.5l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm8.495544 1.78125q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm17.850525 2.0625l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm9.26123 1.3125q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.058044 0q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.16748 1.859375q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm2.7611694 -10.265625l0.53125 0q1.375 0 2.046875 0.65625q0.671875 0.640625 0.671875 1.953125l0 1.65625q0 0.34375 0.078125 0.625q0.078125 0.265625 0.28125 0.46875q0.203125 0.1875 0.53125 0.296875q0.328125 0.09375 0.8125 0.09375l0.3125 0l0 0.984375l-0.3125 0q-0.515625 0 -0.859375 0.09375q-0.328125 0.078125 -0.515625 0.265625q-0.1875 0.171875 -0.265625 0.4375q-0.0625 0.265625 -0.0625 0.640625l0 2.515625q0 0.59375 -0.140625 1.078125q-0.140625 0.484375 -0.46875 0.8125q-0.3125 0.34375 -0.84375 0.53125q-0.515625 0.1875 -1.265625 0.1875l-0.53125 0l0 -1.0l0.421875 0q1.65625 0 1.65625 -1.609375l0 -2.484375q0 -1.75 1.515625 -1.953125q-1.53125 -0.171875 -1.53125 -1.96875l0 -1.640625q0 -1.640625 -1.640625 -1.640625l-0.421875 0l0 -1.0z" fill-rule="nonzero"/><path fill="#d9ead3" d="m334.4908 18.114243l0 0c0 -2.45053 1.9865417 -4.4370775 4.4370728 -4.4370775l172.79514 0c1.1768188 0 2.305359 0.46747684 3.1375122 1.2995901c0.8320923 0.83211327 1.2995605 1.960701 1.2995605 3.1374874l0 44.38569c0 2.450531 -1.9865112 4.4370728 -4.4370728 4.4370728l-172.79514 0c-2.450531 0 -4.4370728 -1.9865417 -4.4370728 -4.4370728z" fill-rule="evenodd"/><path stroke="#b6d7a8" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m334.4908 18.114243l0 0c0 -2.45053 1.9865417 -4.4370775 4.4370728 -4.4370775l172.79514 0c1.1768188 0 2.305359 0.46747684 3.1375122 1.2995901c0.8320923 0.83211327 1.2995605 1.960701 1.2995605 3.1374874l0 44.38569c0 2.450531 -1.9865112 4.4370728 -4.4370728 4.4370728l-172.79514 0c-2.450531 0 -4.4370728 -1.9865417 -4.4370728 -4.4370728z" fill-rule="evenodd"/><path fill="#274e13" d="m346.19662 37.447086l0 -12.40625l2.34375 0l0 12.40625l-2.34375 0zm1.296875 -5.234375l0 -2.21875l7.296875 0l0 2.21875l-7.296875 0zm6.25 5.234375l0 -12.40625l2.34375 0l0 12.40625l-2.34375 0zm7.5920715 0l0 -11.234375l2.34375 0l0 11.234375l-2.34375 0zm-3.46875 -10.1875l0 -2.21875l9.28125 0l0 2.21875l-9.28125 0zm13.935028 10.1875l0 -11.234375l2.34375 0l0 11.234375l-2.34375 0zm-3.46875 -10.1875l0 -2.21875l9.28125 0l0 2.21875l-9.28125 0zm11.064178 10.1875l0 -12.40625l4.359375 0q1.203125 0 2.15625 0.5q0.953125 0.484375 1.515625 1.375q0.5625 0.875 0.5625 2.046875q0 1.15625 -0.5625 2.046875q-0.5625 0.890625 -1.515625 1.390625q-0.953125 0.484375 -2.15625 0.484375l-3.0625 0l0 -2.21875l3.140625 0q0.609375 0 1.015625 -0.234375q0.421875 -0.25 0.625 -0.640625q0.203125 -0.390625 0.203125 -0.828125q0 -0.453125 -0.203125 -0.828125q-0.203125 -0.390625 -0.625 -0.625q-0.40625 -0.25 -1.015625 -0.25l-2.09375 0l0 10.1875l-2.34375 0zm10.535431 0l0 -12.40625l4.515625 0q1.25 0 2.171875 0.5q0.9375 0.5 1.453125 1.390625q0.515625 0.875 0.515625 2.03125q0 0.84375 -0.359375 1.546875q-0.34375 0.703125 -0.96875 1.21875q-0.609375 0.5 -1.4375 0.78125q-0.8125 0.28125 -1.75 0.28125l-2.84375 0l0 -2.15625l3.203125 0q0.546875 0 0.9375 -0.21875q0.40625 -0.234375 0.640625 -0.625q0.234375 -0.390625 0.234375 -0.875q0 -0.4375 -0.203125 -0.828125q-0.203125 -0.390625 -0.609375 -0.625q-0.390625 -0.25 -0.96875 -0.25l-2.1875 0l0 10.234375l-2.34375 0zm2.734375 -5.625l2.734375 0l3.84375 5.484375l0 0.140625l-2.671875 0l-3.90625 -5.625zm12.244476 5.90625q-1.375 0 -2.453125 -0.609375q-1.0625 -0.625 -1.65625 -1.6875q-0.59375 -1.0625 -0.59375 -2.40625q0 -1.328125 0.59375 -2.390625q0.59375 -1.078125 1.65625 -1.6875q1.078125 -0.609375 2.453125 -0.609375q1.390625 0 2.4375 0.625q1.0625 0.625 1.65625 1.6875q0.609375 1.046875 0.609375 2.375q0 1.34375 -0.609375 2.40625q-0.59375 1.0625 -1.65625 1.6875q-1.046875 0.609375 -2.4375 0.609375zm0 -2.125q0.671875 0 1.203125 -0.296875q0.546875 -0.296875 0.890625 -0.875q0.34375 -0.59375 0.34375 -1.40625q0 -0.8125 -0.34375 -1.375q-0.34375 -0.578125 -0.890625 -0.890625q-0.53125 -0.3125 -1.171875 -0.3125q-0.671875 0 -1.234375 0.3125q-0.5625 0.3125 -0.90625 0.890625q-0.328125 0.5625 -0.328125 1.375q0 0.8125 0.328125 1.40625q0.34375 0.578125 0.90625 0.875q0.5625 0.296875 1.203125 0.296875zm9.590851 2.125q-1.625 0 -2.453125 -1.0q-0.8125 -1.015625 -0.8125 -2.75l0 -5.375l2.28125 0l0 5.09375q0 0.90625 0.4375 1.421875q0.4375 0.515625 1.140625 0.515625q0.671875 0 1.140625 -0.34375q0.46875 -0.34375 0.71875 -0.90625q0.25 -0.578125 0.25 -1.265625l0 -4.515625l2.265625 0l0 8.84375l-2.125 0l0 -1.109375l-0.140625 0q-0.265625 0.421875 -0.6875 0.734375q-0.40625 0.3125 -0.921875 0.484375q-0.5 0.171875 -1.09375 0.171875zm6.501068 -7.171875l0 -1.953125l1.625 0l0 1.953125l-1.625 0zm4.46875 7.03125q-1.375 0 -2.15625 -0.78125q-0.78125 -0.796875 -0.78125 -2.1875l0 -8.5l2.28125 0l0 8.09375q0 0.640625 0.25 0.9375q0.265625 0.296875 0.859375 0.296875q0.265625 0 0.5 -0.078125q0.25 -0.078125 0.625 -0.296875l0 2.21875q-0.390625 0.140625 -0.78125 0.21875q-0.390625 0.078125 -0.796875 0.078125zm-0.75 -7.03125l0 -1.953125l2.25 0l0 1.953125l-2.25 0zm7.8359375 7.171875q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625z" fill-rule="nonzero"/><path fill="#274e13" d="m352.07162 52.16834q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm7.808075 3.671875l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm9.370575 3.171875q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm8.04245 0.09375l-1.25 0l0 -4.59375q0 -0.828125 -0.3125 -1.234375q-0.3125 -0.40625 -0.890625 -0.40625q-0.25 0 -0.46875 0.0625q-0.21875 0.0625 -0.453125 0.234375q-0.234375 0.171875 -0.515625 0.453125q-0.28125 0.28125 -0.640625 0.71875l0 4.765625l-1.25 0l0 -10.109375l1.25 0l0 2.921875l-0.046875 1.140625q0.296875 -0.359375 0.578125 -0.59375q0.28125 -0.25 0.5625 -0.390625q0.28125 -0.15625 0.578125 -0.21875q0.296875 -0.0625 0.609375 -0.0625q1.078125 0 1.65625 0.65625q0.59375 0.65625 0.59375 1.96875l0 4.6875zm5.16745 -7.3125q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm19.006775 -8.046875l-4.90625 11.640625l-1.1875 0l4.90625 -11.640625l1.1875 0zm7.870575 9.84375q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm8.72995 -3.390625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm8.1987 3.59375l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0zm9.0737 -3.71875q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm5.6362 -5.421875l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm11.683075 5.125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm9.0737 4.0625q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm4.714325 -6.0625l-2.125 0l0 -1.03125l3.390625 0l0 6.15625l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -5.125zm0.4375 -4.046875q0.203125 0 0.375 0.078125q0.1875 0.078125 0.3125 0.21875q0.140625 0.125 0.21875 0.3125q0.078125 0.171875 0.078125 0.375q0 0.203125 -0.078125 0.390625q-0.078125 0.171875 -0.21875 0.3125q-0.125 0.125 -0.3125 0.203125q-0.171875 0.078125 -0.375 0.078125q-0.203125 0 -0.390625 -0.078125q-0.171875 -0.078125 -0.3125 -0.203125q-0.125 -0.140625 -0.203125 -0.3125q-0.078125 -0.1875 -0.078125 -0.390625q0 -0.203125 0.078125 -0.375q0.078125 -0.1875 0.203125 -0.3125q0.140625 -0.140625 0.3125 -0.21875q0.1875 -0.078125 0.390625 -0.078125zm11.433075 6.546875q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm3.0737 -3.59375l1.109375 0l0.046875 1.15625q0.328125 -0.359375 0.609375 -0.609375q0.296875 -0.25 0.578125 -0.390625q0.28125 -0.15625 0.578125 -0.21875q0.296875 -0.0625 0.609375 -0.0625q1.109375 0 1.671875 0.65625q0.578125 0.65625 0.578125 1.96875l0 4.6875l-1.25 0l0 -4.59375q0 -0.84375 -0.3125 -1.234375q-0.3125 -0.40625 -0.9375 -0.40625q-0.234375 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.234375q-0.234375 0.171875 -0.515625 0.453125q-0.265625 0.28125 -0.609375 0.71875l0 4.765625l-1.25 0l0 -7.1875zm13.745575 5.234375q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m204.56693 41.165356l129.92126 -0.8503952" fill-rule="evenodd"/><path stroke="#b7b7b7" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m216.56667 41.08681l117.921524 -0.7718506" fill-rule="evenodd"/><path fill="#b7b7b7" stroke="#b7b7b7" stroke-width="2.0" stroke-linecap="butt" d="m216.54504 37.783417l-9.054367 3.3628006l9.09761 3.243988z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m516.1601 40.307087l105.921265 0" fill-rule="evenodd"/><path stroke="#b7b7b7" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m516.1601 40.307087l93.921265 0" fill-rule="evenodd"/><path fill="#b7b7b7" stroke="#b7b7b7" stroke-width="2.0" stroke-linecap="butt" d="m610.08136 43.61055l9.076172 -3.303463l-9.076172 -3.3034668z" fill-rule="evenodd"/><path fill="#ead1dc" d="m622.084 18.114243l0 0c0 -2.45053 1.9865723 -4.4370775 4.4370728 -4.4370775l244.48016 0c1.1768188 0 2.30542 0.46747684 3.1375122 1.2995901c0.8320923 0.83211327 1.2995605 1.960701 1.2995605 3.1374874l0 44.38569c0 2.450531 -1.9865112 4.4370728 -4.4370728 4.4370728l-244.48016 0c-2.4505005 0 -4.4370728 -1.9865417 -4.4370728 -4.4370728z" fill-rule="evenodd"/><path stroke="#d5a6bd" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m622.084 18.114243l0 0c0 -2.45053 1.9865723 -4.4370775 4.4370728 -4.4370775l244.48016 0c1.1768188 0 2.30542 0.46747684 3.1375122 1.2995901c0.8320923 0.83211327 1.2995605 1.960701 1.2995605 3.1374874l0 44.38569c0 2.450531 -1.9865112 4.4370728 -4.4370728 4.4370728l-244.48016 0c-2.4505005 0 -4.4370728 -1.9865417 -4.4370728 -4.4370728z" fill-rule="evenodd"/><path fill="#4c1130" d="m633.7898 37.447086l0 -12.40625l2.34375 0l0 12.40625l-2.34375 0zm4.8339233 0l0 -8.84375l2.125 0l0 1.109375l0.140625 0q0.40625 -0.640625 1.125 -1.0q0.734375 -0.375 1.578125 -0.375q1.625 0 2.4375 0.984375q0.828125 0.984375 0.828125 2.625l0 5.5l-2.28125 0l0 -5.21875q0 -0.859375 -0.4375 -1.3125q-0.4375 -0.46875 -1.203125 -0.46875q-0.625 0 -1.09375 0.34375q-0.453125 0.328125 -0.703125 0.890625q-0.25 0.5625 -0.25 1.265625l0 4.5l-2.265625 0zm9.428589 -6.890625l0 -1.953125l1.65625 0l0 1.953125l-1.65625 0zm1.578125 6.890625l0 -9.328125q0 -0.984375 0.40625 -1.703125q0.40625 -0.734375 1.140625 -1.125q0.734375 -0.390625 1.734375 -0.390625q0.359375 0 0.71875 0.0625q0.359375 0.046875 0.6875 0.125l0 2.21875q-0.296875 -0.140625 -0.578125 -0.203125q-0.265625 -0.078125 -0.546875 -0.078125q-0.59375 0 -0.953125 0.34375q-0.34375 0.34375 -0.34375 0.953125l0 9.125l-2.265625 0zm2.171875 -6.890625l0 -1.953125l2.265625 0l0 1.953125l-2.265625 0zm7.406128 7.171875q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm5.978943 -0.28125l0 -8.84375l2.125 0l0 1.1875l0.140625 0q0.234375 -0.421875 0.59375 -0.734375q0.375 -0.328125 0.875 -0.515625q0.515625 -0.1875 1.078125 -0.1875q0.34375 0 0.625 0.046875q0.28125 0.046875 0.484375 0.140625l0 2.265625q-0.359375 -0.140625 -0.71875 -0.234375q-0.359375 -0.09375 -0.75 -0.09375q-0.671875 0 -1.171875 0.34375q-0.5 0.328125 -0.765625 0.921875q-0.25 0.578125 -0.25 1.296875l0 4.40625l-2.265625 0zm11.089111 0.28125q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm5.978943 -0.28125l0 -8.84375l2.125 0l0 1.109375l0.140625 0q0.40625 -0.640625 1.125 -1.0q0.734375 -0.375 1.578125 -0.375q1.625 0 2.4375 0.984375q0.828125 0.984375 0.828125 2.625l0 5.5l-2.28125 0l0 -5.21875q0 -0.859375 -0.4375 -1.3125q-0.4375 -0.46875 -1.203125 -0.46875q-0.625 0 -1.09375 0.34375q-0.453125 0.328125 -0.703125 0.890625q-0.25 0.5625 -0.25 1.265625l0 4.5l-2.265625 0zm14.501038 0.28125q-1.34375 0 -2.40625 -0.59375q-1.046875 -0.609375 -1.640625 -1.671875q-0.59375 -1.0625 -0.59375 -2.4375q0 -1.359375 0.59375 -2.421875q0.59375 -1.0625 1.640625 -1.65625q1.0625 -0.609375 2.40625 -0.609375q1.46875 0 2.53125 0.625q1.0625 0.625 1.53125 1.796875l-2.09375 0.859375q-0.265625 -0.59375 -0.78125 -0.875q-0.5 -0.296875 -1.1875 -0.296875q-0.671875 0 -1.21875 0.328125q-0.53125 0.3125 -0.84375 0.890625q-0.3125 0.5625 -0.3125 1.359375q0 0.796875 0.3125 1.390625q0.3125 0.578125 0.84375 0.90625q0.546875 0.3125 1.21875 0.3125q0.765625 0 1.265625 -0.34375q0.5 -0.34375 0.8125 -0.921875l2.03125 0.890625q-0.515625 1.109375 -1.578125 1.796875q-1.0625 0.671875 -2.53125 0.671875zm9.636047 0q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm6.291443 -0.28125l0 -12.40625l4.359375 0q1.203125 0 2.15625 0.5q0.953125 0.484375 1.515625 1.375q0.5625 0.875 0.5625 2.046875q0 1.15625 -0.5625 2.046875q-0.5625 0.890625 -1.515625 1.390625q-0.953125 0.484375 -2.15625 0.484375l-3.0625 0l0 -2.21875l3.140625 0q0.609375 0 1.015625 -0.234375q0.421875 -0.25 0.625 -0.640625q0.203125 -0.390625 0.203125 -0.828125q0 -0.453125 -0.203125 -0.828125q-0.203125 -0.390625 -0.625 -0.625q-0.40625 -0.25 -1.015625 -0.25l-2.09375 0l0 10.1875l-2.34375 0zm14.008362 0.28125q-1.375 0 -2.453125 -0.609375q-1.0625 -0.625 -1.65625 -1.6875q-0.59375 -1.0625 -0.59375 -2.40625q0 -1.328125 0.59375 -2.390625q0.59375 -1.078125 1.65625 -1.6875q1.078125 -0.609375 2.453125 -0.609375q1.390625 0 2.4375 0.625q1.0625 0.625 1.65625 1.6875q0.609375 1.046875 0.609375 2.375q0 1.34375 -0.609375 2.40625q-0.59375 1.0625 -1.65625 1.6875q-1.046875 0.609375 -2.4375 0.609375zm0 -2.125q0.671875 0 1.203125 -0.296875q0.546875 -0.296875 0.890625 -0.875q0.34375 -0.59375 0.34375 -1.40625q0 -0.8125 -0.34375 -1.375q-0.34375 -0.578125 -0.890625 -0.890625q-0.53125 -0.3125 -1.171875 -0.3125q-0.671875 0 -1.234375 0.3125q-0.5625 0.3125 -0.90625 0.890625q-0.328125 0.5625 -0.328125 1.375q0 0.8125 0.328125 1.40625q0.34375 0.578125 0.90625 0.875q0.5625 0.296875 1.203125 0.296875zm10.62207 2.125q-1.375 0 -2.453125 -0.609375q-1.0625 -0.625 -1.65625 -1.6875q-0.59375 -1.0625 -0.59375 -2.40625q0 -1.328125 0.59375 -2.390625q0.59375 -1.078125 1.65625 -1.6875q1.078125 -0.609375 2.453125 -0.609375q1.390625 0 2.4375 0.625q1.0625 0.625 1.65625 1.6875q0.609375 1.046875 0.609375 2.375q0 1.34375 -0.609375 2.40625q-0.59375 1.0625 -1.65625 1.6875q-1.046875 0.609375 -2.4375 0.609375zm0 -2.125q0.671875 0 1.203125 -0.296875q0.546875 -0.296875 0.890625 -0.875q0.34375 -0.59375 0.34375 -1.40625q0 -0.8125 -0.34375 -1.375q-0.34375 -0.578125 -0.890625 -0.890625q-0.53125 -0.3125 -1.171875 -0.3125q-0.671875 0 -1.234375 0.3125q-0.5625 0.3125 -0.90625 0.890625q-0.328125 0.5625 -0.328125 1.375q0 0.8125 0.328125 1.40625q0.34375 0.578125 0.90625 0.875q0.5625 0.296875 1.203125 0.296875zm6.4033813 1.84375l0 -12.40625l2.265625 0l0 12.40625l-2.265625 0z" fill-rule="nonzero"/><path fill="#4c1130" d="m639.2117 53.933964q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.44873 -2.015625q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm5.7299194 -4.9375l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm11.683105 5.125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.870544 3.890625q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm8.26123 0.171875q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm8.526794 -3.5625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm3.3706055 -3.59375l1.140625 0l0.03125 1.328125q0.640625 -0.765625 1.25 -1.109375q0.625 -0.34375 1.25 -0.34375q1.125 0 1.703125 0.71875q0.578125 0.71875 0.53125 2.15625l-1.265625 0q0.03125 -0.953125 -0.265625 -1.375q-0.296875 -0.421875 -0.875 -0.421875q-0.25 0 -0.515625 0.09375q-0.25 0.078125 -0.515625 0.28125q-0.265625 0.1875 -0.5625 0.5q-0.296875 0.3125 -0.640625 0.75l0 4.609375l-1.265625 0l0 -7.1875zm10.651794 -0.125q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm18.506775 5.0l-0.53125 0q-1.375 0 -2.0625 -0.65625q-0.671875 -0.640625 -0.671875 -1.953125l0 -2.46875q0 -0.34375 -0.078125 -0.625q-0.078125 -0.28125 -0.28125 -0.46875q-0.1875 -0.1875 -0.515625 -0.28125q-0.328125 -0.109375 -0.8125 -0.109375l-0.3125 0l0 -0.984375l0.3125 0q0.515625 0 0.84375 -0.078125q0.328125 -0.09375 0.515625 -0.265625q0.1875 -0.1875 0.25 -0.453125q0.078125 -0.28125 0.078125 -0.640625l0 -1.703125q0 -0.59375 0.140625 -1.078125q0.15625 -0.484375 0.46875 -0.828125q0.328125 -0.34375 0.84375 -0.515625q0.53125 -0.1875 1.28125 -0.1875l0.53125 0l0 1.0l-0.421875 0q-1.65625 0 -1.65625 1.609375l0 1.671875q0 1.734375 -1.515625 1.96875q1.515625 0.140625 1.515625 1.953125l0 2.453125q0 1.640625 1.65625 1.640625l0.421875 0l0 1.0zm8.91748 -6.65625q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm9.448669 0.015625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm9.339355 -0.0625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm5.5267944 -5.5l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm8.495605 1.78125q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm19.36615 -1.65625q0 0.890625 -0.25 1.59375q-0.234375 0.703125 -0.703125 1.203125q-0.453125 0.484375 -1.109375 0.75q-0.640625 0.25 -1.453125 0.25q-0.640625 0 -1.3125 -0.109375q-0.65625 -0.125 -1.3125 -0.390625l0 -9.6875l1.25 0l0 2.78125l-0.0625 1.328125q0.546875 -0.71875 1.15625 -1.015625q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.359375 0.140625 0.734375 0.234375q0.390625 0.078125 0.734375 0.078125q0.421875 0 0.8125 -0.125q0.390625 -0.140625 0.6875 -0.453125q0.296875 -0.328125 0.46875 -0.859375q0.1875 -0.53125 0.1875 -1.3125zm7.8080444 3.671875l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm9.26123 1.3125q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.448669 -2.015625q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.308105 0.84375l-4.28125 0l0 -1.171875l4.28125 0l0 1.171875zm8.151794 3.3125l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0zm9.19873 -3.65625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm2.7142944 0.15625q0 -0.921875 0.25 -1.625q0.25 -0.71875 0.703125 -1.203125q0.46875 -0.5 1.109375 -0.75q0.65625 -0.25 1.453125 -0.25q0.34375 0 0.671875 0.046875q0.328125 0.03125 0.65625 0.125l0 -3.015625l1.25 0l0 10.109375l-1.109375 0l-0.046875 -1.359375q-0.515625 0.765625 -1.125 1.125q-0.609375 0.359375 -1.328125 0.359375q-0.609375 0 -1.078125 -0.25q-0.46875 -0.265625 -0.78125 -0.734375q-0.3125 -0.46875 -0.46875 -1.125q-0.15625 -0.65625 -0.15625 -1.453125zm1.265625 -0.078125q0 1.296875 0.375 1.9375q0.390625 0.640625 1.09375 0.640625q0.484375 0 1.0 -0.421875q0.53125 -0.421875 1.109375 -1.25l0 -3.34375q-0.3125 -0.140625 -0.6875 -0.203125q-0.359375 -0.078125 -0.734375 -0.078125q-1.015625 0 -1.59375 0.65625q-0.5625 0.65625 -0.5625 2.0625zm13.22998 -0.453125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm5.7299194 -4.9375l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm6.1049805 -1.265625l0.53125 0q1.375 0 2.046875 0.65625q0.671875 0.640625 0.671875 1.953125l0 1.65625q0 0.34375 0.078125 0.625q0.078125 0.265625 0.28125 0.46875q0.203125 0.1875 0.53125 0.296875q0.328125 0.09375 0.8125 0.09375l0.3125 0l0 0.984375l-0.3125 0q-0.515625 0 -0.859375 0.09375q-0.328125 0.078125 -0.515625 0.265625q-0.1875 0.171875 -0.265625 0.4375q-0.0625 0.265625 -0.0625 0.640625l0 2.515625q0 0.59375 -0.140625 1.078125q-0.140625 0.484375 -0.46875 0.8125q-0.3125 0.34375 -0.84375 0.53125q-0.515625 0.1875 -1.265625 0.1875l-0.53125 0l0 -1.0l0.421875 0q1.65625 0 1.65625 -1.609375l0 -2.484375q0 -1.75 1.515625 -1.953125q-1.53125 -0.171875 -1.53125 -1.96875l0 -1.640625q0 -1.640625 -1.640625 -1.640625l-0.421875 0l0 -1.0z" fill-rule="nonzero"/><path fill="#c9daf8" d="m2.5485563 9.969208l0 0c0 -3.7881055 3.070866 -6.8589716 6.8589716 -6.8589716l190.84898 0c1.819107 0 3.5637207 0.72263956 4.8500214 2.0089464c1.2863159 1.2863064 2.0089417 3.0309124 2.0089417 4.850025l0 68.61276c0 3.7881088 -3.0708618 6.8589783 -6.858963 6.8589783l-190.84898 0l0 0c-3.7881055 0 -6.8589716 -3.0708694 -6.8589716 -6.8589783z" fill-rule="evenodd"/><path stroke="#a4c2f4" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m2.5485563 9.969208l0 0c0 -3.7881055 3.070866 -6.8589716 6.8589716 -6.8589716l190.84898 0c1.819107 0 3.5637207 0.72263956 4.8500214 2.0089464c1.2863159 1.2863064 2.0089417 3.0309124 2.0089417 4.850025l0 68.61276c0 3.7881088 -3.0708618 6.8589783 -6.858963 6.8589783l-190.84898 0l0 0c-3.7881055 0 -6.8589716 -3.0708694 -6.8589716 -6.8589783z" fill-rule="evenodd"/><path fill="#1c4587" d="m20.885605 32.69684q-1.328125 0 -2.515625 -0.484375q-1.1875 -0.484375 -2.109375 -1.34375q-0.90624905 -0.875 -1.421874 -2.0625q-0.5 -1.1875 -0.5 -2.59375q0 -1.40625 0.5 -2.59375q0.515625 -1.1875 1.421874 -2.046875q0.90625 -0.875 2.09375 -1.359375q1.1875 -0.484375 2.53125 -0.484375q1.484375 0 2.6875 0.53125q1.203125 0.515625 2.046875 1.4375l-1.609375 1.5625q-0.40625 -0.421875 -0.875 -0.703125q-0.46875 -0.296875 -1.03125 -0.453125q-0.546875 -0.15625 -1.234375 -0.15625q-0.84375 0 -1.609375 0.3125q-0.75 0.296875 -1.328125 0.859375q-0.578125 0.5625 -0.90625 1.34375q-0.328125 0.78125 -0.328125 1.75q0 0.96875 0.328125 1.75q0.328125 0.78125 0.90625 1.34375q0.578125 0.5625 1.34375 0.875q0.765625 0.296875 1.625 0.296875q0.875 0 1.546875 -0.234375q0.671875 -0.25 1.140625 -0.65625q0.484375 -0.421875 0.765625 -0.9375q0.296875 -0.515625 0.375 -1.046875l-3.890625 0l0 -2.0l6.078125 0q0.046875 0.171875 0.078125 0.53125q0.046875 0.34375 0.046875 0.5625l0 0l0 0l0 0q0 1.375 -0.46875 2.484375q-0.453125 1.109375 -1.28125 1.90625q-0.8125 0.78125 -1.953125 1.203125q-1.125 0.40625 -2.453125 0.40625zm10.485352 0q-0.9375 0 -1.65625 -0.375q-0.71875 -0.375 -1.140625 -1.046875q-0.40625 -0.671875 -0.40625 -1.5625q0 -0.921875 0.46875 -1.578125q0.484375 -0.65625 1.28125 -1.015625q0.8125 -0.375 1.796875 -0.375q0.546875 0 0.984375 0.0625q0.4375 0.0625 0.78125 0.15625q0.34375 0.078125 0.578125 0.1875l0 -0.390625q0 -0.703125 -0.546875 -1.15625q-0.53125 -0.46875 -1.46875 -0.46875q-0.625 0 -1.203125 0.296875q-0.578125 0.28125 -0.953125 0.75l-1.46875 -1.140625q0.4375 -0.5625 1.0 -0.953125q0.578125 -0.390625 1.265625 -0.578125q0.703125 -0.203125 1.46875 -0.203125q2.03125 0 3.078125 0.9375q1.0625 0.921875 1.0625 2.734375l0 5.4375l-2.234375 0l0 -0.90625l-0.140625 0q-0.25 0.3125 -0.609375 0.59375q-0.359375 0.265625 -0.84375 0.421875q-0.484375 0.171875 -1.09375 0.171875zm0.53125 -1.765625q0.703125 0 1.171875 -0.296875q0.484375 -0.3125 0.734375 -0.796875q0.25 -0.484375 0.25 -1.03125q-0.390625 -0.1875 -0.875 -0.296875q-0.484375 -0.109375 -0.984375 -0.109375q-1.0 0 -1.390625 0.390625q-0.375 0.375 -0.375 0.921875q0 0.515625 0.375 0.875q0.375 0.34375 1.09375 0.34375zm5.537445 -5.40625l0 -1.953125l1.625 0l0 1.953125l-1.625 0zm4.46875 7.03125q-1.375 0 -2.15625 -0.78125q-0.78125 -0.796875 -0.78125 -2.1875l0 -8.5l2.28125 0l0 8.09375q0 0.640625 0.25 0.9375q0.265625 0.296875 0.859375 0.296875q0.265625 0 0.5 -0.078125q0.25 -0.078125 0.625 -0.296875l0 2.21875q-0.390625 0.140625 -0.78125 0.21875q-0.390625 0.078125 -0.796875 0.078125zm-0.75 -7.03125l0 -1.953125l2.25 0l0 1.953125l-2.25 0zm7.8359222 7.171875q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm7.791443 -0.28125l-2.796875 -8.84375l2.546875 0l1.515625 5.734375l0.125 0l1.765625 -5.734375l2.328125 0l1.765625 5.734375l0.125 0l1.515625 -5.734375l2.515625 0l-2.828125 8.84375l-2.4375 0l-1.796875 -5.71875l-0.125 0l-1.78125 5.71875l-2.4375 0zm15.149826 0.28125q-0.9375 0 -1.65625 -0.375q-0.71875 -0.375 -1.140625 -1.046875q-0.40625 -0.671875 -0.40625 -1.5625q0 -0.921875 0.46875 -1.578125q0.484375 -0.65625 1.28125 -1.015625q0.8125 -0.375 1.796875 -0.375q0.546875 0 0.984375 0.0625q0.4375 0.0625 0.78125 0.15625q0.34375 0.078125 0.578125 0.1875l0 -0.390625q0 -0.703125 -0.546875 -1.15625q-0.53125 -0.46875 -1.46875 -0.46875q-0.625 0 -1.203125 0.296875q-0.578125 0.28125 -0.953125 0.75l-1.46875 -1.140625q0.4375 -0.5625 1.0 -0.953125q0.578125 -0.390625 1.265625 -0.578125q0.703125 -0.203125 1.46875 -0.203125q2.03125 0 3.078125 0.9375q1.0625 0.921875 1.0625 2.734375l0 5.4375l-2.234375 0l0 -0.90625l-0.140625 0q-0.25 0.3125 -0.609375 0.59375q-0.359375 0.265625 -0.84375 0.421875q-0.484375 0.171875 -1.09375 0.171875zm0.53125 -1.765625q0.703125 0 1.171875 -0.296875q0.484375 -0.3125 0.734375 -0.796875q0.25 -0.484375 0.25 -1.03125q-0.390625 -0.1875 -0.875 -0.296875q-0.484375 -0.109375 -0.984375 -0.109375q-1.0 0 -1.390625 0.390625q-0.375 0.375 -0.375 0.921875q0 0.515625 0.375 0.875q0.375 0.34375 1.09375 0.34375zm9.702225 4.828125q-0.046875 0.125 -0.09375 0.21875q-0.03125 0.09375 -0.078125 0.1875l-2.4375 0q0.0625 -0.140625 0.265625 -0.59375q0.203125 -0.4375 0.34375 -0.75q0.09375 -0.203125 0.234375 -0.53125q0.140625 -0.328125 0.28125 -0.65625q0.15625 -0.3125 0.25 -0.484375l1.328125 -2.96875l0.46875 -1.109375l2.203125 -5.5l2.53125 0l-4.5625 10.5q-0.1875 0.453125 -0.34375 0.78125q-0.140625 0.328125 -0.234375 0.546875q-0.078125 0.21875 -0.15625 0.359375zm-0.59375 -3.484375l-3.859375 -8.703125l2.59375 0l2.28125 5.5l0.265625 0l-1.28125 3.203125z" fill-rule="nonzero"/><path fill="#1c4587" d="m20.479355 50.855587l-1.25 0l0 -4.59375q0 -0.828125 -0.3125 -1.234375q-0.3125 -0.40625 -0.890625 -0.40625q-0.25 0 -0.46875 0.0625q-0.21875 0.0625 -0.453125 0.234375q-0.234375 0.171875 -0.515625 0.453125q-0.28125 0.28125 -0.64062405 0.71875l0 4.765625l-1.25 0l0 -10.109375l1.25 0l0 2.921875l-0.046875 1.140625q0.29687405 -0.359375 0.57812405 -0.59375q0.28125 -0.25 0.5625 -0.390625q0.28125 -0.15625 0.578125 -0.21875q0.296875 -0.0625 0.609375 -0.0625q1.078125 0 1.65625 0.65625q0.59375 0.65625 0.59375 1.96875l0 4.6875zm8.54245 -3.65625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm8.7612 1.640625q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.16745 1.859375q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm2.2612 -7.09375l1.109375 0l0.046875 1.15625q0.328125 -0.359375 0.609375 -0.609375q0.296875 -0.25 0.578125 -0.390625q0.28125 -0.15625 0.578125 -0.21875q0.296875 -0.0625 0.609375 -0.0625q1.109375 0 1.671875 0.65625q0.578125 0.65625 0.578125 1.96875l0 4.6875l-1.25 0l0 -4.59375q0 -0.84375 -0.3125 -1.234375q-0.3125 -0.40625 -0.9375 -0.40625q-0.234375 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.234375q-0.234375 0.171875 -0.515625 0.453125q-0.265625 0.28125 -0.609375 0.71875l0 4.765625l-1.25 0l0 -7.1875zm12.683075 7.1875l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm8.6987 3.265625l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0zm9.0112 -3.96875q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm6.16745 -3.15625q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm19.30365 -1.90625q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm9.7612 4.15625l-1.65625 0l-1.9375 -2.734375l-1.921875 2.734375l-1.609375 0l2.78125 -3.609375l-2.65625 -3.578125l1.59375 0l1.890625 2.765625l1.859375 -2.765625l1.53125 0l-2.6875 3.609375l2.8125 3.578125zm6.1987 0l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm8.6987 3.265625l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0zm9.0737 -3.71875q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm5.6362 -5.421875l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm11.683075 5.125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm6.10495 1.90625q0.25 0 0.46875 0.09375q0.21875 0.09375 0.375 0.265625q0.15625 0.15625 0.25 0.375q0.09375 0.21875 0.09375 0.46875q0 0.234375 -0.09375 0.453125q-0.09375 0.21875 -0.25 0.375q-0.15625 0.15625 -0.375 0.25q-0.21875 0.09375 -0.46875 0.09375q-0.25 0 -0.46875 -0.09375q-0.203125 -0.09375 -0.375 -0.25q-0.15625 -0.15625 -0.25 -0.375q-0.09375 -0.21875 -0.09375 -0.453125q0 -0.25 0.09375 -0.46875q0.09375 -0.21875 0.25 -0.375q0.171875 -0.171875 0.375 -0.265625q0.21875 -0.09375 0.46875 -0.09375zm10.8237 1.984375q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm8.72995 -3.390625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm8.1987 3.59375l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0z" fill-rule="nonzero"/><path fill="#1c4587" d="m20.83873 65.13684q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.68749905 -0.125l0 3.015625l-1.25 0l0 -10.125004l1.109375 0l0.078125 1.203125q0.54687405 -0.734375 1.156249 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.6562538 0.15625 1.4687538zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.4687538 -0.265625 -0.7968788q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.60937405 0.7031288l0 3.484375q0.34374905 0.140625 0.71874905 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm9.4487 0.015625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.5312538q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875038 0.234375 1.5625038zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5000038 -0.421875 -0.8281288q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.8437538q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm3.370575 -3.5937538l1.140625 0l0.03125 1.328125q0.640625 -0.765625 1.25 -1.109375q0.625 -0.34375 1.25 -0.34375q1.125 0 1.703125 0.71875q0.578125 0.71875 0.53125 2.1562538l-1.265625 0q0.03125 -0.9531288 -0.265625 -1.3750038q-0.296875 -0.421875 -0.875 -0.421875q-0.25 0 -0.515625 0.09375q-0.25 0.078125 -0.515625 0.28125q-0.265625 0.1875 -0.5625 0.5q-0.296875 0.3125 -0.640625 0.7500038l0 4.609375l-1.265625 0l0 -7.187504zm13.558075 7.093754q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.7500038l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.6562538q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm5.151825 -7.218754q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.250004q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm19.756775 0l-1.59375 0l0 2.0625l-1.265625 0l0 -2.0625l-4.5 0l0 -1.09375l3.984375 -6.203129l1.78125 0l0 6.203129l1.59375 0l0 1.09375zm-2.859375 -6.093754l-3.265625 5.000004l3.265625 0l0 -5.000004zm10.91745 6.093754l-1.59375 0l0 2.0625l-1.265625 0l0 -2.0625l-4.5 0l0 -1.09375l3.984375 -6.203129l1.78125 0l0 6.203129l1.59375 0l0 1.09375zm-2.859375 -6.093754l-3.265625 5.000004l3.265625 0l0 -5.000004zm10.276825 5.312504q0 0.625 -0.25 1.171875q-0.25 0.53125 -0.75 0.9375q-0.5 0.390625 -1.265625 0.625q-0.75 0.234375 -1.765625 0.234375q-0.546875 0 -1.0 -0.03125q-0.4375 -0.03125 -0.828125 -0.09375l0 -1.109375q0.453125 0.078125 0.9375 0.125q0.5 0.03125 1.015625 0.03125q0.703125 0 1.1875 -0.125q0.5 -0.125 0.8125 -0.359375q0.328125 -0.234375 0.46875 -0.5625q0.140625 -0.34375 0.140625 -0.765625q0 -0.390625 -0.171875 -0.671875q-0.171875 -0.296875 -0.484375 -0.484375q-0.3125 -0.1875 -0.75 -0.28125q-0.421875 -0.109375 -0.9375 -0.109375l-1.078125 0l0 -1.0156288l1.09375 0q0.421875 0 0.765625 -0.109375q0.34375 -0.109375 0.59375 -0.3125q0.25 -0.21875 0.375 -0.515625q0.140625 -0.3125 0.140625 -0.703125q0 -0.75 -0.46875 -1.09375q-0.453125 -0.34375 -1.34375 -0.34375q-0.46875 0 -0.96875 0.09375q-0.5 0.09375 -1.078125 0.28125l0 -1.09375q0.25 -0.078125 0.515625 -0.140625q0.28125 -0.078125 0.546875 -0.125q0.28125 -0.046875 0.546875 -0.0625q0.28125 -0.03125 0.53125 -0.03125q0.75 0 1.3125 0.171875q0.5625 0.15625 0.9375 0.453125q0.390625 0.296875 0.578125 0.734375q0.1875 0.421875 0.1875 0.96875q0 0.796875 -0.40625 1.34375q-0.40625 0.53125 -1.125 0.859375q0.359375 0.0625 0.71875 0.23437881q0.359375 0.171875 0.640625 0.4375q0.28125 0.265625 0.453125 0.640625q0.171875 0.359375 0.171875 0.796875z" fill-rule="nonzero"/><path fill="#c9daf8" d="m0 6.858971l0 0c0 -3.788105 3.070866 -6.858971 6.858971 -6.858971l190.84898 0c1.819107 0 3.5637207 0.72263956 4.8500214 2.0089462c1.2863007 1.2863066 2.0089417 3.0309126 2.0089417 4.850025l0 68.61277c0 3.7881012 -3.0708618 6.8589706 -6.858963 6.8589706l-190.84898 0l0 0c-3.788105 0 -6.858971 -3.0708694 -6.858971 -6.8589706z" fill-rule="evenodd"/><path stroke="#a4c2f4" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m0 6.858971l0 0c0 -3.788105 3.070866 -6.858971 6.858971 -6.858971l190.84898 0c1.819107 0 3.5637207 0.72263956 4.8500214 2.0089462c1.2863007 1.2863066 2.0089417 3.0309126 2.0089417 4.850025l0 68.61277c0 3.7881012 -3.0708618 6.8589706 -6.858963 6.8589706l-190.84898 0l0 0c-3.788105 0 -6.858971 -3.0708694 -6.858971 -6.8589706z" fill-rule="evenodd"/><path fill="#1c4587" d="m18.33705 29.586603q-1.328125 0 -2.515625 -0.484375q-1.1875 -0.484375 -2.109375 -1.34375q-0.90625 -0.875 -1.421875 -2.0625q-0.5 -1.1875 -0.5 -2.59375q0 -1.40625 0.5 -2.59375q0.515625 -1.1875 1.421875 -2.046875q0.90625 -0.875 2.09375 -1.359375q1.1875 -0.484375 2.53125 -0.484375q1.484375 0 2.6875 0.53125q1.203125 0.515625 2.046875 1.4375l-1.609375 1.5625q-0.40625 -0.421875 -0.875 -0.703125q-0.46875 -0.296875 -1.03125 -0.453125q-0.546875 -0.15625 -1.234375 -0.15625q-0.84375 0 -1.609375 0.3125q-0.75 0.296875 -1.328125 0.859375q-0.578125 0.5625 -0.90625 1.34375q-0.328125 0.78125 -0.328125 1.75q0 0.96875 0.328125 1.75q0.328125 0.78125 0.90625 1.34375q0.578125 0.5625 1.34375 0.875q0.765625 0.296875 1.625 0.296875q0.875 0 1.546875 -0.234375q0.671875 -0.25 1.140625 -0.65625q0.484375 -0.421875 0.765625 -0.9375q0.296875 -0.515625 0.375 -1.046875l-3.890625 0l0 -2.0l6.078125 0q0.046875 0.171875 0.078125 0.53125q0.046875 0.34375 0.046875 0.5625l0 0l0 0l0 0q0 1.375 -0.46875 2.484375q-0.453125 1.109375 -1.28125 1.90625q-0.8125 0.78125 -1.953125 1.203125q-1.125 0.40625 -2.453125 0.40625zm10.485352 0q-0.9375 0 -1.65625 -0.375q-0.71875 -0.375 -1.140625 -1.046875q-0.40625 -0.671875 -0.40625 -1.5625q0 -0.921875 0.46875 -1.578125q0.484375 -0.65625 1.28125 -1.015625q0.8125 -0.375 1.796875 -0.375q0.546875 0 0.984375 0.0625q0.4375 0.0625 0.78125 0.15625q0.34375 0.078125 0.578125 0.1875l0 -0.390625q0 -0.703125 -0.546875 -1.15625q-0.53125 -0.46875 -1.46875 -0.46875q-0.625 0 -1.203125 0.296875q-0.578125 0.28125 -0.953125 0.75l-1.46875 -1.140625q0.4375 -0.5625 1.0 -0.953125q0.578125 -0.390625 1.265625 -0.578125q0.703125 -0.203125 1.46875 -0.203125q2.03125 0 3.078123 0.9375q1.0625 0.921875 1.0625 2.734375l0 5.4375l-2.234373 0l0 -0.90625l-0.140625 0q-0.25 0.3125 -0.609375 0.59375q-0.359375 0.265625 -0.84375 0.421875q-0.484375 0.171875 -1.09375 0.171875zm0.53125 -1.765625q0.703125 0 1.171875 -0.296875q0.484375 -0.3125 0.734375 -0.796875q0.25 -0.484375 0.25 -1.03125q-0.390625 -0.1875 -0.875 -0.296875q-0.484375 -0.109375 -0.984375 -0.109375q-1.0 0 -1.390625 0.390625q-0.375 0.375 -0.375 0.921875q0 0.515625 0.375 0.875q0.375 0.34375 1.09375 0.34375zm5.537443 -5.40625l0 -1.953125l1.625 0l0 1.953125l-1.625 0zm4.46875 7.03125q-1.375 0 -2.15625 -0.78125q-0.78125 -0.796875 -0.78125 -2.1875l0 -8.5l2.28125 0l0 8.09375q0 0.640625 0.25 0.9375q0.265625 0.296875 0.859375 0.296875q0.265625 0 0.5 -0.078125q0.25 -0.078125 0.625 -0.296875l0 2.21875q-0.390625 0.140625 -0.78125 0.21875q-0.390625 0.078125 -0.796875 0.078125zm-0.75 -7.03125l0 -1.953125l2.25 0l0 1.953125l-2.25 0zm7.8359222 7.171875q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm7.791443 -0.28125l-2.796875 -8.84375l2.546875 0l1.515625 5.734375l0.125 0l1.765625 -5.734375l2.328125 0l1.765625 5.734375l0.125 0l1.515625 -5.734375l2.5156288 0l-2.8281288 8.84375l-2.4375 0l-1.796875 -5.71875l-0.125 0l-1.78125 5.71875l-2.4375 0zm15.14983 0.28125q-0.9375 0 -1.65625 -0.375q-0.71875 -0.375 -1.140625 -1.046875q-0.40625 -0.671875 -0.40625 -1.5625q0 -0.921875 0.46875 -1.578125q0.484375 -0.65625 1.28125 -1.015625q0.8125 -0.375 1.796875 -0.375q0.546875 0 0.984375 0.0625q0.4375 0.0625 0.78125 0.15625q0.34375 0.078125 0.578125 0.1875l0 -0.390625q0 -0.703125 -0.546875 -1.15625q-0.53125 -0.46875 -1.46875 -0.46875q-0.625 0 -1.203125 0.296875q-0.578125 0.28125 -0.953125 0.75l-1.46875 -1.140625q0.4375 -0.5625 1.0 -0.953125q0.578125 -0.390625 1.265625 -0.578125q0.703125 -0.203125 1.46875 -0.203125q2.03125 0 3.078125 0.9375q1.0625 0.921875 1.0625 2.734375l0 5.4375l-2.234375 0l0 -0.90625l-0.140625 0q-0.25 0.3125 -0.609375 0.59375q-0.359375 0.265625 -0.84375 0.421875q-0.484375 0.171875 -1.09375 0.171875zm0.53125 -1.765625q0.703125 0 1.171875 -0.296875q0.484375 -0.3125 0.734375 -0.796875q0.25 -0.484375 0.25 -1.03125q-0.390625 -0.1875 -0.875 -0.296875q-0.484375 -0.109375 -0.984375 -0.109375q-1.0 0 -1.390625 0.390625q-0.375 0.375 -0.375 0.921875q0 0.515625 0.375 0.875q0.375 0.34375 1.09375 0.34375zm9.702225 4.828123q-0.046875 0.125 -0.09375 0.21875q-0.03125 0.09375 -0.078125 0.1875l-2.4375 0q0.0625 -0.140625 0.265625 -0.59375q0.203125 -0.4375 0.34375 -0.7499981q0.09375 -0.203125 0.234375 -0.53125q0.140625 -0.328125 0.28125 -0.65625q0.15625 -0.3125 0.25 -0.484375l1.328125 -2.96875l0.46875 -1.109375l2.203125 -5.5l2.53125 0l-4.5625 10.5q-0.1875 0.453125 -0.34375 0.78125q-0.140625 0.3281231 -0.234375 0.5468731q-0.078125 0.21875 -0.15625 0.359375zm-0.59375 -3.484373l-3.859375 -8.703125l2.59375 0l2.28125 5.5l0.265625 0l-1.28125 3.203125z" fill-rule="nonzero"/><path fill="#1c4587" d="m17.9308 47.74535l-1.25 0l0 -4.59375q0 -0.828125 -0.3125 -1.234375q-0.3125 -0.40625 -0.890625 -0.40625q-0.25 0 -0.46875 0.0625q-0.21875 0.0625 -0.453125 0.234375q-0.234375 0.171875 -0.515625 0.453125q-0.28125 0.28125 -0.640625 0.71875l0 4.765625l-1.25 0l0 -10.109375l1.25 0l0 2.921875l-0.046875 1.140625q0.296875 -0.359375 0.578125 -0.59375q0.28125 -0.25 0.5625 -0.390625q0.28125 -0.15625 0.578125 -0.21875q0.296875 -0.0625 0.609375 -0.0625q1.078125 0 1.65625 0.65625q0.59375 0.65625 0.59375 1.96875l0 4.6875zm8.54245 -3.65625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm8.761198 1.640625q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6874981 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3124981 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.5468731 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9374981 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.5312481 -0.078125 -0.9062481 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.6406231 0.1875 1.0624981 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.16745 1.859375q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm2.2612 -7.09375l1.109375 0l0.046875 1.15625q0.328125 -0.359375 0.609375 -0.609375q0.296875 -0.25 0.578125 -0.390625q0.28125 -0.15625 0.578125 -0.21875q0.296875 -0.0625 0.609375 -0.0625q1.109375 0 1.671875 0.65625q0.578125 0.65625 0.578125 1.96875l0 4.6875l-1.25 0l0 -4.59375q0 -0.84375 -0.3125 -1.234375q-0.3125 -0.40625 -0.9375 -0.40625q-0.234375 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.234375q-0.234375 0.171875 -0.515625 0.453125q-0.265625 0.28125 -0.609375 0.71875l0 4.765625l-1.25 0l0 -7.1875zm12.683075 7.1875l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm8.698704 3.265625l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.3906288 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.3281288 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0zm9.0112 -3.96875q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm6.16745 -3.15625q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm19.30365 -1.90625q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm9.7612 4.15625l-1.65625 0l-1.9375 -2.734375l-1.921875 2.734375l-1.609375 0l2.78125 -3.609375l-2.65625 -3.578125l1.59375 0l1.890625 2.765625l1.859375 -2.765625l1.53125 0l-2.6875 3.609375l2.8125 3.578125zm6.1987 0l-0.03125 -0.96875q-0.59375 0.578125 -1.203125 0.84375q-0.59375 0.25 -1.265625 0.25q-0.609375 0 -1.046875 -0.15625q-0.4375 -0.15625 -0.71875 -0.421875q-0.28125 -0.28125 -0.421875 -0.65625q-0.125 -0.375 -0.125 -0.8125q0 -1.078125 0.796875 -1.6875q0.8125 -0.609375 2.390625 -0.609375l1.484375 0l0 -0.640625q0 -0.625 -0.40625 -1.0q-0.40625 -0.390625 -1.25 -0.390625q-0.609375 0 -1.203125 0.140625q-0.578125 0.125 -1.21875 0.375l0 -1.125q0.25 -0.078125 0.53125 -0.15625q0.296875 -0.09375 0.609375 -0.15625q0.328125 -0.0625 0.671875 -0.09375q0.359375 -0.046875 0.71875 -0.046875q0.640625 0 1.15625 0.140625q0.53125 0.140625 0.890625 0.4375q0.359375 0.296875 0.546875 0.75q0.203125 0.4375 0.203125 1.03125l0 4.953125l-1.109375 0zm-0.140625 -3.265625l-1.578125 0q-0.46875 0 -0.8125 0.09375q-0.328125 0.09375 -0.546875 0.265625q-0.21875 0.171875 -0.328125 0.40625q-0.09375 0.234375 -0.09375 0.546875q0 0.203125 0.0625 0.390625q0.0625 0.1875 0.203125 0.34375q0.15625 0.140625 0.375 0.234375q0.234375 0.078125 0.5625 0.078125q0.4375 0 0.984375 -0.265625q0.5625 -0.265625 1.171875 -0.828125l0 -1.265625zm8.6987 3.265625l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0zm9.0737 -3.71875q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm5.6362 -5.421875l-2.125 0l0 -1.015625l3.390625 0l0 9.078125l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -8.0625zm11.683075 5.125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm6.10495 1.90625q0.25 0 0.46875 0.09375q0.21875 0.09375 0.375 0.265625q0.15625 0.15625 0.25 0.375q0.09375 0.21875 0.09375 0.46875q0 0.234375 -0.09375 0.453125q-0.09375 0.21875 -0.25 0.375q-0.15625 0.15625 -0.375 0.25q-0.21875 0.09375 -0.46875 0.09375q-0.25 0 -0.46875 -0.09375q-0.203125 -0.09375 -0.375 -0.25q-0.15625 -0.15625 -0.25 -0.375q-0.09375 -0.21875 -0.09375 -0.453125q0 -0.25 0.09375 -0.46875q0.09375 -0.21875 0.25 -0.375q0.171875 -0.171875 0.375 -0.265625q0.21875 -0.09375 0.46875 -0.09375zm10.8237 1.984375q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm8.72995 -3.390625q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm8.1987 3.59375l0 -5.15625q0 -0.34375 -0.03125 -0.546875q-0.015625 -0.21875 -0.078125 -0.34375q-0.046875 -0.125 -0.125 -0.171875q-0.078125 -0.0625 -0.203125 -0.0625q-0.140625 0 -0.265625 0.09375q-0.125 0.078125 -0.265625 0.28125q-0.140625 0.1875 -0.3125 0.515625q-0.15625 0.3125 -0.390625 0.78125l0 4.609375l-1.140625 0l0 -5.03125q0 -0.390625 -0.03125 -0.625q-0.015625 -0.25 -0.078125 -0.375q-0.046875 -0.140625 -0.140625 -0.1875q-0.078125 -0.0625 -0.203125 -0.0625q-0.125 0 -0.25 0.078125q-0.109375 0.0625 -0.25 0.25q-0.125 0.1875 -0.296875 0.515625q-0.171875 0.328125 -0.40625 0.828125l0 4.609375l-1.15625 0l0 -7.1875l0.953125 0l0.0625 1.375q0.1875 -0.40625 0.359375 -0.6875q0.171875 -0.296875 0.359375 -0.46875q0.1875 -0.1875 0.390625 -0.265625q0.21875 -0.078125 0.46875 -0.078125q0.59375 0 0.890625 0.375q0.296875 0.375 0.296875 1.171875q0.171875 -0.375 0.328125 -0.65625q0.171875 -0.296875 0.359375 -0.484375q0.1875 -0.203125 0.421875 -0.296875q0.234375 -0.109375 0.53125 -0.109375q1.34375 0 1.34375 2.078125l0 5.234375l-1.140625 0z" fill-rule="nonzero"/><path fill="#1c4587" d="m18.290174 62.0266q0 0.953125 -0.265625 1.671875q-0.265625 0.7187538 -0.75 1.1875038q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125004l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.4843788q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875038 0.578125 -2.0625038zm9.4487 0.015625q0 0.84375 -0.25 1.546875q-0.234375 0.6875038 -0.671875 1.1875038q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.1562538q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.8281288q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.3750038 0.375 -0.8593788q0.125 -0.484375 0.125 -1.015625zm3.370575 -3.59375l1.140625 0l0.03125 1.328125q0.640625 -0.765625 1.25 -1.109375q0.625 -0.34375 1.2499981 -0.34375q1.125 0 1.703125 0.71875q0.578125 0.71875 0.53125 2.15625l-1.265625 0q0.03125 -0.953125 -0.265625 -1.375q-0.296875 -0.421875 -0.875 -0.421875q-0.2499981 0 -0.5156231 0.09375q-0.25 0.078125 -0.515625 0.28125q-0.265625 0.1875 -0.5625 0.5q-0.296875 0.3125 -0.640625 0.75l0 4.609379l-1.265625 0l0 -7.187504zm13.558073 7.093754q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.8750038l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.7656288 0.40625 1.1562538q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm5.151825 -7.218754q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.234375q0.15625 0.15625 0.234375 0.359375q0.09375 0.1875 0.09375 0.40625q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.15625 -0.34375 0.25q-0.203125 0.078125 -0.421875 0.078125q-0.234375 0 -0.4375 -0.078125q-0.1875 -0.09375 -0.34375 -0.25q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.40625q0.09375 -0.203125 0.234375 -0.359375q0.15625 -0.15625 0.34375 -0.234375q0.203125 -0.09375 0.4375 -0.09375zm0 5.25q0.21875 0 0.421875 0.09375q0.203125 0.078125 0.34375 0.23437881q0.15625 0.140625 0.234375 0.34375q0.09375 0.203125 0.09375 0.421875q0 0.234375 -0.09375 0.4375q-0.078125 0.1875 -0.234375 0.34375q-0.140625 0.140625 -0.34375 0.21875q-0.203125 0.09375 -0.421875 0.09375q-0.234375 0 -0.4375 -0.09375q-0.1875 -0.078125 -0.34375 -0.21875q-0.140625 -0.15625 -0.234375 -0.34375q-0.078125 -0.203125 -0.078125 -0.4375q0 -0.21875 0.078125 -0.421875q0.09375 -0.203125 0.234375 -0.34375q0.15625 -0.15625381 0.34375 -0.23437881q0.203125 -0.09375 0.4375 -0.09375zm19.756779 0l-1.59375 0l0 2.0625038l-1.265625 0l0 -2.0625038l-4.500004 0l0 -1.09375l3.984375 -6.203125l1.7812538 0l0 6.203125l1.59375 0l0 1.09375zm-2.859375 -6.09375l-3.2656288 5.0l3.2656288 0l0 -5.0zm10.91745 6.09375l-1.59375 0l0 2.0625038l-1.265625 0l0 -2.0625038l-4.5 0l0 -1.09375l3.984375 -6.203125l1.78125 0l0 6.203125l1.59375 0l0 1.09375zm-2.859375 -6.09375l-3.265625 5.0l3.265625 0l0 -5.0zm10.276825 5.3125q0 0.625 -0.25 1.1718788q-0.25 0.53125 -0.75 0.9375q-0.5 0.390625 -1.265625 0.625q-0.75 0.234375 -1.765625 0.234375q-0.546875 0 -1.0 -0.03125q-0.4375 -0.03125 -0.828125 -0.09375l0 -1.109375q0.453125 0.078125 0.9375 0.125q0.5 0.03125 1.015625 0.03125q0.703125 0 1.1875 -0.125q0.5 -0.125 0.8125 -0.359375q0.328125 -0.234375 0.46875 -0.5625038q0.140625 -0.34375 0.140625 -0.765625q0 -0.390625 -0.171875 -0.671875q-0.171875 -0.296875 -0.484375 -0.484375q-0.3125 -0.1875 -0.75 -0.28125q-0.421875 -0.109375 -0.9375 -0.109375l-1.078125 0l0 -1.015625l1.09375 0q0.421875 0 0.765625 -0.109375q0.34375 -0.109375 0.59375 -0.3125q0.25 -0.21875 0.375 -0.515625q0.140625 -0.3125 0.140625 -0.703125q0 -0.75 -0.46875 -1.09375q-0.453125 -0.34375 -1.34375 -0.34375q-0.46875 0 -0.96875 0.09375q-0.5 0.09375 -1.078125 0.28125l0 -1.09375q0.25 -0.078125 0.515625 -0.140625q0.28125 -0.078125 0.546875 -0.125q0.28125 -0.046875 0.546875 -0.0625q0.28125 -0.03125 0.53125 -0.03125q0.75 0 1.3125 0.171875q0.5625 0.15625 0.9375 0.453125q0.390625 0.296875 0.578125 0.734375q0.1875 0.421875 0.1875 0.96875q0 0.796875 -0.40625 1.34375q-0.40625 0.53125 -1.125 0.859375q0.359375 0.0625 0.71875 0.234375q0.359375 0.171875 0.640625 0.4375q0.28125 0.265625 0.453125 0.640625q0.171875 0.359375 0.171875 0.796875z" fill-rule="nonzero"/><path fill="#d9d2e9" d="m646.47766 133.54955l0 0c0 -3.2214813 2.6115723 -5.833008 5.833069 -5.833008l192.90088 0c1.5469971 0 3.0306396 0.6145477 4.1245728 1.7084503c1.0938721 1.0939026 1.708435 2.5775452 1.708435 4.1245575l0 58.34973c0 3.2214813 -2.6115112 5.833008 -5.833008 5.833008l-192.90088 0c-3.2214966 0 -5.833069 -2.6115265 -5.833069 -5.833008z" fill-rule="evenodd"/><path stroke="#b4a7d6" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m646.47766 133.54955l0 0c0 -3.2214813 2.6115723 -5.833008 5.833069 -5.833008l192.90088 0c1.5469971 0 3.0306396 0.6145477 4.1245728 1.7084503c1.0938721 1.0939026 1.708435 2.5775452 1.708435 4.1245575l0 58.34973c0 3.2214813 -2.6115112 5.833008 -5.833008 5.833008l-192.90088 0c-3.2214966 0 -5.833069 -2.6115265 -5.833069 -5.833008z" fill-rule="evenodd"/><path fill="#20124d" d="m658.59235 150.86441l0 -12.40625l2.34375 0l0 12.40625l-2.34375 0zm4.8339233 0l0 -8.84375l2.125 0l0 1.109375l0.140625 0q0.40625 -0.640625 1.125 -1.0q0.734375 -0.375 1.578125 -0.375q1.625 0 2.4375 0.984375q0.828125 0.984375 0.828125 2.625l0 5.5l-2.28125 0l0 -5.21875q0 -0.859375 -0.4375 -1.3125q-0.4375 -0.46875 -1.203125 -0.46875q-0.625 0 -1.09375 0.34375q-0.453125 0.328125 -0.703125 0.890625q-0.25 0.5625 -0.25 1.265625l0 4.5l-2.265625 0zm9.428589 -6.890625l0 -1.953125l1.65625 0l0 1.953125l-1.65625 0zm1.578125 6.890625l0 -9.328125q0 -0.984375 0.40625 -1.703125q0.40625 -0.734375 1.140625 -1.125q0.734375 -0.390625 1.734375 -0.390625q0.359375 0 0.71875 0.0625q0.359375 0.046875 0.6875 0.125l0 2.21875q-0.296875 -0.140625 -0.578125 -0.203125q-0.265625 -0.078125 -0.546875 -0.078125q-0.59375 0 -0.953125 0.34375q-0.34375 0.34375 -0.34375 0.953125l0 9.125l-2.265625 0zm2.171875 -6.890625l0 -1.953125l2.265625 0l0 1.953125l-2.265625 0zm7.406128 7.171875q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm5.978943 -0.28125l0 -8.84375l2.125 0l0 1.1875l0.140625 0q0.234375 -0.421875 0.59375 -0.734375q0.375 -0.328125 0.875 -0.515625q0.515625 -0.1875 1.078125 -0.1875q0.34375 0 0.625 0.046875q0.28125 0.046875 0.484375 0.140625l0 2.265625q-0.359375 -0.140625 -0.71875 -0.234375q-0.359375 -0.09375 -0.75 -0.09375q-0.671875 0 -1.171875 0.34375q-0.5 0.328125 -0.765625 0.921875q-0.25 0.578125 -0.25 1.296875l0 4.40625l-2.265625 0zm11.089111 0.28125q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm5.978943 -0.28125l0 -8.84375l2.125 0l0 1.109375l0.140625 0q0.40625 -0.640625 1.125 -1.0q0.734375 -0.375 1.578125 -0.375q1.625 0 2.4375 0.984375q0.828125 0.984375 0.828125 2.625l0 5.5l-2.28125 0l0 -5.21875q0 -0.859375 -0.4375 -1.3125q-0.4375 -0.46875 -1.203125 -0.46875q-0.625 0 -1.09375 0.34375q-0.453125 0.328125 -0.703125 0.890625q-0.25 0.5625 -0.25 1.265625l0 4.5l-2.265625 0zm14.501038 0.28125q-1.34375 0 -2.40625 -0.59375q-1.046875 -0.609375 -1.640625 -1.671875q-0.59375 -1.0625 -0.59375 -2.4375q0 -1.359375 0.59375 -2.421875q0.59375 -1.0625 1.640625 -1.65625q1.0625 -0.609375 2.40625 -0.609375q1.46875 0 2.53125 0.625q1.0625 0.625 1.53125 1.796875l-2.09375 0.859375q-0.265625 -0.59375 -0.78125 -0.875q-0.5 -0.296875 -1.1875 -0.296875q-0.671875 0 -1.21875 0.328125q-0.53125 0.3125 -0.84375 0.890625q-0.3125 0.5625 -0.3125 1.359375q0 0.796875 0.3125 1.390625q0.3125 0.578125 0.84375 0.90625q0.546875 0.3125 1.21875 0.3125q0.765625 0 1.265625 -0.34375q0.5 -0.34375 0.8125 -0.921875l2.03125 0.890625q-0.515625 1.109375 -1.578125 1.796875q-1.0625 0.671875 -2.53125 0.671875zm9.636047 0q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm12.150818 0q-1.390625 0 -2.578125 -0.484375q-1.1875 -0.5 -2.0625 -1.390625q-0.875 -0.90625 -1.359375 -2.078125q-0.484375 -1.1875 -0.484375 -2.53125q0 -1.359375 0.484375 -2.53125q0.484375 -1.171875 1.359375 -2.0625q0.875 -0.90625 2.0625 -1.390625q1.1875 -0.5 2.578125 -0.5q1.375 0 2.546875 0.5q1.1875 0.484375 2.0625 1.390625q0.890625 0.890625 1.375 2.0625q0.484375 1.171875 0.484375 2.53125q0 1.34375 -0.484375 2.53125q-0.484375 1.171875 -1.375 2.078125q-0.875 0.890625 -2.0625 1.390625q-1.171875 0.484375 -2.546875 0.484375zm0 -2.21875q1.15625 0 2.09375 -0.53125q0.9375 -0.546875 1.484375 -1.5q0.5625 -0.96875 0.5625 -2.234375q0 -1.28125 -0.5625 -2.234375q-0.546875 -0.953125 -1.484375 -1.484375q-0.9375 -0.546875 -2.09375 -0.546875q-1.15625 0 -2.09375 0.546875q-0.921875 0.53125 -1.484375 1.484375q-0.546875 0.953125 -0.546875 2.234375q0 1.265625 0.546875 2.234375q0.5625 0.953125 1.484375 1.5q0.9375 0.53125 2.09375 0.53125zm13.270874 2.21875q-0.640625 0 -1.171875 -0.203125q-0.515625 -0.1875 -0.890625 -0.484375q-0.359375 -0.296875 -0.59375 -0.65625l-0.140625 0l0 1.0625l-2.125 0l0 -12.40625l2.265625 0l0 3.390625l-0.140625 1.25l0.140625 0q0.234375 -0.34375 0.59375 -0.65625q0.375 -0.3125 0.890625 -0.5q0.53125 -0.1875 1.171875 -0.1875q1.203125 0 2.171875 0.59375q0.96875 0.59375 1.53125 1.65625q0.5625 1.046875 0.5625 2.4375q0 1.390625 -0.5625 2.453125q-0.5625 1.046875 -1.53125 1.65625q-0.96875 0.59375 -2.171875 0.59375zm-0.40625 -2.09375q0.640625 0 1.1875 -0.3125q0.546875 -0.328125 0.875 -0.921875q0.34375 -0.59375 0.34375 -1.375q0 -0.796875 -0.34375 -1.359375q-0.328125 -0.578125 -0.875 -0.890625q-0.546875 -0.328125 -1.1875 -0.328125q-0.625 0 -1.171875 0.328125q-0.53125 0.3125 -0.875 0.890625q-0.34375 0.578125 -0.34375 1.359375q0 0.78125 0.34375 1.359375q0.34375 0.578125 0.875 0.921875q0.546875 0.328125 1.171875 0.328125zm5.850769 5.734375q-0.328125 0 -0.59375 -0.03125q-0.28125 -0.03125 -0.59375 -0.09375l0 -2.203125q0.1875 0.109375 0.421875 0.171875q0.234375 0.078125 0.5 0.078125q0.421875 0 0.59375 -0.265625q0.1875 -0.265625 0.1875 -0.765625l0 -9.65625l2.265625 0l0 9.703125q0 1.109375 -0.390625 1.78125q-0.375 0.671875 -1.015625 0.96875q-0.625 0.3125 -1.375 0.3125zm1.65625 -13.734375q-0.609375 0 -1.046875 -0.421875q-0.421875 -0.4375 -0.421875 -1.046875q0 -0.609375 0.421875 -1.03125q0.4375 -0.421875 1.046875 -0.421875q0.609375 0 1.03125 0.421875q0.421875 0.421875 0.421875 1.03125q0 0.609375 -0.421875 1.046875q-0.421875 0.421875 -1.03125 0.421875zm7.453308 10.09375q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625zm10.135193 0q-1.34375 0 -2.40625 -0.59375q-1.046875 -0.609375 -1.640625 -1.671875q-0.59375 -1.0625 -0.59375 -2.4375q0 -1.359375 0.59375 -2.421875q0.59375 -1.0625 1.640625 -1.65625q1.0625 -0.609375 2.40625 -0.609375q1.46875 0 2.53125 0.625q1.0625 0.625 1.53125 1.796875l-2.09375 0.859375q-0.265625 -0.59375 -0.78125 -0.875q-0.5 -0.296875 -1.1875 -0.296875q-0.671875 0 -1.21875 0.328125q-0.53125 0.3125 -0.84375 0.890625q-0.3125 0.5625 -0.3125 1.359375q0 0.796875 0.3125 1.390625q0.3125 0.578125 0.84375 0.90625q0.546875 0.3125 1.21875 0.3125q0.765625 0 1.265625 -0.34375q0.5 -0.34375 0.8125 -0.921875l2.03125 0.890625q-0.515625 1.109375 -1.578125 1.796875q-1.0625 0.671875 -2.53125 0.671875zm4.8391724 -7.171875l0 -1.953125l1.625 0l0 1.953125l-1.625 0zm4.46875 7.03125q-1.375 0 -2.15625 -0.78125q-0.78125 -0.796875 -0.78125 -2.1875l0 -8.5l2.28125 0l0 8.09375q0 0.640625 0.25 0.9375q0.265625 0.296875 0.859375 0.296875q0.265625 0 0.5 -0.078125q0.25 -0.078125 0.625 -0.296875l0 2.21875q-0.390625 0.140625 -0.78125 0.21875q-0.390625 0.078125 -0.796875 0.078125zm-0.75 -7.03125l0 -1.953125l2.25 0l0 1.953125l-2.25 0zm4.128601 6.890625l0 -8.84375l2.265625 0l0 8.84375l-2.265625 0zm1.140625 -9.8125q-0.609375 0 -1.046875 -0.421875q-0.421875 -0.4375 -0.421875 -1.046875q0 -0.609375 0.421875 -1.03125q0.4375 -0.421875 1.046875 -0.421875q0.609375 0 1.03125 0.421875q0.421875 0.421875 0.421875 1.03125q0 0.609375 -0.421875 1.046875q-0.421875 0.421875 -1.03125 0.421875zm6.031433 9.8125l-3.75 -8.84375l2.59375 0l2.234375 5.765625l0.140625 0l2.265625 -5.765625l2.546875 0l-3.78125 8.84375l-2.25 0zm10.986877 0.28125q-1.328125 0 -2.390625 -0.609375q-1.046875 -0.609375 -1.640625 -1.65625q-0.59375 -1.0625 -0.59375 -2.421875q0 -1.265625 0.578125 -2.328125q0.59375 -1.078125 1.609375 -1.71875q1.03125 -0.65625 2.34375 -0.65625q1.421875 0 2.390625 0.609375q0.984375 0.59375 1.484375 1.609375q0.5 1.015625 0.5 2.25q0 0.28125 -0.015625 0.484375q-0.015625 0.1875 -0.03125 0.28125l-7.59375 0l0 -1.625l5.453125 0q-0.015625 -0.28125 -0.171875 -0.59375q-0.15625 -0.3125 -0.4375 -0.578125q-0.265625 -0.265625 -0.65625 -0.421875q-0.390625 -0.171875 -0.90625 -0.171875q-0.65625 0 -1.203125 0.359375q-0.546875 0.34375 -0.859375 0.953125q-0.296875 0.609375 -0.296875 1.46875q0 0.875 0.328125 1.5q0.328125 0.609375 0.890625 0.9375q0.5625 0.3125 1.25 0.3125q0.8125 0 1.359375 -0.34375q0.5625 -0.359375 0.875 -0.90625l1.84375 0.90625q-0.625 1.09375 -1.640625 1.734375q-1.0 0.625 -2.46875 0.625z" fill-rule="nonzero"/><path fill="#20124d" d="m664.7017 169.30441l-1.4375 0l-1.390625 -2.984375q-0.15625 -0.34375 -0.328125 -0.5625q-0.15625 -0.234375 -0.34375 -0.359375q-0.1875 -0.140625 -0.421875 -0.203125q-0.21875 -0.0625 -0.5 -0.0625l-0.609375 0l0 4.171875l-1.265625 0l0 -9.359375l2.5 0q0.8125 0 1.390625 0.1875q0.59375 0.171875 0.96875 0.5q0.390625 0.328125 0.5625 0.78125q0.171875 0.453125 0.171875 1.0q0 0.4375 -0.125 0.828125q-0.125 0.390625 -0.390625 0.71875q-0.25 0.3125 -0.625 0.546875q-0.375 0.21875 -0.859375 0.34375q0.390625 0.125 0.65625 0.46875q0.28125 0.34375 0.578125 0.90625l1.46875 3.078125zm-2.03125 -6.78125q0 -0.75 -0.46875 -1.125q-0.46875 -0.375 -1.328125 -0.375l-1.203125 0l0 3.09375l1.03125 0q0.453125 0 0.8125 -0.09375q0.359375 -0.109375 0.609375 -0.3125q0.265625 -0.203125 0.40625 -0.5q0.140625 -0.296875 0.140625 -0.6875zm9.79248 2.8125q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm2.9174194 0.71875q0 -0.78125 0.203125 -1.46875q0.203125 -0.703125 0.625 -1.21875q0.4375 -0.53125 1.09375 -0.828125q0.671875 -0.3125 1.59375 -0.3125q0.359375 0 0.71875 0.0625q0.359375 0.046875 0.765625 0.171875l1.09375 -0.28125l0 10.25l-1.25 0l0 -2.71875l0.0625 -1.53125q-1.015625 1.4375 -2.421875 1.4375q-0.625 0 -1.09375 -0.25q-0.46875 -0.265625 -0.78125 -0.734375q-0.296875 -0.46875 -0.453125 -1.125q-0.15625 -0.65625 -0.15625 -1.453125zm1.265625 -0.078125q0 0.59375 0.09375 1.078125q0.09375 0.484375 0.265625 0.8125q0.1875 0.328125 0.46875 0.515625q0.28125 0.171875 0.640625 0.171875q0.484375 0 1.0 -0.421875q0.53125 -0.421875 1.109375 -1.25l0 -3.34375q-0.28125 -0.125 -0.65625 -0.203125q-0.359375 -0.09375 -0.765625 -0.09375q-1.046875 0 -1.609375 0.703125q-0.546875 0.6875 -0.546875 2.03125zm12.933105 3.515625l-1.125 0l-0.03125 -1.15625q-0.328125 0.375 -0.625 0.625q-0.28125 0.234375 -0.578125 0.390625q-0.28125 0.140625 -0.578125 0.203125q-0.28125 0.0625 -0.59375 0.0625q-1.109375 0 -1.6875 -0.640625q-0.5625 -0.65625 -0.5625 -1.96875l0 -4.703125l1.25 0l0 4.59375q0 1.65625 1.25 1.65625q0.21875 0 0.4375 -0.0625q0.21875 -0.078125 0.453125 -0.234375q0.25 -0.171875 0.515625 -0.453125q0.28125 -0.296875 0.625 -0.734375l0 -4.765625l1.25 0l0 7.1875zm8.354919 -3.96875q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.964355 2.203125q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.167419 1.859375q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm7.2924805 -3.21875l-4.28125 0l0 -1.171875l4.28125 0l0 1.171875zm8.714294 1.359375q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875zm8.51123 -1.765625q0 0.953125 -0.265625 1.671875q-0.265625 0.71875 -0.75 1.1875q-0.46875 0.46875 -1.109375 0.703125q-0.640625 0.234375 -1.390625 0.234375q-0.34375 0 -0.6875 -0.03125q-0.34375 -0.03125 -0.6875 -0.125l0 3.015625l-1.25 0l0 -10.125l1.109375 0l0.078125 1.203125q0.546875 -0.734375 1.15625 -1.03125q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.34375 0.140625 0.71875 0.234375q0.390625 0.078125 0.75 0.078125q1.0 0 1.578125 -0.6875q0.578125 -0.6875 0.578125 -2.0625zm9.261169 -0.296875q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.870605 3.890625q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm4.9174194 -5.890625l-2.125 0l0 -1.03125l3.390625 0l0 6.15625l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -5.125zm0.4375 -4.046875q0.203125 0 0.375 0.078125q0.1875 0.078125 0.3125 0.21875q0.140625 0.125 0.21875 0.3125q0.078125 0.171875 0.078125 0.375q0 0.203125 -0.078125 0.390625q-0.078125 0.171875 -0.21875 0.3125q-0.125 0.125 -0.3125 0.203125q-0.171875 0.078125 -0.375 0.078125q-0.203125 0 -0.390625 -0.078125q-0.171875 -0.078125 -0.3125 -0.203125q-0.125 -0.140625 -0.203125 -0.3125q-0.078125 -0.1875 -0.078125 -0.390625q0 -0.203125 0.078125 -0.375q0.078125 -0.1875 0.203125 -0.3125q0.140625 -0.140625 0.3125 -0.21875q0.1875 -0.078125 0.390625 -0.078125zm11.54248 1.25q-0.96875 -0.203125 -1.6875 -0.203125q-1.671875 0 -1.671875 1.75l0 1.265625l3.140625 0l0 1.03125l-3.140625 0l0 5.109375l-1.265625 0l0 -5.109375l-2.3125 0l0 -1.03125l2.3125 0l0 -1.1875q0 -2.875 2.984375 -2.875q0.75 0 1.640625 0.171875l0 1.078125zm-7.515625 1.765625l0 0zm11.651794 1.03125l-2.125 0l0 -1.03125l3.390625 0l0 6.15625l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -5.125zm0.4375 -4.046875q0.203125 0 0.375 0.078125q0.1875 0.078125 0.3125 0.21875q0.140625 0.125 0.21875 0.3125q0.078125 0.171875 0.078125 0.375q0 0.203125 -0.078125 0.390625q-0.078125 0.171875 -0.21875 0.3125q-0.125 0.125 -0.3125 0.203125q-0.171875 0.078125 -0.375 0.078125q-0.203125 0 -0.390625 -0.078125q-0.171875 -0.078125 -0.3125 -0.203125q-0.125 -0.140625 -0.203125 -0.3125q-0.078125 -0.1875 -0.078125 -0.390625q0 -0.203125 0.078125 -0.375q0.078125 -0.1875 0.203125 -0.3125q0.140625 -0.140625 0.3125 -0.21875q0.1875 -0.078125 0.390625 -0.078125zm10.76123 9.9375q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625z" fill-rule="nonzero"/><path fill="#20124d" d="m664.59235 183.64816q0 0.84375 -0.25 1.546875q-0.234375 0.6875 -0.671875 1.1875q-0.4375 0.5 -1.078125 0.78125q-0.640625 0.265625 -1.453125 0.265625q-0.765625 0 -1.390625 -0.234375q-0.609375 -0.234375 -1.03125 -0.703125q-0.421875 -0.46875 -0.65625 -1.15625q-0.21875 -0.6875 -0.21875 -1.578125q0 -0.84375 0.234375 -1.53125q0.234375 -0.6875 0.671875 -1.1875q0.453125 -0.5 1.09375 -0.765625q0.640625 -0.28125 1.4375 -0.28125q0.78125 0 1.390625 0.25q0.609375 0.234375 1.03125 0.703125q0.4375 0.453125 0.65625 1.140625q0.234375 0.6875 0.234375 1.5625zm-1.28125 0.0625q0 -0.671875 -0.15625 -1.15625q-0.140625 -0.5 -0.421875 -0.828125q-0.265625 -0.34375 -0.65625 -0.5q-0.375 -0.171875 -0.859375 -0.171875q-0.5625 0 -0.96875 0.21875q-0.390625 0.21875 -0.640625 0.578125q-0.25 0.359375 -0.375 0.84375q-0.109375 0.484375 -0.109375 1.015625q0 0.671875 0.140625 1.171875q0.140625 0.5 0.40625 0.828125q0.28125 0.328125 0.671875 0.5q0.390625 0.171875 0.875 0.171875q0.5625 0 0.953125 -0.21875q0.390625 -0.21875 0.640625 -0.578125q0.265625 -0.375 0.375 -0.859375q0.125 -0.484375 0.125 -1.015625zm9.214355 -0.125q0 0.890625 -0.25 1.59375q-0.234375 0.703125 -0.703125 1.203125q-0.453125 0.484375 -1.109375 0.75q-0.640625 0.25 -1.453125 0.25q-0.640625 0 -1.3125 -0.109375q-0.65625 -0.125 -1.3125 -0.390625l0 -9.6875l1.25 0l0 2.78125l-0.0625 1.328125q0.546875 -0.71875 1.15625 -1.015625q0.609375 -0.296875 1.3125 -0.296875q0.609375 0 1.078125 0.265625q0.46875 0.25 0.78125 0.71875q0.3125 0.46875 0.46875 1.140625q0.15625 0.65625 0.15625 1.46875zm-1.265625 0.046875q0 -0.5625 -0.09375 -1.03125q-0.078125 -0.46875 -0.265625 -0.796875q-0.171875 -0.34375 -0.453125 -0.53125q-0.265625 -0.1875 -0.65625 -0.1875q-0.234375 0 -0.484375 0.078125q-0.234375 0.0625 -0.5 0.25q-0.265625 0.171875 -0.5625 0.46875q-0.28125 0.28125 -0.609375 0.703125l0 3.484375q0.359375 0.140625 0.734375 0.234375q0.390625 0.078125 0.734375 0.078125q0.421875 0 0.8125 -0.125q0.390625 -0.140625 0.6875 -0.453125q0.296875 -0.328125 0.46875 -0.859375q0.1875 -0.53125 0.1875 -1.3125zm8.058044 -3.515625l0 7.0625q0 0.75 -0.21875 1.328125q-0.21875 0.59375 -0.625 0.984375q-0.390625 0.40625 -0.984375 0.609375q-0.578125 0.203125 -1.296875 0.203125q-0.53125 0 -1.046875 -0.09375q-0.5 -0.09375 -0.90625 -0.265625l0 -1.1875q0.21875 0.109375 0.46875 0.203125q0.265625 0.09375 0.53125 0.15625q0.265625 0.0625 0.53125 0.09375q0.28125 0.046875 0.53125 0.046875q0.828125 0 1.28125 -0.515625q0.46875 -0.515625 0.46875 -1.515625l0 -6.078125l-3.515625 0l0 -1.03125l4.78125 0zm-0.75 -3.015625q0.203125 0 0.375 0.078125q0.1875 0.078125 0.3125 0.21875q0.140625 0.125 0.203125 0.3125q0.078125 0.171875 0.078125 0.375q0 0.203125 -0.078125 0.390625q-0.0625 0.171875 -0.203125 0.3125q-0.125 0.125 -0.3125 0.203125q-0.171875 0.078125 -0.375 0.078125q-0.21875 0 -0.40625 -0.078125q-0.171875 -0.078125 -0.296875 -0.203125q-0.125 -0.140625 -0.203125 -0.3125q-0.078125 -0.1875 -0.078125 -0.390625q0 -0.203125 0.078125 -0.375q0.078125 -0.1875 0.203125 -0.3125q0.125 -0.140625 0.296875 -0.21875q0.1875 -0.078125 0.40625 -0.078125zm10.01123 6.234375q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.870544 3.890625q-0.5 0.1875 -1.015625 0.265625q-0.5 0.09375 -1.046875 0.09375q-1.703125 0 -2.625 -0.921875q-0.921875 -0.921875 -0.921875 -2.6875q0 -0.859375 0.265625 -1.546875q0.265625 -0.703125 0.75 -1.1875q0.484375 -0.5 1.140625 -0.765625q0.671875 -0.265625 1.46875 -0.265625q0.5625 0 1.046875 0.078125q0.484375 0.078125 0.9375 0.25l0 1.1875q-0.46875 -0.234375 -0.953125 -0.34375q-0.484375 -0.109375 -1.0 -0.109375q-0.484375 0 -0.90625 0.1875q-0.421875 0.171875 -0.75 0.515625q-0.3125 0.34375 -0.5 0.84375q-0.1875 0.484375 -0.1875 1.109375q0 1.296875 0.625 1.953125q0.640625 0.640625 1.765625 0.640625q0.5 0 0.96875 -0.109375q0.484375 -0.109375 0.9375 -0.34375l0 1.15625zm8.26123 0.171875q-0.421875 0.09375 -0.875 0.140625q-0.453125 0.046875 -0.921875 0.046875q-1.34375 0 -2.015625 -0.609375q-0.65625 -0.609375 -0.65625 -1.875l0 -3.75l-2.015625 0l0 -1.046875l2.015625 0l0 -1.96875l1.234375 -0.328125l0 2.296875l3.234375 0l0 1.046875l-3.234375 0l0 3.65625q0 0.765625 0.40625 1.15625q0.421875 0.375 1.21875 0.375q0.34375 0 0.75 -0.046875q0.40625 -0.0625 0.859375 -0.171875l0 1.078125zm4.7142944 -6.0625l-2.125 0l0 -1.03125l3.390625 0l0 6.15625l2.125 0l0 1.03125l-5.75 0l0 -1.03125l2.359375 0l0 -5.125zm0.4375 -4.046875q0.203125 0 0.375 0.078125q0.1875 0.078125 0.3125 0.21875q0.140625 0.125 0.21875 0.3125q0.078125 0.171875 0.078125 0.375q0 0.203125 -0.078125 0.390625q-0.078125 0.171875 -0.21875 0.3125q-0.125 0.125 -0.3125 0.203125q-0.171875 0.078125 -0.375 0.078125q-0.203125 0 -0.390625 -0.078125q-0.171875 -0.078125 -0.3125 -0.203125q-0.125 -0.140625 -0.203125 -0.3125q-0.078125 -0.1875 -0.078125 -0.390625q0 -0.203125 0.078125 -0.375q0.078125 -0.1875 0.203125 -0.3125q0.140625 -0.140625 0.3125 -0.21875q0.1875 -0.078125 0.390625 -0.078125zm4.4956055 3.015625l1.421875 0l1.765625 4.75l0.375 1.15625l0.390625 -1.1875l1.75 -4.71875l1.359375 0l-2.8125 7.1875l-1.4375 0l-2.8125 -7.1875zm14.808044 3.21875q0 0.265625 -0.015625 0.453125q0 0.171875 -0.015625 0.328125l-5.046875 0q0 1.09375 0.609375 1.6875q0.625 0.59375 1.78125 0.59375q0.3125 0 0.625 -0.015625q0.3125 -0.03125 0.609375 -0.078125q0.296875 -0.046875 0.5625 -0.09375q0.265625 -0.0625 0.5 -0.125l0 1.03125q-0.515625 0.140625 -1.15625 0.21875q-0.640625 0.09375 -1.328125 0.09375q-0.921875 0 -1.59375 -0.25q-0.65625 -0.25 -1.078125 -0.71875q-0.421875 -0.484375 -0.625 -1.171875q-0.203125 -0.6875 -0.203125 -1.5625q0 -0.765625 0.21875 -1.4375q0.21875 -0.671875 0.625 -1.1875q0.421875 -0.515625 1.03125 -0.8125q0.609375 -0.296875 1.375 -0.296875q0.765625 0 1.34375 0.234375q0.578125 0.234375 0.96875 0.671875q0.40625 0.4375 0.609375 1.0625q0.203125 0.609375 0.203125 1.375zm-1.296875 -0.1875q0.015625 -0.46875 -0.109375 -0.859375q-0.109375 -0.40625 -0.34375 -0.6875q-0.234375 -0.296875 -0.59375 -0.453125q-0.359375 -0.15625 -0.828125 -0.15625q-0.40625 0 -0.75 0.15625q-0.328125 0.15625 -0.578125 0.4375q-0.25 0.28125 -0.40625 0.6875q-0.140625 0.40625 -0.171875 0.875l3.78125 0zm8.964355 2.203125q0 0.375 -0.125 0.671875q-0.125 0.296875 -0.34375 0.53125q-0.21875 0.234375 -0.515625 0.40625q-0.296875 0.15625 -0.640625 0.265625q-0.328125 0.109375 -0.6875 0.15625q-0.34375 0.046875 -0.671875 0.046875q-0.734375 0 -1.34375 -0.0625q-0.609375 -0.0625 -1.203125 -0.203125l0 -1.140625q0.640625 0.171875 1.25 0.265625q0.625 0.09375 1.25 0.09375q0.890625 0 1.3125 -0.234375q0.4375 -0.25 0.4375 -0.703125q0 -0.1875 -0.078125 -0.34375q-0.0625 -0.15625 -0.25 -0.296875q-0.171875 -0.140625 -0.546875 -0.28125q-0.375 -0.15625 -1.015625 -0.359375q-0.5 -0.140625 -0.90625 -0.3125q-0.40625 -0.1875 -0.71875 -0.4375q-0.296875 -0.25 -0.46875 -0.578125q-0.171875 -0.34375 -0.171875 -0.8125q0 -0.296875 0.140625 -0.65625q0.140625 -0.359375 0.46875 -0.65625q0.34375 -0.3125 0.921875 -0.515625q0.578125 -0.203125 1.421875 -0.203125q0.421875 0 0.9375 0.046875q0.515625 0.046875 1.078125 0.15625l0 1.109375q-0.578125 -0.140625 -1.109375 -0.203125q-0.53125 -0.078125 -0.90625 -0.078125q-0.46875 0 -0.796875 0.078125q-0.3125 0.0625 -0.515625 0.203125q-0.1875 0.125 -0.28125 0.296875q-0.078125 0.15625 -0.078125 0.34375q0 0.203125 0.0625 0.359375q0.078125 0.15625 0.28125 0.3125q0.21875 0.140625 0.578125 0.28125q0.359375 0.140625 0.953125 0.3125q0.640625 0.1875 1.0625 0.390625q0.4375 0.203125 0.703125 0.46875q0.28125 0.25 0.390625 0.5625q0.125 0.3125 0.125 0.71875z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m748.76117 127.71654l0 -60.787407" fill-rule="evenodd"/><path stroke="#b7b7b7" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m748.76117 127.71654l0 -48.787407" fill-rule="evenodd"/><path fill="#b7b7b7" stroke="#b7b7b7" stroke-width="2.0" stroke-linecap="butt" d="m752.06464 78.92913l-3.3034668 -9.076195l-3.3034668 9.076195z" fill-rule="evenodd"/></g></svg>
\ No newline at end of file
diff --git a/site-src/images/resource-model.png b/site-src/images/resource-model.png
index 0910c5b..216c856 100644
Binary files a/site-src/images/resource-model.png and b/site-src/images/resource-model.png differ
diff --git a/site-src/images/serve-LoRA-adapters.png b/site-src/images/serve-LoRA-adapters.png
deleted file mode 100644
index e33dc70..0000000
Binary files a/site-src/images/serve-LoRA-adapters.png and /dev/null differ
diff --git a/site-src/images/serve-mul-gen-AI-models.png b/site-src/images/serve-mul-gen-AI-models.png
deleted file mode 100644
index 957a054..0000000
Binary files a/site-src/images/serve-mul-gen-AI-models.png and /dev/null differ
diff --git a/site-src/implementations/model-servers.md b/site-src/implementations/model-servers.md
index da9968f..ed57e12 100644
--- a/site-src/implementations/model-servers.md
+++ b/site-src/implementations/model-servers.md
@@ -19,34 +19,29 @@ vLLM is configured as the default in the [endpoint picker extension](https://git
 
 Triton specific metric names need to be specified when starting the EPP.
 
-### Option 1: Use Helm
+Use `--set inferencePool.modelServerType=triton-tensorrt-llm` to install the `inferencepool` via helm. See the [`inferencepool` helm guide](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/main/config/charts/inferencepool/README.md) for more details.
 
-Use `--set inferencePool.modelServerType=triton-tensorrt-llm` to install the [`inferencepool` via helm](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/42eb5ff1c5af1275df43ac384df0ddf20da95134/config/charts/inferencepool). See the [`inferencepool` helm guide](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/42eb5ff1c5af1275df43ac384df0ddf20da95134/config/charts/inferencepool/README.md) for more details.
+ Add the following to the `flags` in the helm chart as [flags to EPP](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/29ea29028496a638b162ff287c62c0087211bbe5/config/charts/inferencepool/values.yaml#L36)
 
-### Option 2: Edit EPP deployment yaml
-
- Add the following to the `args` of the [EPP deployment](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/42eb5ff1c5af1275df43ac384df0ddf20da95134/config/manifests/inferencepool-resources.yaml#L32)
-
- ```
-- --total-queued-requests-metric
-- "nv_trt_llm_request_metrics{request_type=waiting}"
-- --kv-cache-usage-percentage-metric
-- "nv_trt_llm_kv_cache_block_metrics{kv_cache_block_type=fraction}"
-- --lora-info-metric
-- "" # Set an empty metric to disable LoRA metric scraping as they are not supported by Triton yet.
+```
+- name=total-queued-requests-metric
+  value="nv_trt_llm_request_metrics{request_type=waiting}"
+- name=kv-cache-usage-percentage-metric
+  value="nv_trt_llm_kv_cache_block_metrics{kv_cache_block_type=fraction}"
+- name=lora-info-metric
+  value="" # Set an empty metric to disable LoRA metric scraping as they are not supported by Triton yet.
 ```
 
 ## SGLang
 
-### Edit EPP deployment yaml
+ Add the following `flags` while deploying using helm charts in the [EPP deployment](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/29ea29028496a638b162ff287c62c0087211bbe5/config/charts/inferencepool/values.yaml#L36)
 
- Add the following to the `args` of the [EPP deployment](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/42eb5ff1c5af1275df43ac384df0ddf20da95134/config/manifests/inferencepool-resources.yaml#L32)
 
 ```
-- --totalQueuedRequestsMetric
-- "sglang:num_queue_reqs"
-- --kvCacheUsagePercentageMetric
-- "sglang:token_usage"
-- --lora-info-metric
-- "" # Set an empty metric to disable LoRA metric scraping as they are not supported by SGLang yet.
-```
+- name=total-queued-requests-metric
+  value="sglang:num_queue_reqs"
+- name=kv-cache-usage-percentage-metric
+  value="sglang:token_usage"
+- name=lora-info-metric
+  value="" # Set an empty metric to disable LoRA metric scraping as they are not supported by SGLang yet.
+```
\ No newline at end of file
diff --git a/site-src/index.md b/site-src/index.md
index a2892c5..0fbb338 100644
--- a/site-src/index.md
+++ b/site-src/index.md
@@ -1,11 +1,5 @@
 # Introduction
 
-???+ warning
-
-
-    Some portions of this site may be out of date with the v1.0.0 release candidate. 
-    Updates under active development!
-
 Gateway API Inference Extension is an official Kubernetes project that optimizes self-hosting Generative Models on Kubernetes.
 
 The overall resource model focuses on 2 new inference-focused
@@ -31,6 +25,7 @@ The following specific terms to this project:
   performance, availability and capabilities to optimize routing. Includes
   things like [Prefix Cache](https://docs.vllm.ai/en/stable/design/v1/prefix_caching.html) status or [LoRA Adapters](https://docs.vllm.ai/en/stable/features/lora.html) availability.
 - **Endpoint Picker(EPP)**: An implementation of an `Inference Scheduler` with additional Routing, Flow, and Request Control layers to allow for sophisticated routing strategies. Additional info on the architecture of the EPP [here](https://github.com/kubernetes-sigs/gateway-api-inference-extension/tree/main/docs/proposals/0683-epp-architecture-proposal).
+- **Body Based Router(BBR)**: An additional (and optional) implementation of an extension that extracts information from the body portion of the inference request, currently the model name attribute from the body of an OpenAI API request, which can then be used by the gateway to perform model-aware functions such as routing/scheduling. This may be used along with the EPP in order to have a combination of model picking and endpoint picking functionality.
 
 [Inference Gateway]:#concepts-and-definitions
 
@@ -49,7 +44,7 @@ in a higher level **AI Gateways** like [LiteLLM](https://www.litellm.ai/), [Gloo
 
 - **Model-aware routing**: Instead of simply routing based on the path of the request, an **[inference gateway]** allows you to route to models based on the model names. This is enabled by support for GenAI Inference API specifications (such as OpenAI API) in the gateway implementations such as in Envoy Proxy. This model-aware routing also extends to Low-Rank Adaptation (LoRA) fine-tuned models.
 
-- **Serving priority**: an **[inference gateway]** allows you to specify the serving priority of your models. For example, you can specify that your models for online inference of chat tasks (which is more latency sensitive) have a higher [*Criticality*](/reference/spec/#criticality) than a model for latency tolerant tasks such as a summarization. 
+- **Serving priority**: an **[inference gateway]** allows you to specify the serving priority of your models. For example, you can specify that your models for online inference of chat tasks (which is more latency sensitive) have a higher [*Priority*](/reference/spec/#priority) than a model for latency tolerant tasks such as a summarization. 
 
 - **Model rollouts**:  an **[inference gateway]** allows you to incrementally roll out new model versions by traffic splitting definitions based on the model names. 
 
diff --git a/site-src/reference/x-spec.md b/site-src/reference/x-spec.md
index 9151dcd..c1a57ce 100644
--- a/site-src/reference/x-spec.md
+++ b/site-src/reference/x-spec.md
@@ -123,12 +123,6 @@ performance and latency goals for the model. These workloads are
 expected to operate within an InferencePool sharing compute capacity with other
 InferenceObjectives, defined by the Inference Platform Admin.
 
-InferenceObjective's modelName (not the ObjectMeta name) is unique for a given InferencePool,
-if the name is reused, an error will be shown on the status of a
-InferenceObjective that attempted to reuse. The oldest InferenceObjective, based on
-creation timestamp, will be selected to remain valid. In the event of a race
-condition, one will be selected at random.
-
 
 
 _Appears in:_
diff --git a/tools/dashboards/README.md b/tools/dashboards/README.md
index 21282bf..564d8a6 100644
--- a/tools/dashboards/README.md
+++ b/tools/dashboards/README.md
@@ -4,7 +4,7 @@ This documentation provides instructions for setting up grafana dashboards to se
 
 ## Requirements
 
-Please follow [metrics](https://gateway-api-inference-extension.sigs.k8s.io/guides/metrics/?h=metrics) page to configure the proxy to enable all metrics.
+Please follow [metrics](https://gateway-api-inference-extension.sigs.k8s.io/guides/metrics-and-observability/) page to configure the proxy to enable all metrics.
 
 ## Load Inference Extension dashboard into Grafana
 



Test patch:
diff --git a/pkg/epp/flowcontrol/config_test.go b/pkg/epp/flowcontrol/config_test.go
new file mode 100644
index 0000000..713abee
--- /dev/null
+++ b/pkg/epp/flowcontrol/config_test.go
@@ -0,0 +1,91 @@
+/*
+Copyright 2025 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package flowcontrol
+
+import (
+	"testing"
+	"time"
+
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/controller"
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/registry"
+)
+
+func TestConfig_ValidateAndApplyDefaults(t *testing.T) {
+	t.Parallel()
+
+	// A minimal valid registry config, which is required for the success case.
+	validRegistryConfig := registry.Config{
+		PriorityBands: []registry.PriorityBandConfig{
+			{Priority: 1, PriorityName: "TestBand"},
+		},
+	}
+
+	testCases := []struct {
+		name          string
+		input         Config
+		expectErr     bool
+		expectedErrIs error
+	}{
+		{
+			name: "ShouldSucceed_WhenSubConfigsAreValid",
+			input: Config{
+				Controller: controller.Config{},
+				Registry:   validRegistryConfig,
+			},
+			expectErr: false,
+		},
+		{
+			name: "ShouldFail_WhenControllerConfigIsInvalid",
+			input: Config{
+				Controller: controller.Config{
+					DefaultRequestTTL: -1 * time.Second,
+				},
+				Registry: validRegistryConfig,
+			},
+			expectErr: true,
+		},
+		{
+			name: "ShouldFail_WhenRegistryConfigIsInvalid",
+			input: Config{
+				Controller: controller.Config{},
+				Registry: registry.Config{
+					PriorityBands: []registry.PriorityBandConfig{},
+				},
+			},
+			expectErr: true,
+		},
+	}
+
+	for _, tc := range testCases {
+		t.Run(tc.name, func(t *testing.T) {
+			t.Parallel()
+			originalInput := tc.input
+			validatedCfg, err := tc.input.ValidateAndApplyDefaults()
+
+			if tc.expectErr {
+				require.Error(t, err, "expected an error but got nil")
+			} else {
+				require.NoError(t, err, "expected no error but got: %v", err)
+				require.NotNil(t, validatedCfg, "validatedCfg should not be nil on success")
+			}
+
+			assert.Equal(t, originalInput, tc.input, "input config should not be mutated")
+		})
+	}
+}
diff --git a/pkg/epp/flowcontrol/controller/config_test.go b/pkg/epp/flowcontrol/controller/config_test.go
new file mode 100644
index 0000000..710df9f
--- /dev/null
+++ b/pkg/epp/flowcontrol/controller/config_test.go
@@ -0,0 +1,135 @@
+/*
+Copyright 2025 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package controller
+
+import (
+	"testing"
+	"time"
+
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+)
+
+func TestConfig_ValidateAndApplyDefaults(t *testing.T) {
+	t.Parallel()
+
+	testCases := []struct {
+		name          string
+		input         Config
+		expectErr     bool
+		expectedCfg   Config
+		shouldDefault bool
+	}{
+		{
+			name: "ValidConfig_NoChanges",
+			input: Config{
+				DefaultRequestTTL:               10 * time.Second,
+				ExpiryCleanupInterval:           2 * time.Second,
+				ProcessorReconciliationInterval: 10 * time.Second,
+				EnqueueChannelBufferSize:        200,
+			},
+			expectErr: false,
+			expectedCfg: Config{
+				DefaultRequestTTL:               10 * time.Second,
+				ExpiryCleanupInterval:           2 * time.Second,
+				ProcessorReconciliationInterval: 10 * time.Second,
+				EnqueueChannelBufferSize:        200,
+			},
+		},
+		{
+			name:      "EmptyConfig_ShouldApplyDefaults",
+			input:     Config{},
+			expectErr: false,
+			expectedCfg: Config{
+				DefaultRequestTTL:               0,
+				ExpiryCleanupInterval:           defaultExpiryCleanupInterval,
+				ProcessorReconciliationInterval: defaultProcessorReconciliationInterval,
+				EnqueueChannelBufferSize:        defaultEnqueueChannelBufferSize,
+			},
+			shouldDefault: true,
+		},
+		{
+			name:      "NegativeDefaultRequestTTL_Invalid",
+			input:     Config{DefaultRequestTTL: -1},
+			expectErr: true,
+		},
+		{
+			name:      "NegativeExpiryCleanupInterval_Invalid",
+			input:     Config{ExpiryCleanupInterval: -1},
+			expectErr: true,
+		},
+		{
+			name:      "NegativeProcessorReconciliationInterval_Invalid",
+			input:     Config{ProcessorReconciliationInterval: -1},
+			expectErr: true,
+		},
+		{
+			name:      "NegativeEnqueueChannelBufferSize_Invalid",
+			input:     Config{EnqueueChannelBufferSize: -1},
+			expectErr: true,
+		},
+	}
+
+	for _, tc := range testCases {
+		t.Run(tc.name, func(t *testing.T) {
+			t.Parallel()
+			originalInput := tc.input.deepCopy()
+			validatedCfg, err := tc.input.ValidateAndApplyDefaults()
+
+			if tc.expectErr {
+				require.Error(t, err, "expected an error but got nil")
+				assert.Nil(t, validatedCfg, "validatedCfg should be nil on error")
+			} else {
+				require.NoError(t, err, "expected no error but got: %v", err)
+				require.NotNil(t, validatedCfg, "validatedCfg should not be nil on success")
+				assert.Equal(t, tc.expectedCfg, *validatedCfg, "validatedCfg should match expected config")
+
+				// Ensure the original config is not mutated.
+				assert.Equal(t, *originalInput, tc.input, "input config should not be mutated")
+			}
+		})
+	}
+}
+
+func TestConfig_DeepCopy(t *testing.T) {
+	t.Parallel()
+
+	t.Run("ShouldReturnNil_ForNilReceiver", func(t *testing.T) {
+		t.Parallel()
+		var nilConfig *Config
+		assert.Nil(t, nilConfig.deepCopy(), "Deep copy of a nil config should be nil")
+	})
+
+	t.Run("ShouldCreateIdenticalButSeparateObject", func(t *testing.T) {
+		t.Parallel()
+		original := &Config{
+			DefaultRequestTTL:               1 * time.Second,
+			ExpiryCleanupInterval:           2 * time.Second,
+			ProcessorReconciliationInterval: 3 * time.Second,
+			EnqueueChannelBufferSize:        4,
+		}
+		clone := original.deepCopy()
+
+		require.NotSame(t, original, clone, "Clone should be a new object in memory")
+		assert.Equal(t, *original, *clone, "Cloned object should have identical values")
+
+		// Modify the clone and ensure the original is unchanged.
+		clone.DefaultRequestTTL = 99 * time.Second
+		assert.NotEqual(t, original.DefaultRequestTTL, clone.DefaultRequestTTL,
+			"Original should not be mutated after clone is changed")
+	})
+}
diff --git a/pkg/epp/flowcontrol/controller/controller_test.go b/pkg/epp/flowcontrol/controller/controller_test.go
new file mode 100644
index 0000000..435cdb5
--- /dev/null
+++ b/pkg/epp/flowcontrol/controller/controller_test.go
@@ -0,0 +1,829 @@
+/*
+Copyright 2025 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package controller
+
+import (
+	"context"
+	"errors"
+	"fmt"
+	"sync"
+	"sync/atomic"
+	"testing"
+	"time"
+
+	"github.com/go-logr/logr"
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+	"k8s.io/utils/clock"
+	testclock "k8s.io/utils/clock/testing"
+
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/contracts"
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/contracts/mocks"
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/controller/internal"
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/framework"
+	frameworkmocks "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/framework/mocks"
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/types"
+	typesmocks "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/types/mocks"
+)
+
+// --- Test Harness & Fixtures ---
+
+// withClock returns a test-only option to inject a clock.
+// test-only
+func withClock(c clock.WithTicker) flowControllerOption {
+	return func(fc *FlowController) {
+		fc.clock = c
+	}
+}
+
+// withRegistryClient returns a test-only option to inject a mock or fake registry client.
+// test-only
+func withRegistryClient(client registryClient) flowControllerOption {
+	return func(fc *FlowController) {
+		fc.registry = client
+	}
+}
+
+// withShardProcessorFactory returns a test-only option to inject a processor factory.
+// test-only
+func withShardProcessorFactory(factory shardProcessorFactory) flowControllerOption {
+	return func(fc *FlowController) {
+		fc.shardProcessorFactory = factory
+	}
+}
+
+// testHarness holds the `FlowController` and its dependencies under test.
+type testHarness struct {
+	fc                   *FlowController
+	cfg                  Config
+	mockRegistry         *mockRegistryClient
+	mockDetector         *mocks.MockSaturationDetector
+	mockClock            *testclock.FakeClock
+	mockProcessorFactory *mockShardProcessorFactory
+}
+
+// newUnitHarness creates a test environment with a mock processor factory, suitable for focused unit tests of the
+// controller's logic. It starts the controller's run loop and returns a cancel function to stop it.
+func newUnitHarness(t *testing.T, ctx context.Context, cfg Config, registry *mockRegistryClient) *testHarness {
+	t.Helper()
+	mockDetector := &mocks.MockSaturationDetector{}
+	mockClock := testclock.NewFakeClock(time.Now())
+	mockProcessorFactory := &mockShardProcessorFactory{
+		processors: make(map[string]*mockShardProcessor),
+	}
+	opts := []flowControllerOption{
+		withRegistryClient(registry),
+		withClock(mockClock),
+		withShardProcessorFactory(mockProcessorFactory.new),
+	}
+	fc, err := NewFlowController(ctx, cfg, registry, mockDetector, logr.Discard(), opts...)
+	require.NoError(t, err, "failed to create FlowController for unit test harness")
+
+	h := &testHarness{
+		fc:                   fc,
+		cfg:                  cfg,
+		mockRegistry:         registry,
+		mockDetector:         mockDetector,
+		mockClock:            mockClock,
+		mockProcessorFactory: mockProcessorFactory,
+	}
+	return h
+}
+
+// newIntegrationHarness creates a test environment that uses real `ShardProcessor`s, suitable for integration tests
+// validating the controller-processor interaction.
+func newIntegrationHarness(t *testing.T, ctx context.Context, cfg Config, registry *mockRegistryClient) *testHarness {
+	t.Helper()
+	mockDetector := &mocks.MockSaturationDetector{}
+	mockClock := testclock.NewFakeClock(time.Now())
+	opts := []flowControllerOption{
+		withRegistryClient(registry),
+		withClock(mockClock),
+	}
+	fc, err := NewFlowController(ctx, cfg, registry, mockDetector, logr.Discard(), opts...)
+	require.NoError(t, err, "failed to create FlowController for integration test harness")
+
+	h := &testHarness{
+		fc:           fc,
+		cfg:          cfg,
+		mockRegistry: registry,
+		mockDetector: mockDetector,
+		mockClock:    mockClock,
+	}
+	return h
+}
+
+// mockActiveFlowConnection is a local mock for the `contracts.ActiveFlowConnection` interface.
+type mockActiveFlowConnection struct {
+	contracts.ActiveFlowConnection
+	ActiveShardsV []contracts.RegistryShard
+}
+
+func (m *mockActiveFlowConnection) ActiveShards() []contracts.RegistryShard {
+	return m.ActiveShardsV
+}
+
+// mockRegistryClient is a mock for the private `registryClient` interface.
+type mockRegistryClient struct {
+	contracts.FlowRegistryObserver
+	contracts.FlowRegistryDataPlane
+	WithConnectionFunc func(key types.FlowKey, fn func(conn contracts.ActiveFlowConnection) error) error
+	ShardStatsFunc     func() []contracts.ShardStats
+}
+
+func (m *mockRegistryClient) WithConnection(
+	key types.FlowKey,
+	fn func(conn contracts.ActiveFlowConnection) error,
+) error {
+	if m.WithConnectionFunc != nil {
+		return m.WithConnectionFunc(key, fn)
+	}
+	return fn(&mockActiveFlowConnection{})
+}
+
+func (m *mockRegistryClient) ShardStats() []contracts.ShardStats {
+	if m.ShardStatsFunc != nil {
+		return m.ShardStatsFunc()
+	}
+	return nil
+}
+
+// mockShardProcessor is a mock for the internal `shardProcessor` interface.
+type mockShardProcessor struct {
+	SubmitFunc        func(item *internal.FlowItem) error
+	SubmitOrBlockFunc func(ctx context.Context, item *internal.FlowItem) error
+	runCtx            context.Context
+	runCtxMu          sync.RWMutex
+	runStarted        chan struct{}
+}
+
+func (m *mockShardProcessor) Submit(item *internal.FlowItem) error {
+	if m.SubmitFunc != nil {
+		return m.SubmitFunc(item)
+	}
+	return nil
+}
+
+func (m *mockShardProcessor) SubmitOrBlock(ctx context.Context, item *internal.FlowItem) error {
+	if m.SubmitOrBlockFunc != nil {
+		return m.SubmitOrBlockFunc(ctx, item)
+	}
+	return nil
+}
+
+func (m *mockShardProcessor) Run(ctx context.Context) {
+	m.runCtxMu.Lock()
+	m.runCtx = ctx
+	m.runCtxMu.Unlock()
+	if m.runStarted != nil {
+		close(m.runStarted)
+	}
+	<-ctx.Done()
+}
+
+func (m *mockShardProcessor) Context() context.Context {
+	m.runCtxMu.RLock()
+	defer m.runCtxMu.RUnlock()
+	return m.runCtx
+}
+
+// mockShardProcessorFactory allows tests to inject specific `mockShardProcessor` instances.
+type mockShardProcessorFactory struct {
+	mu         sync.Mutex
+	processors map[string]*mockShardProcessor
+}
+
+func (f *mockShardProcessorFactory) new(
+	shard contracts.RegistryShard,
+	_ internal.BandFilter,
+	_ clock.Clock,
+	_ time.Duration,
+	_ int,
+	_ logr.Logger,
+) shardProcessor {
+	f.mu.Lock()
+	defer f.mu.Unlock()
+	if proc, ok := f.processors[shard.ID()]; ok {
+		return proc
+	}
+	// Return a default mock processor if one is not registered.
+	return &mockShardProcessor{}
+}
+
+// stubManagedQueue is a simple stub for the `contracts.ManagedQueue`  interface.
+type stubManagedQueue struct {
+	contracts.ManagedQueue
+	byteSizeV uint64
+}
+
+func (s *stubManagedQueue) ByteSize() uint64 { return s.byteSizeV }
+
+func (s *stubManagedQueue) FlowQueueAccessor() framework.FlowQueueAccessor {
+	return &frameworkmocks.MockFlowQueueAccessor{ByteSizeV: s.byteSizeV}
+}
+
+// mockShardBuilder is a fixture to declaratively build mock `contracts.RegistryShard` for tests.
+type mockShardBuilder struct {
+	id       string
+	byteSize uint64
+}
+
+func newMockShard(id string) *mockShardBuilder {
+	return &mockShardBuilder{id: id}
+}
+
+func (b *mockShardBuilder) withByteSize(size uint64) *mockShardBuilder {
+	b.byteSize = size
+	return b
+}
+
+func (b *mockShardBuilder) build() contracts.RegistryShard {
+	return &mocks.MockRegistryShard{
+		IDFunc: func() string { return b.id },
+		ManagedQueueFunc: func(_ types.FlowKey) (contracts.ManagedQueue, error) {
+			return &stubManagedQueue{byteSizeV: b.byteSize}, nil
+		},
+	}
+}
+
+var defaultFlowKey = types.FlowKey{ID: "test-flow", Priority: 100}
+
+func newTestRequest(ctx context.Context, key types.FlowKey) *typesmocks.MockFlowControlRequest {
+	return &typesmocks.MockFlowControlRequest{
+		Ctx:       ctx,
+		FlowKeyV:  key,
+		ByteSizeV: 100,
+		IDV:       "req-" + key.ID,
+	}
+}
+
+// --- Test Cases ---
+
+func TestFlowController_EnqueueAndWait(t *testing.T) {
+	t.Parallel()
+
+	t.Run("Rejections", func(t *testing.T) {
+		t.Parallel()
+
+		t.Run("OnNilRequest", func(t *testing.T) {
+			t.Parallel()
+			h := newUnitHarness(t, t.Context(), Config{}, &mockRegistryClient{})
+
+			outcome, err := h.fc.EnqueueAndWait(nil)
+			require.Error(t, err, "EnqueueAndWait must reject a nil request")
+			assert.Equal(t, "request cannot be nil", err.Error())
+			assert.Equal(t, types.QueueOutcomeRejectedOther, outcome, "outcome should be QueueOutcomeRejectedOther")
+		})
+
+		t.Run("OnControllerShutdown", func(t *testing.T) {
+			t.Parallel()
+			ctx, cancel := context.WithCancel(t.Context())
+			h := newUnitHarness(t, ctx, Config{}, &mockRegistryClient{})
+			cancel() // Immediately stop the controller.
+
+			req := newTestRequest(context.Background(), defaultFlowKey)
+			outcome, err := h.fc.EnqueueAndWait(req)
+			require.Error(t, err, "EnqueueAndWait must reject requests if controller is not running")
+			assert.ErrorIs(t, err, types.ErrRejected, "error should wrap ErrRejected")
+			assert.ErrorIs(t, err, types.ErrFlowControllerNotRunning, "error should wrap ErrFlowControllerNotRunning")
+			assert.Equal(t, types.QueueOutcomeRejectedOther, outcome, "outcome should be QueueOutcomeRejectedOther")
+		})
+
+		t.Run("OnNoShardsAvailable", func(t *testing.T) {
+			t.Parallel()
+			h := newUnitHarness(t, t.Context(), Config{}, &mockRegistryClient{})
+
+			req := newTestRequest(context.Background(), defaultFlowKey)
+			outcome, err := h.fc.EnqueueAndWait(req)
+			require.Error(t, err, "EnqueueAndWait must reject requests if no shards are available")
+			assert.ErrorIs(t, err, types.ErrRejected, "error should wrap ErrRejected")
+			assert.Equal(t, types.QueueOutcomeRejectedCapacity, outcome, "outcome should be QueueOutcomeRejectedCapacity")
+		})
+
+		t.Run("OnRegistryConnectionError", func(t *testing.T) {
+			t.Parallel()
+			mockRegistry := &mockRegistryClient{}
+			h := newUnitHarness(t, t.Context(), Config{}, mockRegistry)
+
+			expectedErr := errors.New("connection failed")
+			mockRegistry.WithConnectionFunc = func(
+				_ types.FlowKey,
+				_ func(conn contracts.ActiveFlowConnection) error,
+			) error {
+				return expectedErr
+			}
+
+			req := newTestRequest(context.Background(), defaultFlowKey)
+			outcome, err := h.fc.EnqueueAndWait(req)
+			require.Error(t, err, "EnqueueAndWait must reject requests if registry connection fails")
+			assert.ErrorIs(t, err, types.ErrRejected, "error should wrap ErrRejected")
+			assert.ErrorIs(t, err, expectedErr, "error should wrap the underlying connection error")
+			assert.Equal(t, types.QueueOutcomeRejectedOther, outcome, "outcome should be QueueOutcomeRejectedOther")
+		})
+
+		t.Run("PanicsOnManagedQueueError", func(t *testing.T) {
+			t.Parallel()
+			mockRegistry := &mockRegistryClient{}
+			h := newUnitHarness(t, t.Context(), Config{}, mockRegistry)
+
+			faultyShard := &mocks.MockRegistryShard{
+				IDFunc: func() string { return "faulty-shard" },
+				ManagedQueueFunc: func(_ types.FlowKey) (contracts.ManagedQueue, error) {
+					return nil, errors.New("queue retrieval failed")
+				},
+			}
+			mockRegistry.WithConnectionFunc = func(
+				_ types.FlowKey,
+				fn func(conn contracts.ActiveFlowConnection) error,
+			) error {
+				return fn(&mockActiveFlowConnection{ActiveShardsV: []contracts.RegistryShard{faultyShard}})
+			}
+
+			req := newTestRequest(context.Background(), defaultFlowKey)
+			assert.Panics(t, func() {
+				_, _ = h.fc.EnqueueAndWait(req)
+			}, "EnqueueAndWait did not panic as expected on a ManagedQueue error")
+		})
+	})
+
+	t.Run("Distribution", func(t *testing.T) {
+		t.Parallel()
+
+		testCases := []struct {
+			name            string
+			shards          []contracts.RegistryShard
+			setupProcessors func(t *testing.T, h *testHarness)
+			expectedOutcome types.QueueOutcome
+			expectErr       bool
+		}{
+			{
+				name:   "SubmitSucceeds_NonBlocking_WithSingleActiveShard",
+				shards: []contracts.RegistryShard{newMockShard("shard-A").build()},
+				setupProcessors: func(t *testing.T, h *testHarness) {
+					h.mockProcessorFactory.processors["shard-A"] = &mockShardProcessor{
+						SubmitFunc: func(item *internal.FlowItem) error {
+							go item.Finalize(types.QueueOutcomeDispatched, nil)
+							return nil
+						},
+					}
+				},
+				expectedOutcome: types.QueueOutcomeDispatched,
+			},
+			{
+				name: "DistributesToLeastLoadedShard_WithMultipleActiveShards",
+				shards: []contracts.RegistryShard{
+					newMockShard("shard-A").withByteSize(1000).build(),
+					newMockShard("shard-B").withByteSize(100).build(),
+				},
+				setupProcessors: func(t *testing.T, h *testHarness) {
+					h.mockProcessorFactory.processors["shard-A"] = &mockShardProcessor{
+						SubmitFunc: func(_ *internal.FlowItem) error {
+							t.Error("Submit was called on the more loaded shard (shard-A), which is incorrect")
+							return internal.ErrProcessorBusy
+						},
+					}
+					h.mockProcessorFactory.processors["shard-B"] = &mockShardProcessor{
+						SubmitFunc: func(item *internal.FlowItem) error {
+							go item.Finalize(types.QueueOutcomeDispatched, nil)
+							return nil
+						},
+					}
+				},
+				expectedOutcome: types.QueueOutcomeDispatched,
+			},
+			{
+				name: "SubmitSucceeds_AfterBlocking_WithAllProcessorsBusy",
+				shards: []contracts.RegistryShard{
+					newMockShard("shard-A").withByteSize(1000).build(),
+					newMockShard("shard-B").withByteSize(100).build(),
+				},
+				setupProcessors: func(t *testing.T, h *testHarness) {
+					h.mockProcessorFactory.processors["shard-A"] = &mockShardProcessor{
+						SubmitFunc: func(_ *internal.FlowItem) error { return internal.ErrProcessorBusy },
+					}
+					h.mockProcessorFactory.processors["shard-B"] = &mockShardProcessor{
+						SubmitFunc: func(_ *internal.FlowItem) error { return internal.ErrProcessorBusy },
+						SubmitOrBlockFunc: func(_ context.Context, item *internal.FlowItem) error {
+							go item.Finalize(types.QueueOutcomeDispatched, nil)
+							return nil
+						},
+					}
+				},
+				expectedOutcome: types.QueueOutcomeDispatched,
+			},
+			{
+				name:   "Rejects_AfterBlocking_WithAllProcessorsRemainingBusy",
+				shards: []contracts.RegistryShard{newMockShard("shard-A").build()},
+				setupProcessors: func(t *testing.T, h *testHarness) {
+					h.mockProcessorFactory.processors["shard-A"] = &mockShardProcessor{
+						SubmitFunc:        func(_ *internal.FlowItem) error { return internal.ErrProcessorBusy },
+						SubmitOrBlockFunc: func(_ context.Context, _ *internal.FlowItem) error { return context.DeadlineExceeded },
+					}
+				},
+				expectedOutcome: types.QueueOutcomeRejectedCapacity,
+				expectErr:       true,
+			},
+		}
+
+		for _, tc := range testCases {
+			t.Run(tc.name, func(t *testing.T) {
+				t.Parallel()
+				mockRegistry := &mockRegistryClient{}
+				h := newUnitHarness(t, t.Context(), Config{}, mockRegistry)
+				mockRegistry.WithConnectionFunc = func(
+					_ types.FlowKey,
+					fn func(conn contracts.ActiveFlowConnection) error,
+				) error {
+					return fn(&mockActiveFlowConnection{ActiveShardsV: tc.shards})
+				}
+				tc.setupProcessors(t, h)
+				outcome, err := h.fc.EnqueueAndWait(newTestRequest(context.Background(), defaultFlowKey))
+				if tc.expectErr {
+					require.Error(t, err, "expected an error but got nil")
+				} else {
+					require.NoError(t, err, "expected no error but got: %v", err)
+				}
+				assert.Equal(t, tc.expectedOutcome, outcome, "outcome did not match expected value")
+			})
+		}
+	})
+
+	t.Run("Retry", func(t *testing.T) {
+		t.Parallel()
+
+		t.Run("Rejects_OnRequestContextCancelledWhileBlocking", func(t *testing.T) {
+			t.Parallel()
+			mockRegistry := &mockRegistryClient{
+				WithConnectionFunc: func(
+					_ types.FlowKey,
+					fn func(conn contracts.ActiveFlowConnection,
+					) error) error {
+					return fn(&mockActiveFlowConnection{
+						ActiveShardsV: []contracts.RegistryShard{newMockShard("shard-A").build()},
+					})
+				},
+			}
+			h := newUnitHarness(t, t.Context(), Config{}, mockRegistry)
+			h.mockProcessorFactory.processors["shard-A"] = &mockShardProcessor{
+				SubmitFunc:        func(_ *internal.FlowItem) error { return internal.ErrProcessorBusy },
+				SubmitOrBlockFunc: func(ctx context.Context, _ *internal.FlowItem) error { <-ctx.Done(); return ctx.Err() },
+			}
+			reqCtx, cancelReq := context.WithCancel(context.Background())
+			go func() { time.Sleep(50 * time.Millisecond); cancelReq() }()
+
+			outcome, err := h.fc.EnqueueAndWait(newTestRequest(reqCtx, defaultFlowKey))
+
+			require.Error(t, err, "EnqueueAndWait must fail when context is cancelled during a blocking submit")
+			assert.ErrorIs(t, err, types.ErrRejected, "error should wrap ErrRejected")
+			assert.ErrorIs(t, err, context.Canceled, "error should wrap the underlying ctx.Err()")
+			assert.Equal(t, types.QueueOutcomeRejectedCapacity, outcome, "outcome should be QueueOutcomeRejectedCapacity")
+		})
+
+		t.Run("RetriesAndSucceeds_OnProcessorReportsShardDraining", func(t *testing.T) {
+			t.Parallel()
+			var callCount atomic.Int32
+			mockRegistry := &mockRegistryClient{
+				WithConnectionFunc: func(
+					_ types.FlowKey,
+					fn func(conn contracts.ActiveFlowConnection) error,
+				) error {
+					attempt := callCount.Add(1)
+					shardA := newMockShard("shard-A").withByteSize(100).build()
+					shardB := newMockShard("shard-B").withByteSize(1000).build()
+					if attempt == 1 {
+						return fn(&mockActiveFlowConnection{ActiveShardsV: []contracts.RegistryShard{shardA, shardB}})
+					}
+					return fn(&mockActiveFlowConnection{ActiveShardsV: []contracts.RegistryShard{shardB}})
+				},
+			}
+			h := newUnitHarness(t, t.Context(), Config{}, mockRegistry)
+			h.mockProcessorFactory.processors["shard-A"] = &mockShardProcessor{
+				SubmitFunc: func(item *internal.FlowItem) error {
+					go item.Finalize(types.QueueOutcomeRejectedOther, contracts.ErrShardDraining)
+					return nil
+				},
+			}
+			h.mockProcessorFactory.processors["shard-B"] = &mockShardProcessor{
+				SubmitFunc: func(item *internal.FlowItem) error {
+					go item.Finalize(types.QueueOutcomeDispatched, nil)
+					return nil
+				},
+			}
+
+			outcome, err := h.fc.EnqueueAndWait(newTestRequest(context.Background(), defaultFlowKey))
+			require.NoError(t, err, "EnqueueAndWait must succeed after retrying on a healthy shard")
+			assert.Equal(t, types.QueueOutcomeDispatched, outcome, "outcome should be QueueOutcomeDispatched")
+			assert.Equal(t, int32(2), callCount.Load(), "registry must be consulted for Active shards on each retry attempt")
+		})
+	})
+}
+
+func TestFlowController_Lifecycle(t *testing.T) {
+	t.Parallel()
+
+	t.Run("Reconciliation", func(t *testing.T) {
+		t.Parallel()
+
+		mockRegistry := &mockRegistryClient{
+			// Configure the mock registry to report the new state without the stale shard.
+			ShardStatsFunc: func() []contracts.ShardStats {
+				return []contracts.ShardStats{{ID: "shard-A"}}
+			}}
+		h := newUnitHarness(t, t.Context(), Config{}, mockRegistry)
+
+		// Pre-populate the controller with initial workers.
+		initialShards := []string{"shard-A", "stale-shard"}
+		for _, shardID := range initialShards {
+			currentShardID := shardID
+			h.mockProcessorFactory.processors[currentShardID] = &mockShardProcessor{runStarted: make(chan struct{})}
+			shard := &mocks.MockRegistryShard{IDFunc: func() string { return currentShardID }}
+			h.fc.getOrStartWorker(shard)
+		}
+		require.Len(t, h.mockProcessorFactory.processors, 2, "pre-condition: initial workers not set up correctly")
+
+		// Wait for all workers to have started and set their contexts before proceeding with the test.
+		for id, p := range h.mockProcessorFactory.processors {
+			proc := p
+			select {
+			case <-proc.runStarted:
+				// Success
+			case <-time.After(2 * time.Second):
+				t.Fatalf("timed out waiting for worker %s to start", id)
+			}
+		}
+
+		// Manually trigger the reconciliation loop logic.
+		h.fc.reconcileProcessors()
+
+		t.Run("StaleWorkerIsCancelled", func(t *testing.T) {
+			staleProc := h.mockProcessorFactory.processors["stale-shard"]
+			require.NotNil(t, staleProc.Context(), "precondition: stale processor context should have been captured")
+			select {
+			case <-staleProc.Context().Done():
+				// Success
+			case <-time.After(100 * time.Millisecond):
+				t.Error("context of removed worker must be cancelled")
+			}
+		})
+
+		t.Run("ActiveWorkerIsNotCancelled", func(t *testing.T) {
+			activeProc := h.mockProcessorFactory.processors["shard-A"]
+			require.NotNil(t, activeProc.Context(), "precondition: active processor context should have been captured")
+			select {
+			case <-activeProc.Context().Done():
+				t.Error("context of remaining worker must not be cancelled")
+			default:
+				// Success
+			}
+		})
+
+		t.Run("WorkerMapIsUpdated", func(t *testing.T) {
+			_, ok := h.fc.workers.Load("stale-shard")
+			assert.False(t, ok, "stale worker must be removed from the controller's map")
+			_, ok = h.fc.workers.Load("shard-A")
+			assert.True(t, ok, "active worker must remain in the controller's map")
+		})
+	})
+
+	t.Run("Reconciliation_IsTriggeredByTicker", func(t *testing.T) {
+		t.Parallel()
+		reconciliationInterval := 10 * time.Second
+		mockRegistry := &mockRegistryClient{}
+
+		var reconcileCount atomic.Int32
+		mockRegistry.ShardStatsFunc = func() []contracts.ShardStats {
+			reconcileCount.Add(1)
+			return nil
+		}
+
+		h := newUnitHarness(t, t.Context(), Config{ProcessorReconciliationInterval: reconciliationInterval}, mockRegistry)
+
+		// Wait for the reconciliation loop to start and create the ticker.
+		// This prevents a race where the clock is stepped before the ticker is registered.
+		require.Eventually(t, h.mockClock.HasWaiters, time.Second, 10*time.Millisecond, "ticker was not created")
+
+		// Advance the clock to trigger the next reconciliation.
+		h.mockClock.Step(reconciliationInterval)
+
+		assert.Eventually(t, func() bool {
+			return reconcileCount.Load() == 1
+		}, time.Second, 10*time.Millisecond, "reconciliation was not triggered by the ticker")
+
+		// Advance the clock again to ensure it continues to fire.
+		h.mockClock.Step(reconciliationInterval)
+		assert.Eventually(t, func() bool {
+			return reconcileCount.Load() == 2
+		}, time.Second, 10*time.Millisecond, "reconciliation did not fire on the second tick")
+	})
+
+	t.Run("WorkerCreationRace", func(t *testing.T) {
+		t.Parallel()
+
+		// This test requires manual control over the shard processor factory to deterministically create a race.
+		factoryEntered := make(chan *mockShardProcessor, 2)
+		continueFactory := make(chan struct{})
+
+		h := newUnitHarness(t, t.Context(), Config{}, &mockRegistryClient{})
+		h.fc.shardProcessorFactory = func(
+			shard contracts.RegistryShard,
+			_ internal.BandFilter,
+			_ clock.Clock,
+			_ time.Duration,
+			_ int,
+			_ logr.Logger,
+		) shardProcessor {
+			// This factory function will be called by `startNewWorker`.
+			// We use channels to pause execution here, allowing two goroutines to enter this function before one "wins"
+			// the `LoadOrStore` race.
+			proc := &mockShardProcessor{runStarted: make(chan struct{})}
+			factoryEntered <- proc
+			<-continueFactory
+			return proc
+		}
+
+		shard := newMockShard("race-shard").build()
+		var wg sync.WaitGroup
+		wg.Add(2)
+
+		// Start two goroutines that will race to create the same worker.
+		go func() {
+			defer wg.Done()
+			h.fc.getOrStartWorker(shard)
+		}()
+		go func() {
+			defer wg.Done()
+			h.fc.getOrStartWorker(shard)
+		}()
+
+		// Wait for both goroutines to have entered the factory and created a processor.
+		// This confirms they both missed the initial `workers.Load` check.
+		proc1 := <-factoryEntered
+		proc2 := <-factoryEntered
+
+		// Unblock both goroutines, allowing them to race to `workers.LoadOrStore`.
+		close(continueFactory)
+		wg.Wait()
+
+		// One processor "won" and was stored, the other "lost" and should have been cancelled.
+		actual, ok := h.fc.workers.Load("race-shard")
+		require.True(t, ok, "a worker should have been stored in the map")
+
+		storedWorker := actual.(*managedWorker)
+		winnerProc := storedWorker.processor.(*mockShardProcessor)
+
+		var loserProc *mockShardProcessor
+		if winnerProc == proc1 {
+			loserProc = proc2
+		} else {
+			loserProc = proc1
+		}
+
+		// Wait for the `Run` method to be called on the winning processor to ensure its context is available.
+		select {
+		case <-winnerProc.runStarted:
+		// Success.
+		case <-time.After(1 * time.Second):
+			t.Fatal("timed out waiting for winning worker to start")
+		}
+
+		// The winning processor's context must remain active.
+		require.NotNil(t, winnerProc.Context(), "winner's context should not be nil")
+		select {
+		case <-winnerProc.Context().Done():
+			t.Error("context of the winning worker should not be cancelled")
+		default:
+			// Success
+		}
+
+		// The losing processor's `Run` method must not be called, and its context should be nil.
+		select {
+		case <-loserProc.runStarted:
+			t.Error("Run was called on the losing worker, but it should not have been")
+		default:
+			// Success
+		}
+		assert.Nil(t, loserProc.Context(), "loser's context should be nil as Run is never called")
+	})
+}
+
+func TestFlowController_Concurrency(t *testing.T) {
+	const (
+		numShards     = 4
+		numGoroutines = 50
+		numRequests   = 200
+	)
+
+	// Set up a realistic registry that vends real components to the processor.
+	mockRegistry := &mockRegistryClient{}
+	shards := make([]contracts.RegistryShard, numShards)
+	queues := make(map[string]contracts.ManagedQueue)
+	for i := range numShards {
+		shardID := fmt.Sprintf("shard-%d", i)
+		queues[shardID] = &mocks.MockManagedQueue{FlowKeyV: defaultFlowKey} // Use the high-fidelity mock queue.
+		shards[i] = &mocks.MockRegistryShard{
+			IDFunc: func() string { return shardID },
+			ManagedQueueFunc: func(_ types.FlowKey) (contracts.ManagedQueue, error) {
+				return queues[shardID], nil
+			},
+			AllOrderedPriorityLevelsFunc: func() []int { return []int{100} },
+			PriorityBandAccessorFunc: func(priority int) (framework.PriorityBandAccessor, error) {
+				if priority == 100 {
+					return &frameworkmocks.MockPriorityBandAccessor{
+						PriorityNameV: "high",
+						PriorityV:     100,
+						IterateQueuesFunc: func(f func(framework.FlowQueueAccessor) bool) {
+							f(queues[shardID].FlowQueueAccessor())
+						},
+					}, nil
+				}
+				return nil, fmt.Errorf("unexpected priority %d", priority)
+			},
+			IntraFlowDispatchPolicyFunc: func(_ types.FlowKey) (framework.IntraFlowDispatchPolicy, error) {
+				return &frameworkmocks.MockIntraFlowDispatchPolicy{
+					SelectItemFunc: func(qa framework.FlowQueueAccessor) (types.QueueItemAccessor, error) {
+						return qa.PeekHead()
+					},
+				}, nil
+			},
+			InterFlowDispatchPolicyFunc: func(_ int) (framework.InterFlowDispatchPolicy, error) {
+				return &frameworkmocks.MockInterFlowDispatchPolicy{
+					SelectQueueFunc: func(band framework.PriorityBandAccessor) (framework.FlowQueueAccessor, error) {
+						return queues[shardID].FlowQueueAccessor(), nil
+					},
+				}, nil
+			},
+			StatsFunc: func() contracts.ShardStats {
+				return contracts.ShardStats{
+					ID:            shardID,
+					TotalLen:      uint64(queues[shardID].Len()),
+					TotalByteSize: queues[shardID].ByteSize(),
+					PerPriorityBandStats: map[int]contracts.PriorityBandStats{
+						100: {
+							Len:           uint64(queues[shardID].Len()),
+							ByteSize:      queues[shardID].ByteSize(),
+							CapacityBytes: 1e9, // Effectively unlimited capacity
+						},
+					},
+				}
+			},
+		}
+	}
+	mockRegistry.WithConnectionFunc = func(_ types.FlowKey, fn func(conn contracts.ActiveFlowConnection) error) error {
+		return fn(&mockActiveFlowConnection{ActiveShardsV: shards})
+	}
+	mockRegistry.ShardStatsFunc = func() []contracts.ShardStats {
+		stats := make([]contracts.ShardStats, len(shards))
+		for i, shard := range shards {
+			stats[i] = shard.Stats()
+		}
+		return stats
+	}
+	h := newIntegrationHarness(t, t.Context(), Config{
+		// Use a generous buffer to prevent flakes in the test due to transient queuing delays.
+		EnqueueChannelBufferSize: numRequests,
+		DefaultRequestTTL:        1 * time.Second,
+		ExpiryCleanupInterval:    100 * time.Millisecond,
+	}, mockRegistry)
+
+	var wg sync.WaitGroup
+	wg.Add(numGoroutines)
+	outcomes := make(chan types.QueueOutcome, numRequests)
+	for range numGoroutines {
+		go func() {
+			defer wg.Done()
+			for range numRequests / numGoroutines {
+				req := newTestRequest(logr.NewContext(context.Background(), logr.Discard()), defaultFlowKey)
+				outcome, err := h.fc.EnqueueAndWait(req)
+				if err != nil {
+					// Use `t.Errorf` for concurrent tests to avoid halting execution on a single failure.
+					t.Errorf("EnqueueAndWait failed unexpectedly: %v", err)
+				}
+				outcomes <- outcome
+			}
+		}()
+	}
+	wg.Wait()
+	close(outcomes)
+
+	successCount := 0
+	for outcome := range outcomes {
+		if outcome == types.QueueOutcomeDispatched {
+			successCount++
+		}
+	}
+	require.Equal(t, numRequests, successCount, "all concurrent requests should be dispatched successfully")
+}
diff --git a/pkg/epp/flowcontrol/controller/internal/item_test.go b/pkg/epp/flowcontrol/controller/internal/item_test.go
index d50aaed..1f713e9 100644
--- a/pkg/epp/flowcontrol/controller/internal/item_test.go
+++ b/pkg/epp/flowcontrol/controller/internal/item_test.go
@@ -18,6 +18,7 @@ package internal
 
 import (
 	"context"
+	"errors"
 	"testing"
 	"time"
 
@@ -28,25 +29,47 @@ import (
 	typesmocks "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/types/mocks"
 )
 
-func TestItem(t *testing.T) {
+func TestFlowItem_New(t *testing.T) {
 	t.Parallel()
+	req := typesmocks.NewMockFlowControlRequest(100, "req-1", types.FlowKey{}, context.Background())
 
-	t.Run("should correctly set and get handle", func(t *testing.T) {
-		t.Parallel()
-		item := &flowItem{}
-		handle := &typesmocks.MockQueueItemHandle{}
-		item.SetHandle(handle)
-		assert.Same(t, handle, item.Handle(), "Handle() should retrieve the same handle instance set by SetHandle()")
-	})
-
-	t.Run("should have a non-finalized state upon creation", func(t *testing.T) {
-		t.Parallel()
-		key := types.FlowKey{ID: "flow-a", Priority: 10}
-		req := typesmocks.NewMockFlowControlRequest(100, "req-1", key, context.Background())
-		item := NewItem(req, time.Minute, time.Now())
-		require.NotNil(t, item, "NewItem should not return nil")
-		outcome, err := item.FinalState()
-		assert.Equal(t, types.QueueOutcomeNotYetFinalized, outcome, "A new item's outcome should be NotYetFinalized")
-		assert.NoError(t, err, "A new item should have a nil error")
-	})
+	item := NewItem(req, time.Minute, time.Now())
+
+	require.NotNil(t, item, "NewItem should not return a nil item")
+	assert.False(t, item.isFinalized(), "a new item must not be in a finalized state")
+	select {
+	case <-item.Done():
+		t.Fatal("Done() channel for a new item must block, but it was closed")
+	default:
+		// This is the expected path, as the channel would have blocked.
+	}
+}
+
+func TestFlowItem_Handle(t *testing.T) {
+	t.Parallel()
+	item := &FlowItem{}
+	handle := &typesmocks.MockQueueItemHandle{}
+	item.SetHandle(handle)
+	assert.Same(t, handle, item.Handle(), "Handle() must retrieve the identical handle instance set by SetHandle()")
+}
+
+func TestFlowItem_Finalize_Idempotency(t *testing.T) {
+	t.Parallel()
+	req := typesmocks.NewMockFlowControlRequest(100, "req-1", types.FlowKey{}, context.Background())
+	item := NewItem(req, time.Minute, time.Now())
+	expectedErr := errors.New("first-error")
+
+	item.Finalize(types.QueueOutcomeEvictedTTL, expectedErr)
+	item.Finalize(types.QueueOutcomeDispatched, nil) // Should take no effect
+
+	assert.True(t, item.isFinalized(), "item must be in a finalized state after a call to finalize()")
+	select {
+	case finalState, ok := <-item.Done():
+		require.True(t, ok, "Done() channel should be readable with a value, not just closed")
+		assert.Equal(t, types.QueueOutcomeEvictedTTL, finalState.Outcome,
+			"the outcome from Done() must match the first finalized outcome")
+		assert.Equal(t, expectedErr, finalState.Err, "the error from Done() must match the first finalized error")
+	case <-time.After(50 * time.Millisecond):
+		t.Fatal("Done() channel must not block after finalization")
+	}
 }
diff --git a/pkg/epp/flowcontrol/controller/internal/processor_test.go b/pkg/epp/flowcontrol/controller/internal/processor_test.go
index 81807e0..461cb34 100644
--- a/pkg/epp/flowcontrol/controller/internal/processor_test.go
+++ b/pkg/epp/flowcontrol/controller/internal/processor_test.go
@@ -53,6 +53,7 @@ import (
 	"github.com/go-logr/logr"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
+	testclock "k8s.io/utils/clock/testing"
 	"sigs.k8s.io/controller-runtime/pkg/log"
 	"sigs.k8s.io/controller-runtime/pkg/log/zap"
 
@@ -79,28 +80,6 @@ func TestMain(m *testing.M) {
 	os.Exit(m.Run())
 }
 
-// mockClock allows for controlling time in tests.
-type mockClock struct {
-	mu          sync.Mutex
-	currentTime time.Time
-}
-
-func newMockClock() *mockClock {
-	return &mockClock{currentTime: time.Now()}
-}
-
-func (c *mockClock) Now() time.Time {
-	c.mu.Lock()
-	defer c.mu.Unlock()
-	return c.currentTime
-}
-
-func (c *mockClock) Advance(d time.Duration) {
-	c.mu.Lock()
-	defer c.mu.Unlock()
-	c.currentTime = c.currentTime.Add(d)
-}
-
 // testHarness provides a unified, mock-based testing environment for the ShardProcessor. It centralizes all mock state
 // and provides helper methods for setting up tests and managing the processor's lifecycle.
 type testHarness struct {
@@ -115,7 +94,7 @@ type testHarness struct {
 
 	// Core components under test
 	processor *ShardProcessor
-	mockClock *mockClock
+	clock     *testclock.FakeClock
 	logger    logr.Logger
 
 	// --- Centralized Mock State ---
@@ -135,7 +114,7 @@ func newTestHarness(t *testing.T, expiryCleanupInterval time.Duration) *testHarn
 	h := &testHarness{
 		t:                 t,
 		MockRegistryShard: &mocks.MockRegistryShard{},
-		mockClock:         newMockClock(),
+		clock:             testclock.NewFakeClock(time.Now()),
 		logger:            logr.Discard(),
 		startSignal:       make(chan struct{}),
 		queues:            make(map[types.FlowKey]*mocks.MockManagedQueue),
@@ -167,8 +146,11 @@ func newTestHarness(t *testing.T, expiryCleanupInterval time.Duration) *testHarn
 	) (framework.PriorityBandAccessor, bool) {
 		return nil, false
 	}
-	h.processor = NewShardProcessor(h, filter, h.mockClock, expiryCleanupInterval, h.logger)
+	h.processor = NewShardProcessor(h, filter, h.clock, expiryCleanupInterval, 100, h.logger)
 	require.NotNil(t, h.processor, "NewShardProcessor should not return nil")
+
+	t.Cleanup(func() { h.Stop() })
+
 	return h
 }
 
@@ -202,23 +184,23 @@ func (h *testHarness) Stop() {
 }
 
 // waitForFinalization blocks until an item is finalized or a timeout is reached.
-func (h *testHarness) waitForFinalization(item *flowItem) (types.QueueOutcome, error) {
+func (h *testHarness) waitForFinalization(item *FlowItem) (types.QueueOutcome, error) {
 	h.t.Helper()
 	select {
-	case <-item.Done():
-		return item.FinalState()
+	case finalState := <-item.Done():
+		return finalState.Outcome, finalState.Err
 	case <-time.After(testWaitTimeout):
 		h.t.Fatalf("Timed out waiting for item %q to be finalized", item.OriginalRequest().ID())
 		return types.QueueOutcomeNotYetFinalized, nil
 	}
 }
 
-// newTestItem creates a new flowItem for testing purposes.
-func (h *testHarness) newTestItem(id string, key types.FlowKey, ttl time.Duration) *flowItem {
+// newTestItem creates a new FlowItem for testing purposes.
+func (h *testHarness) newTestItem(id string, key types.FlowKey, ttl time.Duration) *FlowItem {
 	h.t.Helper()
 	ctx := log.IntoContext(context.Background(), h.logger)
 	req := typesmocks.NewMockFlowControlRequest(100, id, key, ctx)
-	return NewItem(req, ttl, h.mockClock.Now())
+	return NewItem(req, ttl, h.clock.Now())
 }
 
 // addQueue centrally registers a new mock queue for a given flow, ensuring all harness components are aware of it.
@@ -226,13 +208,9 @@ func (h *testHarness) addQueue(key types.FlowKey) *mocks.MockManagedQueue {
 	h.t.Helper()
 	h.mu.Lock()
 	defer h.mu.Unlock()
-
 	mockQueue := &mocks.MockManagedQueue{FlowKeyV: key}
 	h.queues[key] = mockQueue
-
-	// Add the key to the correct priority band, creating the band if needed.
 	h.priorityFlows[key.Priority] = append(h.priorityFlows[key.Priority], key)
-
 	return mockQueue
 }
 
@@ -334,9 +312,9 @@ func (h *testHarness) intraFlowDispatchPolicy(types.FlowKey) (framework.IntraFlo
 func TestShardProcessor(t *testing.T) {
 	t.Parallel()
 
-	// Lifecycle tests use the processor's main `Run` loop to verify the complete end-to-end lifecycle of a request, from
+	// Integration tests use the processor's main `Run` loop to verify the complete end-to-end lifecycle of a request, from
 	// `Enqueue` to its final outcome.
-	t.Run("Lifecycle", func(t *testing.T) {
+	t.Run("Integration", func(t *testing.T) {
 		t.Parallel()
 
 		t.Run("should dispatch item successfully", func(t *testing.T) {
@@ -344,12 +322,11 @@ func TestShardProcessor(t *testing.T) {
 			// --- ARRANGE ---
 			h := newTestHarness(t, testCleanupTick)
 			item := h.newTestItem("req-dispatch-success", testFlow, testTTL)
-			h.addQueue(types.FlowKey{ID: testFlow.ID, Priority: testFlow.Priority})
+			h.addQueue(testFlow)
 
 			// --- ACT ---
 			h.Start()
-			defer h.Stop()
-			h.processor.Enqueue(item)
+			require.NoError(t, h.processor.Submit(item), "precondition: Submit should not fail")
 			h.Go()
 
 			// --- ASSERT ---
@@ -372,8 +349,7 @@ func TestShardProcessor(t *testing.T) {
 
 			// --- ACT ---
 			h.Start()
-			defer h.Stop()
-			h.processor.Enqueue(item)
+			require.NoError(t, h.processor.Submit(item), "precondition: Submit should not fail")
 			h.Go()
 
 			// --- ASSERT ---
@@ -396,7 +372,7 @@ func TestShardProcessor(t *testing.T) {
 			// --- ACT ---
 			h.Start()
 			defer h.Stop()
-			h.processor.Enqueue(item)
+			require.NoError(t, h.processor.Submit(item), "precondition: Submit should not fail")
 			h.Go()
 
 			// --- ASSERT ---
@@ -416,15 +392,14 @@ func TestShardProcessor(t *testing.T) {
 			// --- ACT ---
 			h.Start()
 			h.Go()
-			// Stop the processor, then immediately try to enqueue.
-			h.Stop()
-			h.processor.Enqueue(item)
+			h.Stop() // Stop the processor, then immediately try to enqueue.
+			require.NoError(t, h.processor.Submit(item), "precondition: Submit should not fail, even on shutdown")
 
 			// --- ASSERT ---
 			outcome, err := h.waitForFinalization(item)
 			assert.Equal(t, types.QueueOutcomeRejectedOther, outcome, "The outcome should be RejectedOther")
 			require.Error(t, err, "An eviction on shutdown should produce an error")
-			assert.ErrorIs(t, err, types.ErrFlowControllerShutdown, "The error should be of type ErrFlowControllerShutdown")
+			assert.ErrorIs(t, err, types.ErrFlowControllerNotRunning, "The error should be of type ErrFlowControllerNotRunning")
 		})
 
 		t.Run("should evict item on TTL expiry via background cleanup", func(t *testing.T) {
@@ -436,13 +411,12 @@ func TestShardProcessor(t *testing.T) {
 
 			// --- ACT ---
 			h.Start()
-			defer h.Stop()
-			h.processor.Enqueue(item)
+			require.NoError(t, h.processor.Submit(item), "precondition: Submit should not fail")
 			h.Go()
 
-			// Let time pass for the item to expire and for the background cleanup to run.
-			h.mockClock.Advance(testShortTTL * 2)
-			time.Sleep(testCleanupTick * 3) // Allow the cleanup goroutine time to run.
+			h.clock.Step(testShortTTL * 2) // Let time pass for the item to expire.
+			// Manually invoke the cleanup logic to simulate a tick of the cleanup loop deterministically.
+			h.processor.cleanupExpired(h.clock.Now())
 
 			// --- ASSERT ---
 			outcome, err := h.waitForFinalization(item)
@@ -451,52 +425,22 @@ func TestShardProcessor(t *testing.T) {
 			assert.ErrorIs(t, err, types.ErrTTLExpired, "The error should be of type ErrTTLExpired")
 		})
 
-		t.Run("should evict item at moment of dispatch if TTL has expired", func(t *testing.T) {
-			t.Parallel()
-			// --- ARRANGE ---
-			h := newTestHarness(t, 1*time.Hour) // Disable background cleanup to isolate dispatch logic.
-			item := h.newTestItem("req-expired-dispatch-evict", testFlow, testShortTTL)
-			mockQueue := h.addQueue(testFlow)
-			require.NoError(t, mockQueue.Add(item), "Adding item to mock queue should not fail")
-
-			// Have the policy select the item, but then advance time so it's expired by the time dispatchItem actually runs.
-			h.interFlowPolicySelectQueue = func(band framework.PriorityBandAccessor) (framework.FlowQueueAccessor, error) {
-				h.mockClock.Advance(testShortTTL * 2)
-				return mockQueue.FlowQueueAccessor(), nil
-			}
-
-			// --- ACT ---
-			h.Start()
-			defer h.Stop()
-			h.Go()
-
-			// The run loop will pick up the item and attempt dispatch, which will fail internally.
-			// We need a small sleep to allow the non-blocking run loop to process.
-			time.Sleep(50 * time.Millisecond)
-
-			// --- ASSERT ---
-			outcome, err := h.waitForFinalization(item)
-			assert.Equal(t, types.QueueOutcomeEvictedTTL, outcome, "The final outcome should be EvictedTTL")
-			require.Error(t, err, "An eviction at dispatch time should produce an error")
-			assert.ErrorIs(t, err, types.ErrTTLExpired, "The error should be of type ErrTTLExpired")
-		})
-
 		t.Run("should evict item on context cancellation", func(t *testing.T) {
 			t.Parallel()
 			// --- ARRANGE ---
 			h := newTestHarness(t, testCleanupTick)
 			ctx, cancel := context.WithCancel(context.Background())
 			req := typesmocks.NewMockFlowControlRequest(100, "req-ctx-cancel", testFlow, ctx)
-			item := NewItem(req, testTTL, h.mockClock.Now())
+			item := NewItem(req, testTTL, h.clock.Now())
 			h.addQueue(testFlow)
 
 			// --- ACT ---
 			h.Start()
-			defer h.Stop()
-			h.processor.Enqueue(item)
+			require.NoError(t, h.processor.Submit(item), "precondition: Submit should not fail")
 			h.Go()
-			cancel()                        // Cancel the context *after* the item is enqueued.
-			time.Sleep(testCleanupTick * 3) // Allow the cleanup goroutine time to run.
+			cancel() // Cancel the context after the item is enqueued.
+			// Manually invoke the cleanup logic to deterministically check for the cancelled context.
+			h.processor.cleanupExpired(h.clock.Now())
 
 			// --- ASSERT ---
 			outcome, err := h.waitForFinalization(item)
@@ -528,7 +472,7 @@ func TestShardProcessor(t *testing.T) {
 			outcome, err := h.waitForFinalization(item)
 			assert.Equal(t, types.QueueOutcomeEvictedOther, outcome, "The outcome should be EvictedOther")
 			require.Error(t, err, "An eviction on shutdown should produce an error")
-			assert.ErrorIs(t, err, types.ErrFlowControllerShutdown, "The error should be of type ErrFlowControllerShutdown")
+			assert.ErrorIs(t, err, types.ErrFlowControllerNotRunning, "The error should be of type ErrFlowControllerNotRunning")
 		})
 
 		t.Run("should handle concurrent enqueues and dispatch all items", func(t *testing.T) {
@@ -537,7 +481,7 @@ func TestShardProcessor(t *testing.T) {
 			h := newTestHarness(t, testCleanupTick)
 			const numConcurrentItems = 20
 			q := h.addQueue(testFlow)
-			itemsToTest := make([]*flowItem, 0, numConcurrentItems)
+			itemsToTest := make([]*FlowItem, 0, numConcurrentItems)
 			for i := 0; i < numConcurrentItems; i++ {
 				item := h.newTestItem(fmt.Sprintf("req-concurrent-%d", i), testFlow, testTTL)
 				itemsToTest = append(itemsToTest, item)
@@ -549,9 +493,9 @@ func TestShardProcessor(t *testing.T) {
 			var wg sync.WaitGroup
 			for _, item := range itemsToTest {
 				wg.Add(1)
-				go func(fi *flowItem) {
+				go func(fi *FlowItem) {
 					defer wg.Done()
-					h.processor.Enqueue(fi)
+					require.NoError(t, h.processor.Submit(fi), "Submit should not fail")
 				}(item)
 			}
 			h.Go()
@@ -600,8 +544,8 @@ func TestShardProcessor(t *testing.T) {
 			<-itemIsBeingDispatched
 
 			// 3. The dispatch goroutine is now paused. We can now safely win the "race" by running cleanup logic.
-			h.mockClock.Advance(testShortTTL * 2)
-			h.processor.cleanupExpired(h.mockClock.Now()) // This will remove and finalize the item.
+			h.clock.Step(testShortTTL * 2)
+			h.processor.cleanupExpired(h.clock.Now()) // This will remove and finalize the item.
 
 			// 5. Un-pause the dispatch goroutine. It will now fail to remove the item and the `dispatchCycle` will
 			//    correctly conclude without finalizing the item a second time.
@@ -650,7 +594,7 @@ func TestShardProcessor(t *testing.T) {
 			h.Start()
 			defer h.Stop()
 			h.Go()
-			h.processor.Enqueue(nil)
+			require.NoError(t, h.processor.Submit(nil), "Submit should not fail")
 
 			// --- ASSERT ---
 			// Allow a moment for the processor to potentially process the nil item.
@@ -669,19 +613,18 @@ func TestShardProcessor(t *testing.T) {
 			testCases := []struct {
 				name         string
 				setupHarness func(h *testHarness)
-				item         *flowItem
-				assert       func(t *testing.T, h *testHarness, item *flowItem)
+				item         *FlowItem
+				assert       func(t *testing.T, h *testHarness, item *FlowItem)
 			}{
 				{
 					name: "should reject item on registry queue lookup failure",
 					setupHarness: func(h *testHarness) {
 						h.ManagedQueueFunc = func(types.FlowKey) (contracts.ManagedQueue, error) { return nil, testErr }
 					},
-					assert: func(t *testing.T, h *testHarness, item *flowItem) {
-						outcome, err := item.FinalState()
-						assert.Equal(t, types.QueueOutcomeRejectedOther, outcome, "Outcome should be RejectedOther")
-						require.Error(t, err, "An error should be returned")
-						assert.ErrorIs(t, err, testErr, "The underlying error should be preserved")
+					assert: func(t *testing.T, h *testHarness, item *FlowItem) {
+						assert.Equal(t, types.QueueOutcomeRejectedOther, item.finalState.Outcome, "Outcome should be RejectedOther")
+						require.Error(t, item.finalState.Err, "An error should be returned")
+						assert.ErrorIs(t, item.finalState.Err, testErr, "The underlying error should be preserved")
 					},
 				},
 				{
@@ -690,11 +633,10 @@ func TestShardProcessor(t *testing.T) {
 						h.addQueue(testFlow)
 						h.PriorityBandAccessorFunc = func(int) (framework.PriorityBandAccessor, error) { return nil, testErr }
 					},
-					assert: func(t *testing.T, h *testHarness, item *flowItem) {
-						outcome, err := item.FinalState()
-						assert.Equal(t, types.QueueOutcomeRejectedOther, outcome, "Outcome should be RejectedOther")
-						require.Error(t, err, "An error should be returned")
-						assert.ErrorIs(t, err, testErr, "The underlying error should be preserved")
+					assert: func(t *testing.T, h *testHarness, item *FlowItem) {
+						assert.Equal(t, types.QueueOutcomeRejectedOther, item.finalState.Outcome, "Outcome should be RejectedOther")
+						require.Error(t, item.finalState.Err, "An error should be returned")
+						assert.ErrorIs(t, item.finalState.Err, testErr, "The underlying error should be preserved")
 					},
 				},
 				{
@@ -703,11 +645,10 @@ func TestShardProcessor(t *testing.T) {
 						mockQueue := h.addQueue(testFlow)
 						mockQueue.AddFunc = func(types.QueueItemAccessor) error { return testErr }
 					},
-					assert: func(t *testing.T, h *testHarness, item *flowItem) {
-						outcome, err := item.FinalState()
-						assert.Equal(t, types.QueueOutcomeRejectedOther, outcome, "Outcome should be RejectedOther")
-						require.Error(t, err, "An error should be returned")
-						assert.ErrorIs(t, err, testErr, "The underlying error should be preserved")
+					assert: func(t *testing.T, h *testHarness, item *FlowItem) {
+						assert.Equal(t, types.QueueOutcomeRejectedOther, item.finalState.Outcome, "Outcome should be RejectedOther")
+						require.Error(t, item.finalState.Err, "An error should be returned")
+						assert.ErrorIs(t, item.finalState.Err, testErr, "The underlying error should be preserved")
 					},
 				},
 				{
@@ -724,17 +665,16 @@ func TestShardProcessor(t *testing.T) {
 							assert.Equal(t, 0, addCallCount, "Queue.Add should not have been called for a finalized item")
 						})
 					},
-					item: func() *flowItem {
+					item: func() *FlowItem {
 						// Create a pre-finalized item.
 						item := newTestHarness(t, 0).newTestItem("req-finalized", testFlow, testTTL)
-						item.finalize(types.QueueOutcomeDispatched, nil)
+						item.Finalize(types.QueueOutcomeDispatched, nil)
 						return item
 					}(),
-					assert: func(t *testing.T, h *testHarness, item *flowItem) {
+					assert: func(t *testing.T, h *testHarness, item *FlowItem) {
 						// The item was already finalized, so its state should not change.
-						outcome, err := item.FinalState()
-						assert.Equal(t, types.QueueOutcomeDispatched, outcome, "Outcome should remain unchanged")
-						assert.NoError(t, err, "Error should remain unchanged")
+						assert.Equal(t, types.QueueOutcomeDispatched, item.finalState.Outcome, "Outcome should remain unchanged")
+						assert.NoError(t, item.finalState.Err, "Error should remain unchanged")
 					},
 				},
 			}
@@ -997,9 +937,9 @@ func TestShardProcessor(t *testing.T) {
 
 				// --- ASSERT ---
 				assert.True(t, dispatched, "An item should have been dispatched from the filtered flow")
-				outcome, err := itemB.FinalState()
-				assert.Equal(t, types.QueueOutcomeDispatched, outcome, "The dispatched item's outcome should be correct")
-				assert.NoError(t, err, "The dispatched item should not have an error")
+				assert.Equal(t, types.QueueOutcomeDispatched, itemB.finalState.Outcome,
+					"The dispatched item's outcome should be correct")
+				assert.NoError(t, itemB.finalState.Err, "The dispatched item should not have an error")
 			})
 
 			t.Run("should guarantee strict priority by starving lower priority items", func(t *testing.T) {
@@ -1012,8 +952,8 @@ func TestShardProcessor(t *testing.T) {
 				qLow := h.addQueue(keyLow)
 
 				const numItems = 3
-				highPrioItems := make([]*flowItem, numItems)
-				lowPrioItems := make([]*flowItem, numItems)
+				highPrioItems := make([]*FlowItem, numItems)
+				lowPrioItems := make([]*FlowItem, numItems)
 				for i := range numItems {
 					// Add high priority items.
 					itemH := h.newTestItem(fmt.Sprintf("req-high-%d", i), keyHigh, testTTL)
@@ -1035,9 +975,9 @@ func TestShardProcessor(t *testing.T) {
 
 				// Verify all high-priority items are gone and low-priority items remain.
 				for _, item := range highPrioItems {
-					outcome, err := item.FinalState()
-					assert.Equal(t, types.QueueOutcomeDispatched, outcome, "High-priority item should be dispatched")
-					assert.NoError(t, err, "Dispatched high-priority item should not have an error")
+					assert.Equal(t, types.QueueOutcomeDispatched, item.finalState.Outcome,
+						"High-priority item should be dispatched")
+					assert.NoError(t, item.finalState.Err, "Dispatched high-priority item should not have an error")
 				}
 				assert.Equal(t, numItems, qLow.Len(), "Low-priority queue should still be full")
 
@@ -1112,7 +1052,7 @@ func TestShardProcessor(t *testing.T) {
 				}
 
 				// --- ACT ---
-				h.mockClock.Advance(testShortTTL * 2) // Make the item expire.
+				h.clock.Step(testShortTTL * 2) // Make the item expire.
 				err := h.processor.dispatchItem(item, h.logger)
 
 				// --- ASSERT ---
@@ -1121,36 +1061,11 @@ func TestShardProcessor(t *testing.T) {
 				assert.ErrorIs(t, err, types.ErrTTLExpired, "The error should be of type ErrTTLExpired")
 
 				// Second, check the final state of the item itself.
-				outcome, finalErr := item.FinalState()
-				assert.Equal(t, types.QueueOutcomeEvictedTTL, outcome, "The item's final outcome should be EvictedTTL")
-				require.Error(t, finalErr, "The item's final state should contain an error")
-				assert.ErrorIs(t, finalErr, types.ErrTTLExpired, "The item's final error should be of type ErrTTLExpired")
-			})
-
-			t.Run("should panic if queue returns item of wrong type", func(t *testing.T) {
-				t.Parallel()
-				// --- ARRANGE ---
-				h := newTestHarness(t, testCleanupTick)
-				badItem := &typesmocks.MockQueueItemAccessor{
-					OriginalRequestV: typesmocks.NewMockFlowControlRequest(0, "bad-item", testFlow, context.Background()),
-				}
-
-				h.ManagedQueueFunc = func(types.FlowKey) (contracts.ManagedQueue, error) {
-					return &mocks.MockManagedQueue{
-						RemoveFunc: func(types.QueueItemHandle) (types.QueueItemAccessor, error) {
-							return badItem, nil
-						},
-					}, nil
-				}
-
-				itemToDispatch := h.newTestItem("req-dispatch-panic", testFlow, testTTL)
-				expectedPanicMsg := fmt.Sprintf("%s: internal error: item %q of type %T is not a *flowItem",
-					errIntraFlow, "bad-item", badItem)
-
-				// --- ACT & ASSERT ---
-				assert.PanicsWithError(t, expectedPanicMsg, func() {
-					_ = h.processor.dispatchItem(itemToDispatch, h.logger)
-				}, "A type mismatch from a queue should cause a panic")
+				assert.Equal(t, types.QueueOutcomeEvictedTTL, item.finalState.Outcome,
+					"The item's final outcome should be EvictedTTL")
+				require.Error(t, item.finalState.Err, "The item's final state should contain an error")
+				assert.ErrorIs(t, item.finalState.Err, types.ErrTTLExpired,
+					"The item's final error should be of type ErrTTLExpired")
 			})
 		})
 
@@ -1165,16 +1080,15 @@ func TestShardProcessor(t *testing.T) {
 				item := h.newTestItem("req-expired", testFlow, 1*time.Millisecond)
 				q := h.addQueue(testFlow)
 				require.NoError(t, q.Add(item))
-				cleanupTime := h.mockClock.Now().Add(10 * time.Millisecond)
+				cleanupTime := h.clock.Now().Add(10 * time.Millisecond)
 
 				// --- ACT ---
 				h.processor.cleanupExpired(cleanupTime)
 
 				// --- ASSERT ---
-				outcome, err := item.FinalState()
-				assert.Equal(t, types.QueueOutcomeEvictedTTL, outcome, "Item outcome should be EvictedTTL")
-				require.Error(t, err, "Item should have an error")
-				assert.ErrorIs(t, err, types.ErrTTLExpired, "Item error should be ErrTTLExpired")
+				assert.Equal(t, types.QueueOutcomeEvictedTTL, item.finalState.Outcome, "Item outcome should be EvictedTTL")
+				require.Error(t, item.finalState.Err, "Item should have an error")
+				assert.ErrorIs(t, item.finalState.Err, types.ErrTTLExpired, "Item error should be ErrTTLExpired")
 			})
 
 			t.Run("should evict all items on shutdown", func(t *testing.T) {
@@ -1189,10 +1103,10 @@ func TestShardProcessor(t *testing.T) {
 				h.processor.evictAll()
 
 				// --- ASSERT ---
-				outcome, err := item.FinalState()
-				assert.Equal(t, types.QueueOutcomeEvictedOther, outcome, "Item outcome should be EvictedOther")
-				require.Error(t, err, "Item should have an error")
-				assert.ErrorIs(t, err, types.ErrFlowControllerShutdown, "Item error should be ErrFlowControllerShutdown")
+				assert.Equal(t, types.QueueOutcomeEvictedOther, item.finalState.Outcome, "Item outcome should be EvictedOther")
+				require.Error(t, item.finalState.Err, "Item should have an error")
+				assert.ErrorIs(t, item.finalState.Err, types.ErrFlowControllerNotRunning,
+					"Item error should be ErrFlowControllerNotRunning")
 			})
 
 			t.Run("should handle registry errors gracefully during concurrent processing", func(t *testing.T) {
@@ -1260,6 +1174,105 @@ func TestShardProcessor(t *testing.T) {
 			})
 		})
 	})
+
+	t.Run("Public API", func(t *testing.T) {
+		t.Parallel()
+
+		t.Run("Submit", func(t *testing.T) {
+			t.Parallel()
+
+			t.Run("should return ErrProcessorBusy when channel is full", func(t *testing.T) {
+				t.Parallel()
+				h := newTestHarness(t, testCleanupTick)
+				h.processor.enqueueChan = make(chan *FlowItem, 1)
+				h.processor.enqueueChan <- h.newTestItem("item-filler", testFlow, testTTL) // Fill the channel to capacity.
+
+				// The next submit should be non-blocking and fail immediately.
+				err := h.processor.Submit(h.newTestItem("item-to-reject", testFlow, testTTL))
+				require.Error(t, err, "Submit must return an error when the channel is full")
+				assert.ErrorIs(t, err, ErrProcessorBusy, "The returned error must be ErrProcessorBusy")
+			})
+		})
+
+		t.Run("SubmitOrBlock", func(t *testing.T) {
+			t.Parallel()
+
+			t.Run("should block when channel is full and succeed when space becomes available", func(t *testing.T) {
+				t.Parallel()
+				h := newTestHarness(t, testCleanupTick)
+				h.processor.enqueueChan = make(chan *FlowItem, 1)
+				h.processor.enqueueChan <- h.newTestItem("item-filler", testFlow, testTTL) // Fill the channel to capacity.
+
+				itemToSubmit := h.newTestItem("item-to-block", testFlow, testTTL)
+				submitErr := make(chan error, 1)
+
+				// Run `SubmitOrBlock` in a separate goroutine, as it will block.
+				go func() {
+					submitErr <- h.processor.SubmitOrBlock(context.Background(), itemToSubmit)
+				}()
+
+				// Prove that the call is blocking by ensuring it hasn't returned an error yet.
+				time.Sleep(20 * time.Millisecond)
+				require.Len(t, submitErr, 0, "SubmitOrBlock should be blocking and not have returned yet")
+				<-h.processor.enqueueChan // Make space in the channel. This should unblock the goroutine.
+
+				select {
+				case err := <-submitErr:
+					require.NoError(t, err, "SubmitOrBlock should succeed and return no error after being unblocked")
+				case <-time.After(testWaitTimeout):
+					t.Fatal("SubmitOrBlock did not return after space was made in the channel")
+				}
+			})
+
+			t.Run("should unblock and return context error on cancellation", func(t *testing.T) {
+				t.Parallel()
+				h := newTestHarness(t, testCleanupTick)
+				h.processor.enqueueChan = make(chan *FlowItem) // Use an unbuffered channel to guarantee the first send blocks.
+				itemToSubmit := h.newTestItem("item-to-cancel", testFlow, testTTL)
+				submitErr := make(chan error, 1)
+				ctx, cancel := context.WithCancel(context.Background())
+
+				// Run `SubmitOrBlock` in a separate goroutine, as it will block.
+				go func() {
+					submitErr <- h.processor.SubmitOrBlock(ctx, itemToSubmit)
+				}()
+
+				// Prove that the call is blocking.
+				time.Sleep(20 * time.Millisecond)
+				require.Len(t, submitErr, 0, "SubmitOrBlock should be blocking and not have returned yet")
+				cancel() // Cancel the context. This should unblock the goroutine.
+
+				select {
+				case err := <-submitErr:
+					require.Error(t, err, "SubmitOrBlock should return an error after context cancellation")
+					assert.ErrorIs(t, err, context.Canceled, "The returned error must be context.Canceled")
+				case <-time.After(testWaitTimeout):
+					t.Fatal("SubmitOrBlock did not return after context was cancelled")
+				}
+			})
+
+			t.Run("should reject immediately if shutting down", func(t *testing.T) {
+				t.Parallel()
+				h := newTestHarness(t, testCleanupTick)
+				item := h.newTestItem("req-shutdown-reject", testFlow, testTTL)
+				h.addQueue(testFlow)
+
+				h.Start()
+				h.Go()
+				h.Stop() // Stop the processor, then immediately try to enqueue.
+				err := h.processor.SubmitOrBlock(context.Background(), item)
+
+				require.Error(t, err, "SubmitOrBlock should return an error when shutting down")
+				assert.ErrorIs(t, err, types.ErrFlowControllerNotRunning, "The error should be ErrFlowControllerNotRunning")
+
+				outcome, err := h.waitForFinalization(item)
+				assert.Equal(t, types.QueueOutcomeRejectedOther, outcome, "The outcome should be RejectedOther")
+				require.Error(t, err, "Finalization should include an error")
+				assert.ErrorIs(t, err, types.ErrFlowControllerNotRunning,
+					"The finalization error should be ErrFlowControllerNotRunning")
+			})
+		})
+	})
 }
 
 func TestCheckItemExpiry(t *testing.T) {
@@ -1329,7 +1342,7 @@ func TestCheckItemExpiry(t *testing.T) {
 					typesmocks.NewMockFlowControlRequest(100, "req-finalized", testFlow, context.Background()),
 					testTTL,
 					now)
-				i.finalize(types.QueueOutcomeDispatched, nil)
+				i.Finalize(types.QueueOutcomeDispatched, nil)
 				return i
 			}(),
 			now:           now,
@@ -1362,20 +1375,4 @@ func TestCheckItemExpiry(t *testing.T) {
 			}
 		})
 	}
-
-	t.Run("should panic on item of an unexpected type", func(t *testing.T) {
-		t.Parallel()
-		// --- ARRANGE ---
-		badItem := &typesmocks.MockQueueItemAccessor{
-			OriginalRequestV: typesmocks.NewMockFlowControlRequest(0, "item-bad-type", testFlow, context.Background()),
-		}
-
-		expectedPanicMsg := fmt.Sprintf("internal error: item %q of type %T is not a *flowItem",
-			badItem.OriginalRequestV.ID(), badItem)
-
-		// --- ACT & ASSERT ---
-		assert.PanicsWithError(t, expectedPanicMsg, func() {
-			_, _, _ = checkItemExpiry(badItem, time.Now())
-		}, "A type mismatch from a queue should cause a panic")
-	})
 }
diff --git a/pkg/epp/flowcontrol/framework/plugins/policies/intraflow/dispatch/fcfs/fcfs_test.go b/pkg/epp/flowcontrol/framework/plugins/policies/intraflow/dispatch/fcfs/fcfs_test.go
index 45c1442..cc6bcee 100644
--- a/pkg/epp/flowcontrol/framework/plugins/policies/intraflow/dispatch/fcfs/fcfs_test.go
+++ b/pkg/epp/flowcontrol/framework/plugins/policies/intraflow/dispatch/fcfs/fcfs_test.go
@@ -41,8 +41,7 @@ func TestFCFS_RequiredQueueCapabilities(t *testing.T) {
 	t.Parallel()
 	policy := newFCFS()
 	caps := policy.RequiredQueueCapabilities()
-	require.Len(t, caps, 1, "RequiredQueueCapabilities should return one capability")
-	assert.Equal(t, framework.CapabilityFIFO, caps[0], "Required capability should be FIFO")
+	require.Empty(t, caps, "No required capabilities should be returned")
 }
 
 func TestFCFS_SelectItem(t *testing.T) {
diff --git a/pkg/epp/flowcontrol/registry/config_test.go b/pkg/epp/flowcontrol/registry/config_test.go
index 376282f..47814ae 100644
--- a/pkg/epp/flowcontrol/registry/config_test.go
+++ b/pkg/epp/flowcontrol/registry/config_test.go
@@ -35,7 +35,7 @@ import (
 	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/framework/plugins/queue/listqueue"
 )
 
-func TestConfig_NewConfig(t *testing.T) {
+func TestConfig_ValidateAndApplyDefaults(t *testing.T) {
 	t.Parallel()
 
 	testCases := []struct {
@@ -211,16 +211,26 @@ func TestConfig_NewConfig(t *testing.T) {
 			name: "ShouldError_WhenQueueFactoryFails",
 			input: Config{
 				PriorityBands: []PriorityBandConfig{{
-					Priority:     1,
-					PriorityName: "High",
-					Queue:        queue.RegisteredQueueName("failing-queue"),
+					Priority:                1,
+					PriorityName:            "High",
+					Queue:                   queue.RegisteredQueueName("failing-queue"),
+					IntraFlowDispatchPolicy: intra.RegisteredPolicyName("policy-with-req"),
 				}},
 			},
 			expectErr: true,
-			opts: []configOption{withQueueFactory(
-				func(_ queue.RegisteredQueueName, _ framework.ItemComparator) (framework.SafeQueue, error) {
+			opts: []configOption{
+				withIntraFlowDispatchPolicyFactory( // Forces queue instance creation for validating capabilities.
+					func(name intra.RegisteredPolicyName) (framework.IntraFlowDispatchPolicy, error) {
+						return &mocks.MockIntraFlowDispatchPolicy{
+							NameV:                      string(name),
+							RequiredQueueCapabilitiesV: []framework.QueueCapability{"required-capability"},
+						}, nil
+					},
+				),
+				withQueueFactory(func(_ queue.RegisteredQueueName, _ framework.ItemComparator) (framework.SafeQueue, error) {
 					return nil, errors.New("queue creation failed")
-				})},
+				}),
+			},
 		},
 		{
 			name: "ShouldError_WhenPolicyFactoryFails",
@@ -276,20 +286,24 @@ func TestConfig_NewConfig(t *testing.T) {
 	for _, tc := range testCases {
 		t.Run(tc.name, func(t *testing.T) {
 			t.Parallel()
-			originalInputCopy := tc.input.deepCopy()
-			newCfg, err := NewConfig(tc.input, tc.opts...)
+			originalInput := tc.input.deepCopy()
+			validatedCfg, err := newConfig(tc.input, tc.opts...)
+
 			if tc.expectErr {
-				require.Error(t, err, "NewConfig should have returned an error")
+				require.Error(t, err, "expected an error but got nil")
 				if tc.expectedErrIs != nil {
-					assert.ErrorIs(t, err, tc.expectedErrIs, "Error should wrap the expected error type")
+					assert.ErrorIs(t, err, tc.expectedErrIs, "error should wrap the expected error type")
 				}
-				assert.Nil(t, newCfg, "On error, the returned config should be nil")
+				assert.Nil(t, validatedCfg, "validatedCfg should be nil on error")
 			} else {
-				require.NoError(t, err, "NewConfig should not have returned an error")
-				require.NotNil(t, newCfg, "On success, the returned config should not be nil")
+				require.NoError(t, err, "expected no error but got: %v", err)
+				require.NotNil(t, validatedCfg, "validatedCfg should not be nil on success")
 				if tc.assertion != nil {
-					tc.assertion(t, *originalInputCopy, newCfg)
+					tc.assertion(t, *originalInput, validatedCfg)
 				}
+
+				// Ensure the original config is not mutated.
+				assert.Equal(t, *originalInput, tc.input, "input config should not be mutated")
 			}
 		})
 	}
@@ -297,7 +311,7 @@ func TestConfig_NewConfig(t *testing.T) {
 
 func TestConfig_Partition(t *testing.T) {
 	t.Parallel()
-	baseCfg, err := NewConfig(Config{
+	baseCfg, err := newConfig(Config{
 		MaxBytes: 103, // Will not distribute evenly
 		PriorityBands: []PriorityBandConfig{
 			{Priority: 1, PriorityName: "High", MaxBytes: 55}, // Will not distribute evenly
@@ -381,7 +395,7 @@ func TestConfig_Partition(t *testing.T) {
 
 func TestConfig_GetBandConfig(t *testing.T) {
 	t.Parallel()
-	cfg, err := NewConfig(Config{
+	cfg, err := newConfig(Config{
 		PriorityBands: []PriorityBandConfig{
 			{Priority: 10, PriorityName: "High"},
 		},
@@ -417,7 +431,7 @@ func TestConfig_DeepCopy(t *testing.T) {
 		},
 	}
 	// Create a fully initialized "original" config to be the source of the copy.
-	original, err := NewConfig(baseCfg)
+	original, err := newConfig(baseCfg)
 	require.NoError(t, err, "Setup for deep copy should not fail")
 
 	t.Run("ShouldReturnNil_ForNilReceiver", func(t *testing.T) {
@@ -471,7 +485,7 @@ func TestConfig_DeepCopy(t *testing.T) {
 
 func TestShardConfig_GetBandConfig(t *testing.T) {
 	t.Parallel()
-	baseCfg, err := NewConfig(Config{
+	baseCfg, err := newConfig(Config{
 		PriorityBands: []PriorityBandConfig{
 			{Priority: 10, PriorityName: "High"},
 			{Priority: 20, PriorityName: "Low"},
diff --git a/pkg/epp/flowcontrol/registry/registry_test.go b/pkg/epp/flowcontrol/registry/registry_test.go
index 0e1bee1..b5bc322 100644
--- a/pkg/epp/flowcontrol/registry/registry_test.go
+++ b/pkg/epp/flowcontrol/registry/registry_test.go
@@ -73,9 +73,12 @@ func newRegistryTestHarness(t *testing.T, opts harnessOptions) *registryTestHarn
 		config.InitialShardCount = opts.initialShardCount
 	}
 
+	validatedCfg, err := config.ValidateAndApplyDefaults()
+	require.NoError(t, err, "Test setup: validating config should not fail")
+
 	fakeClock := testclock.NewFakeClock(time.Now())
 	registryOpts := []RegistryOption{withClock(fakeClock)}
-	fr, err := NewFlowRegistry(config, logr.Discard(), registryOpts...)
+	fr, err := NewFlowRegistry(*validatedCfg, logr.Discard(), registryOpts...)
 	require.NoError(t, err, "Test setup: NewFlowRegistry should not fail")
 
 	// Start the GC loop in the background.
@@ -132,69 +135,9 @@ func (h *registryTestHarness) openConnectionOnFlow(key types.FlowKey) {
 func TestFlowRegistry_New(t *testing.T) {
 	t.Parallel()
 
-	t.Run("ShouldApplyDefaults_WhenInitialized", func(t *testing.T) {
-		t.Parallel()
-		config := Config{PriorityBands: []PriorityBandConfig{{Priority: highPriority, PriorityName: "DefaultedBand"}}}
-		fr, err := NewFlowRegistry(config, logr.Discard())
-		require.NoError(t, err, "Creating a valid registry with defaults should not fail")
-		assert.Equal(t, defaultInitialShardCount, fr.config.InitialShardCount, "InitialShardCount should be defaulted")
-		assert.Equal(t, defaultFlowGCTimeout, fr.config.FlowGCTimeout, "FlowGCTimeout should be defaulted")
-		assert.Equal(t, defaultEventChannelBufferSize, fr.config.EventChannelBufferSize,
-			"EventChannelBufferSize should be defaulted")
-		assert.Len(t, fr.allShards, defaultInitialShardCount,
-			"Registry should be initialized with the default number of shards")
-		bandConf, err := fr.config.getBandConfig(highPriority)
-		require.NoError(t, err, "Getting the defaulted band config should not fail")
-		assert.Equal(t, defaultPriorityBandMaxBytes, bandConf.MaxBytes, "Priority band MaxBytes should be defaulted")
-	})
-
-	t.Run("ShouldFail_OnInvalidConfiguration", func(t *testing.T) {
-		t.Parallel()
-		testCases := []struct {
-			name            string
-			config          Config
-			expectErrSubStr string
-		}{
-			{
-				name:            "WhenNoPriorityBandsAreDefined",
-				config:          Config{},
-				expectErrSubStr: "at least one priority band must be defined",
-			},
-			{
-				name: "WhenPriorityLevelsAreDuplicated",
-				config: Config{
-					PriorityBands: []PriorityBandConfig{
-						{Priority: highPriority, PriorityName: "A"},
-						{Priority: highPriority, PriorityName: "B"},
-					},
-				},
-				expectErrSubStr: fmt.Sprintf("duplicate priority level %d", highPriority),
-			},
-			{
-				name: "WhenPriorityNamesAreDuplicated",
-				config: Config{
-					PriorityBands: []PriorityBandConfig{
-						{Priority: highPriority, PriorityName: "A"},
-						{Priority: lowPriority, PriorityName: "A"},
-					},
-				},
-				expectErrSubStr: `duplicate priority name "A"`,
-			},
-		}
-
-		for _, tc := range testCases {
-			t.Run(tc.name, func(t *testing.T) {
-				t.Parallel()
-				_, err := NewFlowRegistry(tc.config, logr.Discard())
-				require.Error(t, err, "NewFlowRegistry should fail with an invalid config")
-				assert.Contains(t, err.Error(), tc.expectErrSubStr, "Error message should contain the expected reason")
-			})
-		}
-	})
-
 	t.Run("ShouldFail_WhenInitialShardCreationFails", func(t *testing.T) {
 		t.Parallel()
-		config, err := NewConfig(
+		config, err := newConfig(
 			Config{PriorityBands: []PriorityBandConfig{{Priority: highPriority, PriorityName: "A"}}},
 			withInterFlowDispatchPolicyFactory(func(inter.RegisteredPolicyName) (framework.InterFlowDispatchPolicy, error) {
 				return nil, errors.New("injected factory failure")
@@ -261,7 +204,7 @@ func TestFlowRegistry_WithConnection_AndHandle(t *testing.T) {
 		assert.ErrorContains(t, err, "injected factory failure", "The returned error must propagate the reason")
 	})
 
-	t.Run("Handle_Shards_ShouldReturnAllShardsAndBeACopy", func(t *testing.T) {
+	t.Run("Handle_Shards_ShouldReturnAllActiveShardsAndBeACopy", func(t *testing.T) {
 		t.Parallel()
 		// Create a registry with a known mixed topology of Active and Draining shards.
 		h := newRegistryTestHarness(t, harnessOptions{initialShardCount: 3})
@@ -272,9 +215,9 @@ func TestFlowRegistry_WithConnection_AndHandle(t *testing.T) {
 		key := types.FlowKey{ID: "test-flow", Priority: highPriority}
 
 		err = h.fr.WithConnection(key, func(conn contracts.ActiveFlowConnection) error {
-			shards := conn.Shards()
+			shards := conn.ActiveShards()
 
-			assert.Len(t, shards, 3, "Shards() must return all configured shards, including Draining ones")
+			assert.Len(t, shards, 2, "ActiveShards() must only return the Active shards")
 
 			// Assert it's a copy by maliciously modifying it.
 			require.NotEmpty(t, shards, "Test setup assumes shards are present")
@@ -285,8 +228,8 @@ func TestFlowRegistry_WithConnection_AndHandle(t *testing.T) {
 		require.NoError(t, err)
 
 		// Prove the registry's internal state was not mutated by the modification.
-		assert.NotNil(t, h.fr.allShards[0],
-			"Modifying the slice returned by Shards() must not affect the registry's internal state")
+		assert.NotNil(t, h.fr.activeShards[0],
+			"Modifying the slice returned by ActiveShards() must not affect the registry's internal state")
 	})
 }
 
@@ -323,6 +266,9 @@ func TestFlowRegistry_Stats(t *testing.T) {
 	require.Len(t, shardStats, 2, "Should return stats for 2 shards")
 	var totalShardLen, totalShardBytes uint64
 	for _, ss := range shardStats {
+		assert.True(t, ss.IsActive, "All shards should be active in this test")
+		assert.NotEmpty(t, ss.PerPriorityBandStats, "Each shard should have stats for its priority bands")
+		assert.NotEmpty(t, ss.ID, "Each shard should have a non-empty ID")
 		totalShardLen += ss.TotalLen
 		totalShardBytes += ss.TotalByteSize
 	}
@@ -541,14 +487,6 @@ func TestFlowRegistry_UpdateShardCount(t *testing.T) {
 			expectedPartitionedGlobalCapacities: map[uint64]int{25: 4},
 			expectedPartitionedBandCapacities:   map[uint64]int{12: 2, 13: 2},
 		},
-		{
-			name:                                "Succeeds_ScaleUp_FromZero",
-			initialShardCount:                   0,
-			targetShardCount:                    4,
-			expectedActiveCount:                 4,
-			expectedPartitionedGlobalCapacities: map[uint64]int{25: 4},
-			expectedPartitionedBandCapacities:   map[uint64]int{12: 2, 13: 2},
-		},
 		{
 			name:                                "Succeeds_ScaleDown_ToOne",
 			initialShardCount:                   3,
@@ -600,24 +538,19 @@ func TestFlowRegistry_UpdateShardCount(t *testing.T) {
 				require.NoError(t, err, "UpdateShardCount should not have returned an error")
 			}
 
-			var finalActiveCount, finalDrainingCount int
 			globalCapacities := make(map[uint64]int)
 			bandCapacities := make(map[uint64]int)
-			err = h.fr.WithConnection(key, func(conn contracts.ActiveFlowConnection) error {
-				for _, shard := range conn.Shards() {
-					if shard.IsActive() {
-						finalActiveCount++
-						stats := shard.Stats()
-						globalCapacities[stats.TotalCapacityBytes]++
-						bandCapacities[stats.PerPriorityBandStats[highPriority].CapacityBytes]++
-						h.assertFlowExists(key, "Shard %s should contain the existing flow", shard.ID())
-					} else {
-						finalDrainingCount++
-					}
-				}
-				return nil
-			})
-			require.NoError(t, err, "WithConnection should not fail")
+
+			h.fr.mu.RLock()
+			finalActiveCount := len(h.fr.activeShards)
+			finalDrainingCount := len(h.fr.drainingShards)
+			for _, shard := range h.fr.activeShards {
+				stats := shard.Stats()
+				globalCapacities[stats.TotalCapacityBytes]++
+				bandCapacities[stats.PerPriorityBandStats[highPriority].CapacityBytes]++
+				h.assertFlowExists(key, "Shard %s should contain the existing flow", shard.ID())
+			}
+			h.fr.mu.RUnlock()
 
 			expectedDrainingCount := 0
 			if tc.initialShardCount > tc.expectedActiveCount {
diff --git a/pkg/epp/flowcontrol/registry/shard_test.go b/pkg/epp/flowcontrol/registry/shard_test.go
index 7fbda57..23bf813 100644
--- a/pkg/epp/flowcontrol/registry/shard_test.go
+++ b/pkg/epp/flowcontrol/registry/shard_test.go
@@ -59,7 +59,7 @@ type shardTestHarness struct {
 // newShardTestHarness initializes a `shardTestHarness` with a default configuration.
 func newShardTestHarness(t *testing.T) *shardTestHarness {
 	t.Helper()
-	globalConfig, err := NewConfig(Config{
+	globalConfig, err := newConfig(Config{
 		PriorityBands: []PriorityBandConfig{
 			{Priority: highPriority, PriorityName: "High"},
 			{Priority: lowPriority, PriorityName: "Low"},
@@ -146,7 +146,7 @@ func TestShard_New(t *testing.T) {
 
 	t.Run("ShouldFail_WhenInterFlowPolicyFactoryFails", func(t *testing.T) {
 		t.Parallel()
-		shardConfig, _ := NewConfig(Config{PriorityBands: []PriorityBandConfig{
+		shardConfig, _ := newConfig(Config{PriorityBands: []PriorityBandConfig{
 			{Priority: highPriority, PriorityName: "High"},
 		}})
 		failingFactory := func(inter.RegisteredPolicyName) (framework.InterFlowDispatchPolicy, error) {
@@ -165,6 +165,8 @@ func TestShard_Stats(t *testing.T) {
 
 	stats := h.shard.Stats()
 
+	assert.Equal(t, h.shard.ID(), stats.ID, "Stats ID must match the shard ID")
+	assert.True(t, stats.IsActive, "Shard must report itself as active in the stats snapshot")
 	assert.Equal(t, uint64(2), stats.TotalLen, "Total shard length must aggregate counts from all bands")
 	assert.Equal(t, uint64(150), stats.TotalByteSize, "Total shard byte size must aggregate sizes from all bands")
 
diff --git a/pkg/epp/scheduling/framework/plugins/multi/prefix/plugin_test.go b/pkg/epp/scheduling/framework/plugins/multi/prefix/plugin_test.go
index 9f9893b..df2eae6 100644
--- a/pkg/epp/scheduling/framework/plugins/multi/prefix/plugin_test.go
+++ b/pkg/epp/scheduling/framework/plugins/multi/prefix/plugin_test.go
@@ -276,6 +276,7 @@ func TestPrefixPluginChatCompletionsGrowth(t *testing.T) {
 		},
 	}
 	plugin.PreRequest(context.Background(), req1, schedulingResult, 0)
+	plugin.wg.Wait()
 
 	// Second request adds assistant response and new user message (conversation grows)
 	req2 := &types.LLMRequest{
@@ -308,6 +309,7 @@ func TestPrefixPluginChatCompletionsGrowth(t *testing.T) {
 
 	// Simulate pod1 was picked again
 	plugin.PreRequest(context.Background(), req2, schedulingResult, 0)
+	plugin.wg.Wait()
 
 	// Third request continues the conversation even further
 	req3 := &types.LLMRequest{
diff --git a/test/e2e/epp/e2e_suite_test.go b/test/e2e/epp/e2e_suite_test.go
index e6e5b83..b41f108 100644
--- a/test/e2e/epp/e2e_suite_test.go
+++ b/test/e2e/epp/e2e_suite_test.go
@@ -17,7 +17,6 @@ limitations under the License.
 package epp
 
 import (
-	"context"
 	"errors"
 	"fmt"
 	"os"
@@ -29,34 +28,20 @@ import (
 	"github.com/onsi/gomega"
 	appsv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
-	rbacv1 "k8s.io/api/rbac/v1"
 	apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
-	"k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/apimachinery/pkg/runtime/serializer"
 	"k8s.io/apimachinery/pkg/types"
-	"k8s.io/client-go/kubernetes"
 	clientgoscheme "k8s.io/client-go/kubernetes/scheme"
-	"sigs.k8s.io/controller-runtime/pkg/client"
-	"sigs.k8s.io/controller-runtime/pkg/client/config"
 
 	infextv1 "sigs.k8s.io/gateway-api-inference-extension/api/v1"
 	infextv1a2 "sigs.k8s.io/gateway-api-inference-extension/apix/v1alpha2"
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/env"
 	testutils "sigs.k8s.io/gateway-api-inference-extension/test/utils"
 )
 
 const (
-	// defaultExistsTimeout is the default timeout for a resource to exist in the api server.
-	defaultExistsTimeout = 30 * time.Second
-	// defaultReadyTimeout is the default timeout for a resource to report a ready state.
-	defaultReadyTimeout = 3 * time.Minute
-	// defaultModelReadyTimeout is the default timeout for the model server deployment to report a ready state.
-	defaultModelReadyTimeout = 10 * time.Minute
 	// defaultCurlTimeout is the default timeout for the curl command to get a response.
 	defaultCurlTimeout = 30 * time.Second
-	// defaultInterval is the default interval to check if a resource exists or ready conditions.
-	defaultInterval = time.Millisecond * 250
 	// defaultCurlInterval is the default interval to run the test curl command.
 	defaultCurlInterval = time.Second * 5
 	// defaultNsName is the default name of the Namespace used for tests. Can override using the E2E_NS environment variable.
@@ -100,13 +85,8 @@ const (
 const e2eLeaderElectionEnabledEnvVar = "E2E_LEADER_ELECTION_ENABLED"
 
 var (
-	ctx = context.Background()
-	cli client.Client
+	testConfig *testutils.TestConfig
 	// Required for exec'ing in curl pod
-	kubeCli               *kubernetes.Clientset
-	scheme                = runtime.NewScheme()
-	cfg                   = config.GetConfigOrDie()
-	nsName                string
 	e2eImage              string
 	leaderElectionEnabled bool
 )
@@ -119,10 +99,12 @@ func TestAPIs(t *testing.T) {
 }
 
 var _ = ginkgo.BeforeSuite(func() {
-	nsName = os.Getenv("E2E_NS")
+	nsName := os.Getenv("E2E_NS")
 	if nsName == "" {
 		nsName = defaultNsName
 	}
+	testConfig = testutils.NewTestConfig(nsName)
+
 	e2eImage = os.Getenv("E2E_IMAGE")
 	gomega.Expect(e2eImage).NotTo(gomega.BeEmpty(), "E2E_IMAGE environment variable is not set")
 
@@ -143,11 +125,11 @@ func setupInfra() {
 	// run this before createNs to fail fast in case it doesn't.
 	modelServerManifestPath := readModelServerManifestPath()
 
-	createNamespace(cli, nsName)
+	createNamespace(testConfig)
 
 	modelServerManifestArray := getYamlsFromModelServerManifest(modelServerManifestPath)
 	if strings.Contains(modelServerManifestArray[0], "hf-token") {
-		createHfSecret(cli, modelServerSecretManifest)
+		createHfSecret(testConfig, modelServerSecretManifest)
 	}
 	crds := map[string]string{
 		"inferencepools.inference.networking.x-k8s.io":      xInferPoolManifest,
@@ -155,19 +137,19 @@ func setupInfra() {
 		"inferencepools.inference.networking.k8s.io":        inferPoolManifest,
 	}
 
-	createCRDs(cli, crds)
+	createCRDs(testConfig, crds)
 
 	inferExtManifestPath := inferExtManifestDefault
 	if leaderElectionEnabled {
 		inferExtManifestPath = inferExtManifestLeaderElection
 	}
-	createInferExt(cli, inferExtManifestPath)
-	createClient(cli, clientManifest)
-	createEnvoy(cli, envoyManifest)
-	createMetricsRbac(cli, metricsRbacManifest)
+	createInferExt(testConfig, inferExtManifestPath)
+	createClient(testConfig, clientManifest)
+	createEnvoy(testConfig, envoyManifest)
+	createMetricsRbac(testConfig, metricsRbacManifest)
 	// Run this step last, as it requires additional time for the model server to become ready.
 	ginkgo.By("Creating model server resources from manifest: " + modelServerManifestPath)
-	createModelServer(cli, modelServerManifestArray)
+	createModelServer(testConfig, modelServerManifestArray)
 }
 
 var _ = ginkgo.AfterSuite(func() {
@@ -192,77 +174,57 @@ var _ = ginkgo.AfterSuite(func() {
 // setupSuite initializes the test suite by setting up the Kubernetes client,
 // loading required API schemes, and validating configuration.
 func setupSuite() {
-	gomega.ExpectWithOffset(1, cfg).NotTo(gomega.BeNil())
-
-	err := clientgoscheme.AddToScheme(scheme)
+	err := clientgoscheme.AddToScheme(testConfig.Scheme)
 	gomega.ExpectWithOffset(1, err).NotTo(gomega.HaveOccurred())
 
-	err = apiextv1.AddToScheme(scheme)
+	err = apiextv1.AddToScheme(testConfig.Scheme)
 	gomega.ExpectWithOffset(1, err).NotTo(gomega.HaveOccurred())
 
-	err = infextv1a2.Install(scheme)
+	err = infextv1a2.Install(testConfig.Scheme)
 	gomega.ExpectWithOffset(1, err).NotTo(gomega.HaveOccurred())
 
-	err = infextv1.Install(scheme)
+	err = infextv1.Install(testConfig.Scheme)
 	gomega.ExpectWithOffset(1, err).NotTo(gomega.HaveOccurred())
 
-	cli, err = client.New(cfg, client.Options{Scheme: scheme})
-	gomega.Expect(err).NotTo(gomega.HaveOccurred())
-	gomega.Expect(cli).NotTo(gomega.BeNil())
-
-	kubeCli, err = kubernetes.NewForConfig(cfg)
-	gomega.Expect(err).NotTo(gomega.HaveOccurred())
-	gomega.Expect(kubeCli).NotTo(gomega.BeNil())
+	testConfig.CreateCli()
 }
 
 func cleanupResources() {
-	if cli == nil {
+	if testConfig.K8sClient == nil {
 		return // could happen if BeforeSuite had an error
 	}
 
-	gomega.Expect(testutils.DeleteClusterResources(ctx, cli)).To(gomega.Succeed())
-	gomega.Expect(testutils.DeleteNamespacedResources(ctx, cli, nsName)).To(gomega.Succeed())
+	gomega.Expect(testutils.DeleteClusterResources(testConfig)).To(gomega.Succeed())
+	gomega.Expect(testutils.DeleteNamespacedResources(testConfig)).To(gomega.Succeed())
 }
 
 func cleanupInferModelResources() {
-	gomega.Expect(testutils.DeleteInferenceObjectiveResources(ctx, cli, nsName)).To(gomega.Succeed())
-}
-
-func getTimeout(key string, fallback time.Duration) time.Duration {
-	if value, ok := os.LookupEnv(key); ok {
-		if parsed, err := time.ParseDuration(value); err == nil {
-			return parsed
-		}
-	}
-	return fallback
+	gomega.Expect(testutils.DeleteInferenceObjectiveResources(testConfig)).To(gomega.Succeed())
 }
 
 var (
-	existsTimeout     = getTimeout("EXISTS_TIMEOUT", defaultExistsTimeout)
-	readyTimeout      = getTimeout("READY_TIMEOUT", defaultReadyTimeout)
-	modelReadyTimeout = getTimeout("MODEL_READY_TIMEOUT", defaultModelReadyTimeout)
-	curlTimeout       = getTimeout("CURL_TIMEOUT", defaultCurlTimeout)
-	interval          = defaultInterval
-	curlInterval      = defaultCurlInterval
+	curlTimeout  = env.GetEnvDuration("CURL_TIMEOUT", defaultCurlTimeout, ginkgo.GinkgoLogr)
+	curlInterval = defaultCurlInterval
 )
 
-func createNamespace(k8sClient client.Client, ns string) {
-	ginkgo.By("Creating e2e namespace: " + ns)
+func createNamespace(testConfig *testutils.TestConfig) {
+	ginkgo.By("Creating e2e namespace: " + testConfig.NsName)
 	obj := &corev1.Namespace{
 		ObjectMeta: v1.ObjectMeta{
-			Name: ns,
+			Name: testConfig.NsName,
 		},
 	}
-	err := k8sClient.Create(ctx, obj)
+	err := testConfig.K8sClient.Create(testConfig.Context, obj)
 	gomega.Expect(err).NotTo(gomega.HaveOccurred(), "Failed to create e2e test namespace")
 }
 
 // namespaceExists ensures that a specified namespace exists and is ready for use.
-func namespaceExists(k8sClient client.Client, ns string) {
-	ginkgo.By("Ensuring namespace exists: " + ns)
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Name: ns}, &corev1.Namespace{})
-	}, existsTimeout, interval)
+func namespaceExists(testConfig *testutils.TestConfig) {
+	ginkgo.By("Ensuring namespace exists: " + testConfig.NsName)
+	testutils.EventuallyExists(testConfig, func() error {
+		return testConfig.K8sClient.Get(testConfig.Context,
+			types.NamespacedName{Name: testConfig.NsName}, &corev1.Namespace{})
+	})
 }
 
 // readModelServerManifestPath reads from env var the absolute filepath to model server deployment for testing.
@@ -275,57 +237,39 @@ func readModelServerManifestPath() string {
 
 func getYamlsFromModelServerManifest(modelServerManifestPath string) []string {
 	ginkgo.By("Ensuring the model server manifest points to an existing file")
-	modelServerManifestArray := readYaml(modelServerManifestPath)
+	modelServerManifestArray := testutils.ReadYaml(modelServerManifestPath)
 	gomega.Expect(modelServerManifestArray).NotTo(gomega.BeEmpty())
 	return modelServerManifestArray
 }
 
 // createCRDs creates the Inference Extension CRDs used for testing.
-func createCRDs(k8sClient client.Client, crds map[string]string) {
-	for name, path := range crds {
+func createCRDs(testConfig *testutils.TestConfig, crds map[string]string) {
+	for _, path := range crds {
 		ginkgo.By("Creating CRD resource from manifest: " + path)
-		applyYAMLFile(k8sClient, path)
-
-		// Wait for the CRD to exist.
-		crd := &apiextv1.CustomResourceDefinition{}
-		testutils.EventuallyExists(ctx, func() error {
-			return k8sClient.Get(ctx, types.NamespacedName{Name: name}, crd)
-		}, existsTimeout, interval)
-
-		// Wait for the CRD to be established.
-		testutils.CRDEstablished(ctx, k8sClient, crd, readyTimeout, interval)
+		testutils.ApplyYAMLFile(testConfig, path)
 	}
 }
 
 // createClient creates the client pod used for testing from the given filePath.
-func createClient(k8sClient client.Client, filePath string) {
+func createClient(testConfig *testutils.TestConfig, filePath string) {
 	ginkgo.By("Creating client resources from manifest: " + filePath)
-	applyYAMLFile(k8sClient, filePath)
-
-	// Wait for the pod to exist.
-	pod := &corev1.Pod{}
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Namespace: nsName, Name: "curl"}, pod)
-	}, existsTimeout, interval)
-
-	// Wait for the pod to be ready.
-	testutils.PodReady(ctx, k8sClient, pod, readyTimeout, interval)
+	testutils.ApplyYAMLFile(testConfig, filePath)
 }
 
 // createMetricsRbac creates the metrics RBAC resources from the manifest file.
-func createMetricsRbac(k8sClient client.Client, filePath string) {
-	inManifests := readYaml(filePath)
+func createMetricsRbac(testConfig *testutils.TestConfig, filePath string) {
+	inManifests := testutils.ReadYaml(filePath)
 	ginkgo.By("Replacing placeholder namespace with E2E_NS environment variable")
 	outManifests := []string{}
 	for _, m := range inManifests {
-		outManifests = append(outManifests, strings.ReplaceAll(m, "$E2E_NS", nsName))
+		outManifests = append(outManifests, strings.ReplaceAll(m, "$E2E_NS", testConfig.NsName))
 	}
 	ginkgo.By("Creating RBAC resources for scraping metrics from manifest: " + filePath)
-	createObjsFromYaml(k8sClient, outManifests)
+	testutils.CreateObjsFromYaml(testConfig, outManifests)
 
 	// wait for sa token to exist
-	testutils.EventuallyExists(ctx, func() error {
-		token, err := getMetricsReaderToken(k8sClient)
+	testutils.EventuallyExists(testConfig, func() error {
+		token, err := getMetricsReaderToken(testConfig.K8sClient)
 		if err != nil {
 			return err
 		}
@@ -333,30 +277,21 @@ func createMetricsRbac(k8sClient client.Client, filePath string) {
 			return errors.New("failed to get metrics reader token")
 		}
 		return nil
-	}, existsTimeout, interval)
+	})
 }
 
 // createModelServer creates the model server resources used for testing from the given filePaths.
-func createModelServer(k8sClient client.Client, modelServerManifestArray []string) {
-	createObjsFromYaml(k8sClient, modelServerManifestArray)
-
-	// Wait for the deployment to exist.
-	deploy := &appsv1.Deployment{}
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Namespace: nsName, Name: modelServerName}, deploy)
-	}, existsTimeout, interval)
-
-	// Wait for the deployment to be available.
-	testutils.DeploymentAvailable(ctx, k8sClient, deploy, modelReadyTimeout, interval)
+func createModelServer(testConfig *testutils.TestConfig, modelServerManifestArray []string) {
+	testutils.CreateObjsFromYaml(testConfig, modelServerManifestArray)
 }
 
 // createHfSecret read HF_TOKEN from env var and creates a secret that contains the access token.
-func createHfSecret(k8sClient client.Client, secretPath string) {
+func createHfSecret(testConfig *testutils.TestConfig, secretPath string) {
 	ginkgo.By("Ensuring the HF_TOKEN environment variable is set")
 	token := os.Getenv("HF_TOKEN")
 	gomega.Expect(token).NotTo(gomega.BeEmpty(), "HF_TOKEN is not set")
 
-	inManifests := readYaml(secretPath)
+	inManifests := testutils.ReadYaml(secretPath)
 	ginkgo.By("Replacing placeholder secret data with HF_TOKEN environment variable")
 	outManifests := []string{}
 	for _, m := range inManifests {
@@ -364,152 +299,49 @@ func createHfSecret(k8sClient client.Client, secretPath string) {
 	}
 
 	ginkgo.By("Creating model server secret resource")
-	createObjsFromYaml(k8sClient, outManifests)
-
-	// Wait for the secret to exist before proceeding with test.
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Namespace: nsName, Name: "hf-token"}, &corev1.Secret{})
-	}, existsTimeout, interval)
+	testutils.CreateObjsFromYaml(testConfig, outManifests)
 }
 
 // createEnvoy creates the envoy proxy resources used for testing from the given filePath.
-func createEnvoy(k8sClient client.Client, filePath string) {
-	inManifests := readYaml(filePath)
+func createEnvoy(testConfig *testutils.TestConfig, filePath string) {
+	inManifests := testutils.ReadYaml(filePath)
 	ginkgo.By("Replacing placeholder namespace with E2E_NS environment variable")
 	outManifests := []string{}
 	for _, m := range inManifests {
-		outManifests = append(outManifests, strings.ReplaceAll(m, "$E2E_NS", nsName))
+		outManifests = append(outManifests, strings.ReplaceAll(m, "$E2E_NS", testConfig.NsName))
 	}
 
 	ginkgo.By("Creating envoy proxy resources from manifest: " + filePath)
-	createObjsFromYaml(k8sClient, outManifests)
-
-	// Wait for the configmap to exist before proceeding with test.
-	cfgMap := &corev1.ConfigMap{}
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Namespace: nsName, Name: envoyName}, cfgMap)
-	}, existsTimeout, interval)
-
-	// Wait for the deployment to exist.
-	deploy := &appsv1.Deployment{}
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Namespace: nsName, Name: envoyName}, deploy)
-	}, existsTimeout, interval)
-
-	// Wait for the deployment to be available.
-	testutils.DeploymentAvailable(ctx, k8sClient, deploy, readyTimeout, interval)
-
-	// Wait for the service to exist.
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Namespace: nsName, Name: envoyName}, &corev1.Service{})
-	}, existsTimeout, interval)
+	testutils.CreateObjsFromYaml(testConfig, outManifests)
 }
 
 // createInferExt creates the inference extension resources used for testing from the given filePath.
-func createInferExt(k8sClient client.Client, filePath string) {
-	inManifests := readYaml(filePath)
+func createInferExt(testConfig *testutils.TestConfig, filePath string) {
+	inManifests := testutils.ReadYaml(filePath)
 	ginkgo.By("Replacing placeholders with environment variables")
 	outManifests := []string{}
+	replacer := strings.NewReplacer(
+		"$E2E_NS", testConfig.NsName,
+		"$E2E_IMAGE", e2eImage,
+	)
 	for _, manifest := range inManifests {
-		replacer := strings.NewReplacer(
-			"$E2E_NS", nsName,
-			"$E2E_IMAGE", e2eImage,
-		)
 		outManifests = append(outManifests, replacer.Replace(manifest))
 	}
 
 	ginkgo.By("Creating inference extension resources from manifest: " + filePath)
-	createObjsFromYaml(k8sClient, outManifests)
-
-	// Wait for the serviceaccount to exist.
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Namespace: nsName, Name: inferExtName}, &corev1.ServiceAccount{})
-	}, existsTimeout, interval)
-
-	// Wait for the role to exist.
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Namespace: nsName, Name: "pod-read"}, &rbacv1.Role{})
-	}, existsTimeout, interval)
-
-	// Wait for the rolebinding to exist.
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Namespace: nsName, Name: "pod-read-binding"}, &rbacv1.RoleBinding{})
-	}, existsTimeout, interval)
-
-	// Wait for the clusterrole to exist.
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Name: "auth-reviewer"}, &rbacv1.ClusterRole{})
-	}, existsTimeout, interval)
-
-	// Wait for the clusterrolebinding to exist.
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Name: "auth-reviewer-binding"}, &rbacv1.ClusterRoleBinding{})
-	}, existsTimeout, interval)
+	testutils.CreateObjsFromYaml(testConfig, outManifests)
 
 	// Wait for the deployment to exist.
-	deploy := &appsv1.Deployment{}
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Namespace: nsName, Name: inferExtName}, deploy)
-	}, existsTimeout, interval)
-
+	deploy := &appsv1.Deployment{
+		ObjectMeta: v1.ObjectMeta{
+			Name:      inferExtName,
+			Namespace: testConfig.NsName,
+		},
+	}
 	if leaderElectionEnabled {
 		// With leader election enabled, only 1 replica will be "Ready" at any given time (the leader).
-		testutils.DeploymentReadyReplicas(ctx, k8sClient, deploy, 1, modelReadyTimeout, interval)
+		testutils.DeploymentReadyReplicas(testConfig, deploy, 1)
 	} else {
-		testutils.DeploymentAvailable(ctx, k8sClient, deploy, modelReadyTimeout, interval)
-	}
-
-	// Wait for the service to exist.
-	testutils.EventuallyExists(ctx, func() error {
-		return k8sClient.Get(ctx, types.NamespacedName{Namespace: nsName, Name: inferExtName}, &corev1.Service{})
-	}, existsTimeout, interval)
-}
-
-// applyYAMLFile reads a file containing YAML (possibly multiple docs)
-// and applies each object to the cluster.
-func applyYAMLFile(k8sClient client.Client, filePath string) {
-	// Create the resources from the manifest file
-	createObjsFromYaml(k8sClient, readYaml(filePath))
-}
-
-func readYaml(filePath string) []string {
-	ginkgo.By("Reading YAML file: " + filePath)
-	yamlBytes, err := os.ReadFile(filePath)
-	gomega.Expect(err).NotTo(gomega.HaveOccurred())
-
-	// Split multiple docs, if needed
-	return strings.Split(string(yamlBytes), "\n---")
-}
-
-func createObjsFromYaml(k8sClient client.Client, docs []string) {
-	// For each doc, decode and create
-	decoder := serializer.NewCodecFactory(scheme).UniversalDeserializer()
-	for _, doc := range docs {
-		trimmed := strings.TrimSpace(doc)
-		if trimmed == "" {
-			continue
-		}
-		// Decode into a runtime.Object
-		obj, gvk, decodeErr := decoder.Decode([]byte(trimmed), nil, nil)
-		gomega.Expect(decodeErr).NotTo(gomega.HaveOccurred(),
-			"Failed to decode YAML document to a Kubernetes object")
-
-		ginkgo.By(fmt.Sprintf("Decoded GVK: %s", gvk))
-
-		unstrObj, ok := obj.(*unstructured.Unstructured)
-		if !ok {
-			// Fallback if it's a typed object
-			unstrObj = &unstructured.Unstructured{}
-			// Convert typed to unstructured
-			err := scheme.Convert(obj, unstrObj, nil)
-			gomega.Expect(err).NotTo(gomega.HaveOccurred())
-		}
-
-		unstrObj.SetNamespace(nsName)
-
-		// Create the object
-		err := k8sClient.Create(ctx, unstrObj)
-		gomega.Expect(err).NotTo(gomega.HaveOccurred(),
-			"Failed to create object from YAML")
+		testutils.DeploymentAvailable(testConfig, deploy)
 	}
 }
diff --git a/test/e2e/epp/e2e_test.go b/test/e2e/epp/e2e_test.go
index c8410bd..c3ff49e 100644
--- a/test/e2e/epp/e2e_test.go
+++ b/test/e2e/epp/e2e_test.go
@@ -43,23 +43,23 @@ var _ = ginkgo.Describe("InferencePool", func() {
 	var infObjective *v1alpha2.InferenceObjective
 	ginkgo.BeforeEach(func() {
 		ginkgo.By("Waiting for the namespace to exist.")
-		namespaceExists(cli, nsName)
+		namespaceExists(testConfig)
 
 		ginkgo.By("Creating an InferenceObjective resource")
-		infObjective = newInferenceObjective(nsName)
-		gomega.Expect(cli.Create(ctx, infObjective)).To(gomega.Succeed())
+		infObjective = newInferenceObjective(testConfig.NsName)
+		gomega.Expect(testConfig.K8sClient.Create(testConfig.Context, infObjective)).To(gomega.Succeed())
 
 		ginkgo.By("Ensuring the InferenceObjective resource exists in the namespace")
 		gomega.Eventually(func() error {
-			return cli.Get(ctx, types.NamespacedName{Namespace: infObjective.Namespace, Name: infObjective.Name}, infObjective)
-		}, existsTimeout, interval).Should(gomega.Succeed())
+			return testConfig.K8sClient.Get(testConfig.Context, types.NamespacedName{Namespace: infObjective.Namespace, Name: infObjective.Name}, infObjective)
+		}, testConfig.ExistsTimeout, testConfig.Interval).Should(gomega.Succeed())
 	})
 
 	ginkgo.AfterEach(func() {
 		ginkgo.By("Deleting the InferenceObjective test resource.")
 		cleanupInferModelResources()
 		gomega.Eventually(func() error {
-			err := cli.Get(ctx, types.NamespacedName{Namespace: infObjective.Namespace, Name: infObjective.Name}, infObjective)
+			err := testConfig.K8sClient.Get(testConfig.Context, types.NamespacedName{Namespace: infObjective.Namespace, Name: infObjective.Name}, infObjective)
 			if err == nil {
 				return errors.New("InferenceObjective resource still exists")
 			}
@@ -67,7 +67,7 @@ var _ = ginkgo.Describe("InferencePool", func() {
 				return nil
 			}
 			return nil
-		}, existsTimeout, interval).Should(gomega.Succeed())
+		}, testConfig.ExistsTimeout, testConfig.Interval).Should(gomega.Succeed())
 	})
 
 	ginkgo.When("The Inference Extension is running", func() {
@@ -89,7 +89,7 @@ var _ = ginkgo.Describe("InferencePool", func() {
 			ginkgo.By("Verifying that exactly one EPP pod is ready")
 			gomega.Eventually(func(g gomega.Gomega) {
 				podList := &corev1.PodList{}
-				err := cli.List(ctx, podList, client.InNamespace(nsName), client.MatchingLabels{"app": inferExtName})
+				err := testConfig.K8sClient.List(testConfig.Context, podList, client.InNamespace(testConfig.NsName), client.MatchingLabels{"app": inferExtName})
 				g.Expect(err).NotTo(gomega.HaveOccurred())
 
 				// The deployment should have 3 replicas for leader election.
@@ -104,7 +104,7 @@ var _ = ginkgo.Describe("InferencePool", func() {
 					}
 				}
 				g.Expect(readyPods).To(gomega.Equal(1), "Expected exactly one pod to be ready")
-			}, readyTimeout, interval).Should(gomega.Succeed())
+			}, testConfig.ReadyTimeout, testConfig.Interval).Should(gomega.Succeed())
 		})
 
 		ginkgo.It("Should successfully failover and serve traffic after the leader pod is deleted", func() {
@@ -121,26 +121,26 @@ var _ = ginkgo.Describe("InferencePool", func() {
 			ginkgo.By("Found initial leader pod: " + oldLeaderPod.Name)
 
 			ginkgo.By(fmt.Sprintf("Deleting leader pod %s to trigger failover", oldLeaderPod.Name))
-			gomega.Expect(cli.Delete(ctx, oldLeaderPod)).To(gomega.Succeed())
+			gomega.Expect(testConfig.K8sClient.Delete(testConfig.Context, oldLeaderPod)).To(gomega.Succeed())
 
 			ginkgo.By("STEP 3: Waiting for a new leader to be elected")
 			// The deployment controller will create a new pod. We need to wait for the total number of pods
 			// to be back to 3, and for one of the other pods to become the new leader.
 			deploy := &appsv1.Deployment{}
 			gomega.Eventually(func() error {
-				return cli.Get(ctx, types.NamespacedName{Namespace: nsName, Name: inferExtName}, deploy)
-			}, existsTimeout, interval).Should(gomega.Succeed())
+				return testConfig.K8sClient.Get(testConfig.Context, types.NamespacedName{Namespace: testConfig.NsName, Name: inferExtName}, deploy)
+			}, testConfig.ExistsTimeout, testConfig.Interval).Should(gomega.Succeed())
 
 			// Wait for one replica to become ready again.
-			testutils.DeploymentReadyReplicas(ctx, cli, deploy, 1, readyTimeout, interval)
+			testutils.DeploymentReadyReplicas(testConfig, deploy, 1)
 
 			// Also wait for the total number of replicas to be back to 3.
 			gomega.Eventually(func(g gomega.Gomega) {
 				d := &appsv1.Deployment{}
-				err := cli.Get(ctx, types.NamespacedName{Namespace: nsName, Name: inferExtName}, d)
+				err := testConfig.K8sClient.Get(testConfig.Context, types.NamespacedName{Namespace: testConfig.NsName, Name: inferExtName}, d)
 				g.Expect(err).NotTo(gomega.HaveOccurred())
 				g.Expect(d.Status.Replicas).To(gomega.Equal(int32(3)), "Deployment should have 3 replicas")
-			}, readyTimeout, interval).Should(gomega.Succeed())
+			}, testConfig.ReadyTimeout, testConfig.Interval).Should(gomega.Succeed())
 
 			ginkgo.By("STEP 4: Verifying a new, different leader is elected")
 			var newLeaderPod *corev1.Pod
@@ -152,7 +152,7 @@ var _ = ginkgo.Describe("InferencePool", func() {
 				// This guards against a race condition where we might find the old leader
 				// before its status is updated to NotReady.
 				g.Expect(newLeaderPod.Name).NotTo(gomega.Equal(oldLeaderPod.Name), "The new leader should not be the same as the old deleted leader")
-			}, readyTimeout, interval).Should(gomega.Succeed())
+			}, testConfig.ReadyTimeout, testConfig.Interval).Should(gomega.Succeed())
 			ginkgo.By("Found new leader pod: " + newLeaderPod.Name)
 
 			ginkgo.By("STEP 5: Verifying the new leader is working correctly after failover")
@@ -207,11 +207,11 @@ func verifyTrafficRouting() {
 		// Ensure the expected responses include the InferenceObjective target model names.
 		var expected []string
 		expected = append(expected, targetModelName)
-		curlCmd := getCurlCommand(envoyName, nsName, envoyPort, modelName, curlTimeout, t.api, t.promptOrMessages, false)
+		curlCmd := getCurlCommand(envoyName, testConfig.NsName, envoyPort, modelName, curlTimeout, t.api, t.promptOrMessages, false)
 
 		actual := make(map[string]int)
 		gomega.Eventually(func() error {
-			resp, err := testutils.ExecCommandInPod(ctx, cfg, scheme, kubeCli, nsName, "curl", "curl", curlCmd)
+			resp, err := testutils.ExecCommandInPod(testConfig, "curl", "curl", curlCmd)
 			if err != nil {
 				return err
 			}
@@ -232,7 +232,7 @@ func verifyTrafficRouting() {
 				return fmt.Errorf("actual (%v) != expected (%v); resp=%q", got, expected, resp)
 			}
 			return nil
-		}, readyTimeout, curlInterval).Should(gomega.Succeed())
+		}, testConfig.ReadyTimeout, curlInterval).Should(gomega.Succeed())
 	}
 }
 
@@ -260,18 +260,18 @@ func verifyMetrics() {
 
 	// Generate traffic by sending requests through the inference extension
 	ginkgo.By("Generating traffic through the inference extension")
-	curlCmd := getCurlCommand(envoyName, nsName, envoyPort, modelName, curlTimeout, "/completions", "Write as if you were a critic: San Francisco", true)
+	curlCmd := getCurlCommand(envoyName, testConfig.NsName, envoyPort, modelName, curlTimeout, "/completions", "Write as if you were a critic: San Francisco", true)
 
 	// Run the curl command multiple times to generate some metrics data
 	for i := 0; i < 5; i++ {
-		_, err := testutils.ExecCommandInPod(ctx, cfg, scheme, kubeCli, nsName, "curl", "curl", curlCmd)
+		_, err := testutils.ExecCommandInPod(testConfig, "curl", "curl", curlCmd)
 		gomega.Expect(err).NotTo(gomega.HaveOccurred())
 	}
 
 	// modify the curl command to generate some error metrics
 	curlCmd[len(curlCmd)-1] = "invalid input"
 	for i := 0; i < 5; i++ {
-		_, err := testutils.ExecCommandInPod(ctx, cfg, scheme, kubeCli, nsName, "curl", "curl", curlCmd)
+		_, err := testutils.ExecCommandInPod(testConfig, "curl", "curl", curlCmd)
 		gomega.Expect(err).NotTo(gomega.HaveOccurred())
 	}
 
@@ -282,11 +282,11 @@ func verifyMetrics() {
 	// Get the authorization token for reading metrics
 	token := ""
 	gomega.Eventually(func(g gomega.Gomega) {
-		t, err := getMetricsReaderToken(cli)
+		t, err := getMetricsReaderToken(testConfig.K8sClient)
 		g.Expect(err).NotTo(gomega.HaveOccurred())
 		g.Expect(t).NotTo(gomega.BeEmpty())
 		token = t
-	}, existsTimeout, interval).Should(gomega.Succeed())
+	}, testConfig.ExistsTimeout, testConfig.Interval).Should(gomega.Succeed())
 
 	// Construct the metric scraping curl command using Pod IP
 	metricScrapeCmd := getMetricsScrapeCommand(podIP, token)
@@ -294,7 +294,7 @@ func verifyMetrics() {
 	ginkgo.By("Verifying that all expected metrics are present.")
 	gomega.Eventually(func() error {
 		// Execute the metrics scrape command inside the curl pod
-		resp, err := testutils.ExecCommandInPod(ctx, cfg, scheme, kubeCli, nsName, "curl", "curl", metricScrapeCmd)
+		resp, err := testutils.ExecCommandInPod(testConfig, "curl", "curl", metricScrapeCmd)
 		if err != nil {
 			return err
 		}
@@ -309,12 +309,12 @@ func verifyMetrics() {
 			}
 		}
 		return nil
-	}, readyTimeout, curlInterval).Should(gomega.Succeed())
+	}, testConfig.ReadyTimeout, curlInterval).Should(gomega.Succeed())
 }
 
 func getMetricsReaderToken(k8sClient client.Client) (string, error) {
 	secret := &corev1.Secret{}
-	err := k8sClient.Get(ctx, types.NamespacedName{Namespace: nsName, Name: metricsReaderSecretName}, secret)
+	err := k8sClient.Get(testConfig.Context, types.NamespacedName{Namespace: testConfig.NsName, Name: metricsReaderSecretName}, secret)
 	if err != nil {
 		return "", err
 	}
@@ -327,7 +327,7 @@ func findReadyPod() *corev1.Pod {
 	var readyPod *corev1.Pod
 	gomega.Eventually(func(g gomega.Gomega) {
 		podList := &corev1.PodList{}
-		err := cli.List(ctx, podList, client.InNamespace(nsName), client.MatchingLabels{"app": inferExtName})
+		err := testConfig.K8sClient.List(testConfig.Context, podList, client.InNamespace(testConfig.NsName), client.MatchingLabels{"app": inferExtName})
 		g.Expect(err).NotTo(gomega.HaveOccurred())
 
 		foundReadyPod := false
@@ -346,7 +346,7 @@ func findReadyPod() *corev1.Pod {
 			}
 		}
 		g.Expect(foundReadyPod).To(gomega.BeTrue(), "No ready EPP pod found")
-	}, readyTimeout, interval).Should(gomega.Succeed())
+	}, testConfig.ReadyTimeout, testConfig.Interval).Should(gomega.Succeed())
 	return readyPod
 }
 
diff --git a/test/testdata/inferencepool-e2e.yaml b/test/testdata/inferencepool-e2e.yaml
index b8d7fb6..77d454e 100644
--- a/test/testdata/inferencepool-e2e.yaml
+++ b/test/testdata/inferencepool-e2e.yaml
@@ -37,6 +37,87 @@ metadata:
   name: vllm-llama3-8b-instruct-epp
   namespace: $E2E_NS
 ---
+kind: Role
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: pod-read
+  namespace: $E2E_NS
+rules:
+- apiGroups: [ "inference.networking.x-k8s.io" ]
+  resources: [ "inferenceobjectives", "inferencepools" ]
+  verbs: [ "get", "watch", "list" ]
+- apiGroups: [ "inference.networking.k8s.io" ]
+  resources: [ "inferencepools" ]
+  verbs: [ "get", "watch", "list" ]
+- apiGroups: [ "" ]
+  resources: [ "pods" ]
+  verbs: [ "get", "watch", "list" ]
+---
+kind: RoleBinding
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: pod-read-binding
+  namespace: $E2E_NS
+subjects:
+- kind: ServiceAccount
+  name: vllm-llama3-8b-instruct-epp
+  namespace: $E2E_NS
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: Role
+  name: pod-read
+---
+kind: ClusterRole
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: auth-reviewer
+rules:
+- apiGroups:
+  - authentication.k8s.io
+  resources:
+  - tokenreviews
+  verbs:
+  - create
+- apiGroups:
+  - authorization.k8s.io
+  resources:
+  - subjectaccessreviews
+  verbs:
+  - create
+---
+kind: ClusterRoleBinding
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: auth-reviewer-binding
+subjects:
+- kind: ServiceAccount
+  name: vllm-llama3-8b-instruct-epp
+  namespace: $E2E_NS
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: auth-reviewer
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: plugins-config
+  namespace: $E2E_NS
+data:
+  default-plugins.yaml: |
+    apiVersion: inference.networking.x-k8s.io/v1alpha1
+    kind: EndpointPickerConfig
+    plugins:
+    - type: queue-scorer
+    - type: kv-cache-utilization-scorer
+    - type: prefix-cache-scorer
+    schedulingProfiles:
+    - name: default
+      plugins:
+      - pluginRef: queue-scorer
+      - pluginRef: kv-cache-utilization-scorer
+      - pluginRef: prefix-cache-scorer
+---
 apiVersion: apps/v1
 kind: Deployment
 metadata:
@@ -100,84 +181,3 @@ spec:
       - name: plugins-config-volume
         configMap:
           name: plugins-config
----
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: plugins-config
-  namespace: $E2E_NS
-data:
-  default-plugins.yaml: |
-    apiVersion: inference.networking.x-k8s.io/v1alpha1
-    kind: EndpointPickerConfig
-    plugins:
-    - type: queue-scorer
-    - type: kv-cache-utilization-scorer
-    - type: prefix-cache-scorer
-    schedulingProfiles:
-    - name: default
-      plugins:
-      - pluginRef: queue-scorer
-      - pluginRef: kv-cache-utilization-scorer
-      - pluginRef: prefix-cache-scorer
----
-kind: Role
-apiVersion: rbac.authorization.k8s.io/v1
-metadata:
-  name: pod-read
-  namespace: $E2E_NS
-rules:
-- apiGroups: [ "inference.networking.x-k8s.io" ]
-  resources: [ "inferenceobjectives", "inferencepools" ]
-  verbs: [ "get", "watch", "list" ]
-- apiGroups: [ "inference.networking.k8s.io" ]
-  resources: [ "inferencepools" ]
-  verbs: [ "get", "watch", "list" ]
-- apiGroups: [ "" ]
-  resources: [ "pods" ]
-  verbs: [ "get", "watch", "list" ]
----
-kind: RoleBinding
-apiVersion: rbac.authorization.k8s.io/v1
-metadata:
-  name: pod-read-binding
-  namespace: $E2E_NS
-subjects:
-- kind: ServiceAccount
-  name: vllm-llama3-8b-instruct-epp
-  namespace: $E2E_NS
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: Role
-  name: pod-read
----
-kind: ClusterRole
-apiVersion: rbac.authorization.k8s.io/v1
-metadata:
-  name: auth-reviewer
-rules:
-- apiGroups:
-  - authentication.k8s.io
-  resources:
-  - tokenreviews
-  verbs:
-  - create
-- apiGroups:
-  - authorization.k8s.io
-  resources:
-  - subjectaccessreviews
-  verbs:
-  - create
----
-kind: ClusterRoleBinding
-apiVersion: rbac.authorization.k8s.io/v1
-metadata:
-  name: auth-reviewer-binding
-subjects:
-- kind: ServiceAccount
-  name: vllm-llama3-8b-instruct-epp
-  namespace: $E2E_NS
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: auth-reviewer
diff --git a/test/testdata/inferencepool-leader-election-e2e.yaml b/test/testdata/inferencepool-leader-election-e2e.yaml
index 9ba5dcb..976fbbd 100644
--- a/test/testdata/inferencepool-leader-election-e2e.yaml
+++ b/test/testdata/inferencepool-leader-election-e2e.yaml
@@ -35,91 +35,6 @@ metadata:
   name: vllm-llama3-8b-instruct-epp
   namespace: $E2E_NS
 ---
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: vllm-llama3-8b-instruct-epp
-  namespace: $E2E_NS
-  labels:
-    app: vllm-llama3-8b-instruct-epp
-spec:
-  replicas: 3
-  selector:
-    matchLabels:
-      app: vllm-llama3-8b-instruct-epp
-  template:
-    metadata:
-      labels:
-        app: vllm-llama3-8b-instruct-epp
-    spec:
-      serviceAccountName: vllm-llama3-8b-instruct-epp
-      # Conservatively, this timeout should mirror the longest grace period of the pods within the pool
-      terminationGracePeriodSeconds: 130
-      containers:
-      - name: epp
-        image: $E2E_IMAGE
-        imagePullPolicy: IfNotPresent
-        args:
-        - --pool-name
-        - "vllm-llama3-8b-instruct"
-        - --pool-namespace
-        - "$E2E_NS"
-        - --v
-        - "4"
-        - --zap-encoder
-        - "json"
-        - --grpc-port
-        - "9002"
-        - --grpc-health-port
-        - "9003"
-        - --ha-enable-leader-election
-        - "--config-file"
-        - "/config/default-plugins.yaml"
-        ports:
-        - containerPort: 9002
-        - containerPort: 9003
-        - name: metrics
-          containerPort: 9090
-        livenessProbe:
-          grpc:
-            port: 9003
-            service: liveness
-          initialDelaySeconds: 5
-          periodSeconds: 10
-        readinessProbe:
-          grpc:
-            port: 9003
-            service: readiness
-          initialDelaySeconds: 5
-          periodSeconds: 10
-        volumeMounts:
-        - name: plugins-config-volume
-          mountPath: "/config"
-      volumes:
-      - name: plugins-config-volume
-        configMap:
-          name: plugins-config
----
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: plugins-config
-  namespace: $E2E_NS
-data:
-  default-plugins.yaml: |
-    apiVersion: inference.networking.x-k8s.io/v1alpha1
-    kind: EndpointPickerConfig
-    plugins:
-    - type: queue-scorer
-    - type: kv-cache-utilization-scorer
-    - type: prefix-cache-scorer
-    schedulingProfiles:
-    - name: default
-      plugins:
-      - pluginRef: queue-scorer
-      - pluginRef: kv-cache-utilization-scorer
-      - pluginRef: prefix-cache-scorer
----
 kind: Role
 apiVersion: rbac.authorization.k8s.io/v1
 metadata:
@@ -207,3 +122,88 @@ roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
   name: auth-reviewer
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: plugins-config
+  namespace: $E2E_NS
+data:
+  default-plugins.yaml: |
+    apiVersion: inference.networking.x-k8s.io/v1alpha1
+    kind: EndpointPickerConfig
+    plugins:
+    - type: queue-scorer
+    - type: kv-cache-utilization-scorer
+    - type: prefix-cache-scorer
+    schedulingProfiles:
+    - name: default
+      plugins:
+      - pluginRef: queue-scorer
+      - pluginRef: kv-cache-utilization-scorer
+      - pluginRef: prefix-cache-scorer
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: vllm-llama3-8b-instruct-epp
+  namespace: $E2E_NS
+  labels:
+    app: vllm-llama3-8b-instruct-epp
+spec:
+  replicas: 3
+  selector:
+    matchLabels:
+      app: vllm-llama3-8b-instruct-epp
+  template:
+    metadata:
+      labels:
+        app: vllm-llama3-8b-instruct-epp
+    spec:
+      serviceAccountName: vllm-llama3-8b-instruct-epp
+      # Conservatively, this timeout should mirror the longest grace period of the pods within the pool
+      terminationGracePeriodSeconds: 130
+      containers:
+      - name: epp
+        image: $E2E_IMAGE
+        imagePullPolicy: IfNotPresent
+        args:
+        - --pool-name
+        - "vllm-llama3-8b-instruct"
+        - --pool-namespace
+        - "$E2E_NS"
+        - --v
+        - "4"
+        - --zap-encoder
+        - "json"
+        - --grpc-port
+        - "9002"
+        - --grpc-health-port
+        - "9003"
+        - --ha-enable-leader-election
+        - "--config-file"
+        - "/config/default-plugins.yaml"
+        ports:
+        - containerPort: 9002
+        - containerPort: 9003
+        - name: metrics
+          containerPort: 9090
+        livenessProbe:
+          grpc:
+            port: 9003
+            service: liveness
+          initialDelaySeconds: 5
+          periodSeconds: 10
+        readinessProbe:
+          grpc:
+            port: 9003
+            service: readiness
+          initialDelaySeconds: 5
+          periodSeconds: 10
+        volumeMounts:
+        - name: plugins-config-volume
+          mountPath: "/config"
+      volumes:
+      - name: plugins-config-volume
+        configMap:
+          name: plugins-config
diff --git a/test/utils/utils.go b/test/utils/utils.go
index 8cc19b7..b65834c 100644
--- a/test/utils/utils.go
+++ b/test/utils/utils.go
@@ -20,6 +20,8 @@ import (
 	"bytes"
 	"context"
 	"fmt"
+	"os"
+	"strings"
 	"time"
 
 	"github.com/onsi/ginkgo/v2"
@@ -30,25 +32,84 @@ import (
 	apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
 	apierrors "k8s.io/apimachinery/pkg/api/errors"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/apimachinery/pkg/runtime/serializer"
 	"k8s.io/apimachinery/pkg/types"
 	"k8s.io/client-go/kubernetes"
 	"k8s.io/client-go/rest"
 	"k8s.io/client-go/tools/remotecommand"
 	"sigs.k8s.io/controller-runtime/pkg/client"
+	"sigs.k8s.io/controller-runtime/pkg/client/config"
 
 	v1 "sigs.k8s.io/gateway-api-inference-extension/api/v1"
 	"sigs.k8s.io/gateway-api-inference-extension/apix/v1alpha2"
+	"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/env"
 )
 
+const (
+	// defaultExistsTimeout is the default timeout for a resource to exist in the api server.
+	defaultExistsTimeout = 30 * time.Second
+	// defaultReadyTimeout is the default timeout for a resource to report a ready state.
+	defaultReadyTimeout = 3 * time.Minute
+	// defaultModelReadyTimeout is the default timeout for the model server deployment to report a ready state.
+	defaultModelReadyTimeout = 10 * time.Minute
+	// defaultInterval is the default interval to check if a resource exists or ready conditions.
+	defaultInterval = time.Millisecond * 250
+)
+
+// TestConfig groups various fields together for use in the test helpers
+type TestConfig struct {
+	Context           context.Context
+	KubeCli           *kubernetes.Clientset
+	K8sClient         client.Client
+	RestConfig        *rest.Config
+	NsName            string
+	Scheme            *runtime.Scheme
+	ExistsTimeout     time.Duration
+	ReadyTimeout      time.Duration
+	ModelReadyTimeout time.Duration
+	Interval          time.Duration
+}
+
+// NewTestConfig creates a new TestConfig instance
+func NewTestConfig(nsName string) *TestConfig {
+	cfg := config.GetConfigOrDie()
+	gomega.Expect(cfg).NotTo(gomega.BeNil())
+
+	kubeCli, err := kubernetes.NewForConfig(cfg)
+	gomega.Expect(err).NotTo(gomega.HaveOccurred())
+	gomega.Expect(kubeCli).NotTo(gomega.BeNil())
+
+	return &TestConfig{
+		Context:           context.Background(),
+		KubeCli:           kubeCli,
+		NsName:            nsName,
+		RestConfig:        cfg,
+		Scheme:            runtime.NewScheme(),
+		ExistsTimeout:     env.GetEnvDuration("EXISTS_TIMEOUT", defaultExistsTimeout, ginkgo.GinkgoLogr),
+		ReadyTimeout:      env.GetEnvDuration("READY_TIMEOUT", defaultReadyTimeout, ginkgo.GinkgoLogr),
+		ModelReadyTimeout: env.GetEnvDuration("MODEL_READY_TIMEOUT", defaultModelReadyTimeout, ginkgo.GinkgoLogr),
+		Interval:          defaultInterval,
+	}
+}
+
+// CreateCli creates the Kubernetes client used in the tests, invoked after the scheme has been setup.
+func (testConfig *TestConfig) CreateCli() {
+	var err error
+	testConfig.K8sClient, err = client.New(testConfig.RestConfig, client.Options{Scheme: testConfig.Scheme})
+	gomega.Expect(err).NotTo(gomega.HaveOccurred())
+	gomega.Expect(testConfig.K8sClient).NotTo(gomega.BeNil())
+}
+
 // DeleteClusterResources deletes all cluster-scoped objects the tests typically create.
-func DeleteClusterResources(ctx context.Context, cli client.Client) error {
+func DeleteClusterResources(testConfig *TestConfig) error {
 	binding := &rbacv1.ClusterRoleBinding{
 		ObjectMeta: metav1.ObjectMeta{
 			Name: "auth-reviewer-binding",
 		},
 	}
-	err := cli.Delete(ctx, binding, client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err := testConfig.K8sClient.Delete(testConfig.Context, binding, client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
@@ -57,7 +118,7 @@ func DeleteClusterResources(ctx context.Context, cli client.Client) error {
 			Name: "auth-reviewer",
 		},
 	}
-	err = cli.Delete(ctx, role, client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err = testConfig.K8sClient.Delete(testConfig.Context, role, client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
@@ -66,7 +127,7 @@ func DeleteClusterResources(ctx context.Context, cli client.Client) error {
 			Name: "inference-gateway-sa-metrics-reader-role-binding",
 		},
 	}
-	err = cli.Delete(ctx, metricsReaderBinding, client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err = testConfig.K8sClient.Delete(testConfig.Context, metricsReaderBinding, client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
@@ -75,7 +136,7 @@ func DeleteClusterResources(ctx context.Context, cli client.Client) error {
 			Name: "inference-gateway-metrics-reader",
 		},
 	}
-	err = cli.Delete(ctx, metricsReaderRole, client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err = testConfig.K8sClient.Delete(testConfig.Context, metricsReaderRole, client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
@@ -84,7 +145,7 @@ func DeleteClusterResources(ctx context.Context, cli client.Client) error {
 			Name: "inferenceobjectives.inference.networking.x-k8s.io",
 		},
 	}
-	err = cli.Delete(ctx, model, client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err = testConfig.K8sClient.Delete(testConfig.Context, model, client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
@@ -93,7 +154,7 @@ func DeleteClusterResources(ctx context.Context, cli client.Client) error {
 			Name: "inferencepools.inference.networking.x-k8s.io",
 		},
 	}
-	err = cli.Delete(ctx, pool, client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err = testConfig.K8sClient.Delete(testConfig.Context, pool, client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
@@ -102,49 +163,49 @@ func DeleteClusterResources(ctx context.Context, cli client.Client) error {
 
 // DeleteNamespacedResources deletes all namespace-scoped objects the tests typically create.
 // The given namespace will also be deleted if it's not "default".
-func DeleteNamespacedResources(ctx context.Context, cli client.Client, ns string) error {
-	if ns == "" {
+func DeleteNamespacedResources(testConfig *TestConfig) error {
+	if testConfig.NsName == "" {
 		return nil
 	}
-	err := cli.DeleteAllOf(ctx, &appsv1.Deployment{}, client.InNamespace(ns), client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err := testConfig.K8sClient.DeleteAllOf(testConfig.Context, &appsv1.Deployment{}, client.InNamespace(testConfig.NsName), client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
-	err = cli.DeleteAllOf(ctx, &corev1.Service{}, client.InNamespace(ns), client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err = testConfig.K8sClient.DeleteAllOf(testConfig.Context, &corev1.Service{}, client.InNamespace(testConfig.NsName), client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
-	err = cli.DeleteAllOf(ctx, &corev1.Pod{}, client.InNamespace(ns), client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err = testConfig.K8sClient.DeleteAllOf(testConfig.Context, &corev1.Pod{}, client.InNamespace(testConfig.NsName), client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
-	err = cli.DeleteAllOf(ctx, &corev1.ConfigMap{}, client.InNamespace(ns), client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err = testConfig.K8sClient.DeleteAllOf(testConfig.Context, &corev1.ConfigMap{}, client.InNamespace(testConfig.NsName), client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
-	err = cli.DeleteAllOf(ctx, &corev1.Secret{}, client.InNamespace(ns), client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err = testConfig.K8sClient.DeleteAllOf(testConfig.Context, &corev1.Secret{}, client.InNamespace(testConfig.NsName), client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
-	err = cli.DeleteAllOf(ctx, &corev1.ServiceAccount{}, client.InNamespace(ns), client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err = testConfig.K8sClient.DeleteAllOf(testConfig.Context, &corev1.ServiceAccount{}, client.InNamespace(testConfig.NsName), client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
-	err = cli.DeleteAllOf(ctx, &v1.InferencePool{}, client.InNamespace(ns), client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err = testConfig.K8sClient.DeleteAllOf(testConfig.Context, &v1.InferencePool{}, client.InNamespace(testConfig.NsName), client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
-	err = cli.DeleteAllOf(ctx, &v1alpha2.InferenceObjective{}, client.InNamespace(ns), client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err = testConfig.K8sClient.DeleteAllOf(testConfig.Context, &v1alpha2.InferenceObjective{}, client.InNamespace(testConfig.NsName), client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
-	if ns != "default" {
+	if testConfig.NsName != "default" {
 		ns := &corev1.Namespace{
 			ObjectMeta: metav1.ObjectMeta{
-				Name: ns,
+				Name: testConfig.NsName,
 			},
 		}
-		if err := cli.Delete(ctx, ns, client.PropagationPolicy(metav1.DeletePropagationForeground)); err != nil && !apierrors.IsNotFound(err) {
+		if err := testConfig.K8sClient.Delete(testConfig.Context, ns, client.PropagationPolicy(metav1.DeletePropagationForeground)); err != nil && !apierrors.IsNotFound(err) {
 			return err
 		}
 	}
@@ -152,11 +213,11 @@ func DeleteNamespacedResources(ctx context.Context, cli client.Client, ns string
 }
 
 // DeleteInferenceObjectiveResources deletes all InferenceObjective objects in the given namespace.
-func DeleteInferenceObjectiveResources(ctx context.Context, cli client.Client, ns string) error {
-	if ns == "" {
+func DeleteInferenceObjectiveResources(testConfig *TestConfig) error {
+	if testConfig.NsName == "" {
 		return nil
 	}
-	err := cli.DeleteAllOf(ctx, &v1alpha2.InferenceObjective{}, client.InNamespace(ns), client.PropagationPolicy(metav1.DeletePropagationForeground))
+	err := testConfig.K8sClient.DeleteAllOf(testConfig.Context, &v1alpha2.InferenceObjective{}, client.InNamespace(testConfig.NsName), client.PropagationPolicy(metav1.DeletePropagationForeground))
 	if err != nil && !apierrors.IsNotFound(err) {
 		return err
 	}
@@ -164,7 +225,7 @@ func DeleteInferenceObjectiveResources(ctx context.Context, cli client.Client, n
 }
 
 // PodReady checks if the given Pod reports the "Ready" status condition before the given timeout.
-func PodReady(ctx context.Context, cli client.Client, pod *corev1.Pod, timeout, interval time.Duration) {
+func PodReady(testConfig *TestConfig, pod *corev1.Pod) {
 	ginkgo.By(fmt.Sprintf("Checking pod %s/%s status is: %s", pod.Namespace, pod.Name, corev1.PodReady))
 	conditions := []corev1.PodCondition{
 		{
@@ -172,13 +233,14 @@ func PodReady(ctx context.Context, cli client.Client, pod *corev1.Pod, timeout,
 			Status: corev1.ConditionTrue,
 		},
 	}
-	gomega.Eventually(checkPodStatus, timeout, interval).WithArguments(ctx, cli, pod, conditions).Should(gomega.BeTrue())
+	gomega.Eventually(checkPodStatus, testConfig.ExistsTimeout, testConfig.Interval).
+		WithArguments(testConfig, pod, conditions).Should(gomega.BeTrue())
 }
 
 // checkPodStatus checks if the given Pod status matches the expected conditions.
-func checkPodStatus(ctx context.Context, cli client.Client, pod *corev1.Pod, conditions []corev1.PodCondition) (bool, error) {
+func checkPodStatus(testConfig *TestConfig, pod *corev1.Pod, conditions []corev1.PodCondition) (bool, error) {
 	var fetchedPod corev1.Pod
-	if err := cli.Get(ctx, types.NamespacedName{Namespace: pod.Namespace, Name: pod.Name}, &fetchedPod); err != nil {
+	if err := testConfig.K8sClient.Get(testConfig.Context, types.NamespacedName{Namespace: pod.Namespace, Name: pod.Name}, &fetchedPod); err != nil {
 		return false, err
 	}
 	found := 0
@@ -193,7 +255,7 @@ func checkPodStatus(ctx context.Context, cli client.Client, pod *corev1.Pod, con
 }
 
 // DeploymentAvailable checks if the given Deployment reports the "Available" status condition before the given timeout.
-func DeploymentAvailable(ctx context.Context, cli client.Client, deploy *appsv1.Deployment, timeout, interval time.Duration) {
+func DeploymentAvailable(testConfig *TestConfig, deploy *appsv1.Deployment) {
 	ginkgo.By(fmt.Sprintf("Checking if deployment %s/%s status is: %s", deploy.Namespace, deploy.Name, appsv1.DeploymentAvailable))
 	conditions := []appsv1.DeploymentCondition{
 		{
@@ -201,19 +263,21 @@ func DeploymentAvailable(ctx context.Context, cli client.Client, deploy *appsv1.
 			Status: corev1.ConditionTrue,
 		},
 	}
-	gomega.Eventually(checkDeploymentStatus, timeout, interval).WithArguments(ctx, cli, deploy, conditions).Should(gomega.BeTrue())
+	gomega.Eventually(checkDeploymentStatus, testConfig.ModelReadyTimeout, testConfig.Interval).
+		WithArguments(testConfig.Context, testConfig.K8sClient, deploy, conditions).
+		Should(gomega.BeTrue())
 }
 
 // DeploymentReadyReplicas checks if the given Deployment has at least `count` ready replicas before the given timeout.
-func DeploymentReadyReplicas(ctx context.Context, cli client.Client, deploy *appsv1.Deployment, count int, timeout, interval time.Duration) {
+func DeploymentReadyReplicas(testConfig *TestConfig, deploy *appsv1.Deployment, count int) {
 	ginkgo.By(fmt.Sprintf("Checking if deployment %s/%s has at least %d ready replica(s)", deploy.Namespace, deploy.Name, count))
 	gomega.Eventually(func(g gomega.Gomega) {
 		var fetchedDeploy appsv1.Deployment
-		err := cli.Get(ctx, types.NamespacedName{Namespace: deploy.Namespace, Name: deploy.Name}, &fetchedDeploy)
+		err := testConfig.K8sClient.Get(testConfig.Context, types.NamespacedName{Namespace: deploy.Namespace, Name: deploy.Name}, &fetchedDeploy)
 		g.Expect(err).NotTo(gomega.HaveOccurred())
 		g.Expect(fetchedDeploy.Status.ReadyReplicas).To(gomega.BeNumerically(">=", count),
 			fmt.Sprintf("Deployment only has %d ready replicas, want at least %d", fetchedDeploy.Status.ReadyReplicas, count))
-	}, timeout, interval).Should(gomega.Succeed())
+	}, testConfig.ModelReadyTimeout, testConfig.Interval).Should(gomega.Succeed())
 }
 
 // checkDeploymentStatus checks if the given Deployment status matches the expected conditions.
@@ -234,7 +298,7 @@ func checkDeploymentStatus(ctx context.Context, cli client.Client, deploy *appsv
 }
 
 // CRDEstablished checks if the given CRD reports the "Established" status condition before the given timeout.
-func CRDEstablished(ctx context.Context, cli client.Client, crd *apiextv1.CustomResourceDefinition, timeout, interval time.Duration) {
+func CRDEstablished(testConfig *TestConfig, crd *apiextv1.CustomResourceDefinition) {
 	ginkgo.By(fmt.Sprintf("Checking CRD %s status is: %s", crd.Name, apiextv1.Established))
 	conditions := []apiextv1.CustomResourceDefinitionCondition{
 		{
@@ -242,7 +306,9 @@ func CRDEstablished(ctx context.Context, cli client.Client, crd *apiextv1.Custom
 			Status: apiextv1.ConditionTrue,
 		},
 	}
-	gomega.Eventually(checkCrdStatus, timeout, interval).WithArguments(ctx, cli, crd, conditions).Should(gomega.BeTrue())
+	gomega.Eventually(checkCrdStatus, testConfig.ReadyTimeout, testConfig.Interval).
+		WithArguments(testConfig.Context, testConfig.K8sClient, crd, conditions).
+		Should(gomega.BeTrue())
 }
 
 // checkCrdStatus checks if the given CRD status matches the expected conditions.
@@ -268,22 +334,14 @@ func checkCrdStatus(
 }
 
 // ExecCommandInPod runs a command in a given container of a given Pod, returning combined stdout+stderr.
-func ExecCommandInPod(
-	ctx context.Context,
-	cfg *rest.Config,
-	scheme *runtime.Scheme,
-	kubeClient *kubernetes.Clientset,
-	podNamespace, podName, containerName string,
-	cmd []string,
-) (string, error) {
-
-	parameterCodec := runtime.NewParameterCodec(scheme)
+func ExecCommandInPod(testConfig *TestConfig, podName, containerName string, cmd []string) (string, error) {
+	parameterCodec := runtime.NewParameterCodec(testConfig.Scheme)
 
-	req := kubeClient.CoreV1().RESTClient().
+	req := testConfig.KubeCli.CoreV1().RESTClient().
 		Post().
 		Resource("pods").
 		Name(podName).
-		Namespace(podNamespace).
+		Namespace(testConfig.NsName).
 		SubResource("exec").
 		VersionedParams(&corev1.PodExecOptions{
 			Container: containerName,
@@ -294,13 +352,13 @@ func ExecCommandInPod(
 			TTY:       false,
 		}, parameterCodec)
 
-	exec, err := remotecommand.NewSPDYExecutor(cfg, "POST", req.URL())
+	exec, err := remotecommand.NewSPDYExecutor(testConfig.RestConfig, "POST", req.URL())
 	if err != nil {
 		return "", fmt.Errorf("could not initialize executor: %w", err)
 	}
 
 	var stdout, stderr bytes.Buffer
-	execErr := exec.StreamWithContext(ctx, remotecommand.StreamOptions{
+	execErr := exec.StreamWithContext(testConfig.Context, remotecommand.StreamOptions{
 		Stdout: &stdout,
 		Stderr: &stderr,
 	})
@@ -316,8 +374,135 @@ func ExecCommandInPod(
 
 // EventuallyExists checks if a Kubernetes resource exists and returns nil if successful.
 // It takes a function `getResource` which retrieves the resource and returns an error if it doesn't exist.
-func EventuallyExists(ctx context.Context, getResource func() error, timeout, interval time.Duration) {
+func EventuallyExists(testConfig *TestConfig, getResource func() error) {
 	gomega.Eventually(func() error {
 		return getResource()
-	}, timeout, interval).Should(gomega.Succeed())
+	}, testConfig.ExistsTimeout, testConfig.Interval).Should(gomega.Succeed())
+}
+
+// CreateObjsFromYaml creates K8S objects from yaml and waits for them to be instantiated
+func CreateObjsFromYaml(testConfig *TestConfig, docs []string) []string {
+	objNames := []string{}
+
+	// For each doc, decode and create
+	decoder := serializer.NewCodecFactory(testConfig.Scheme).UniversalDeserializer()
+	for _, doc := range docs {
+		trimmed := strings.TrimSpace(doc)
+		if trimmed == "" {
+			continue
+		}
+		// Decode into a runtime.Object
+		obj, gvk, decodeErr := decoder.Decode([]byte(trimmed), nil, nil)
+		gomega.Expect(decodeErr).NotTo(gomega.HaveOccurred(),
+			"Failed to decode YAML document to a Kubernetes object")
+
+		ginkgo.By(fmt.Sprintf("Decoded GVK: %s", gvk))
+
+		unstrObj, ok := obj.(*unstructured.Unstructured)
+		if !ok {
+			// Fallback if it's a typed object
+			unstrObj = &unstructured.Unstructured{}
+			// Convert typed to unstructured
+			err := testConfig.Scheme.Convert(obj, unstrObj, nil)
+			gomega.Expect(err).NotTo(gomega.HaveOccurred())
+		}
+
+		unstrObj.SetNamespace(testConfig.NsName)
+		kind := unstrObj.GetKind()
+		name := unstrObj.GetName()
+		objNames = append(objNames, kind+"/"+name)
+
+		// Create the object
+		err := testConfig.K8sClient.Create(testConfig.Context, unstrObj, &client.CreateOptions{})
+		gomega.Expect(err).NotTo(gomega.HaveOccurred(),
+			"Failed to create object from YAML")
+
+		// Wait for the created object to exist.
+		clientObj := getClientObject(kind)
+		EventuallyExists(testConfig, func() error {
+			return testConfig.K8sClient.Get(testConfig.Context,
+				types.NamespacedName{Namespace: testConfig.NsName, Name: name}, clientObj)
+		})
+
+		switch kind {
+		case "CustomResourceDefinition":
+			// Wait for the CRD to be established.
+			CRDEstablished(testConfig, clientObj.(*apiextv1.CustomResourceDefinition))
+		case "Deployment":
+			// Wait for the deployment to be available.
+			DeploymentAvailable(testConfig, clientObj.(*appsv1.Deployment))
+		case "Pod":
+			// Wait for the pod to be ready.
+			PodReady(testConfig, clientObj.(*corev1.Pod))
+		}
+	}
+	return objNames
+}
+
+// DeleteObjects deletes  set of Kubernetes objects in the form of kind/name
+func DeleteObjects(testConfig *TestConfig, kindAndNames []string) {
+	for _, kindAndName := range kindAndNames {
+		split := strings.Split(kindAndName, "/")
+		clientObj := getClientObject(split[0])
+		err := testConfig.K8sClient.Get(testConfig.Context,
+			types.NamespacedName{Namespace: testConfig.NsName, Name: split[1]}, clientObj)
+		gomega.Expect(err).NotTo(gomega.HaveOccurred())
+		err = testConfig.K8sClient.Delete(testConfig.Context, clientObj)
+		gomega.Expect(err).NotTo(gomega.HaveOccurred())
+		gomega.Eventually(func() bool {
+			clientObj := getClientObject(split[0])
+			err := testConfig.K8sClient.Get(testConfig.Context,
+				types.NamespacedName{Namespace: testConfig.NsName, Name: split[1]}, clientObj)
+			return apierrors.IsNotFound(err)
+		}, testConfig.ExistsTimeout, testConfig.Interval).Should(gomega.BeTrue())
+	}
+}
+
+// applyYAMLFile reads a file containing YAML (possibly multiple docs)
+// and applies each object to the cluster.
+func ApplyYAMLFile(testConfig *TestConfig, filePath string) {
+	// Create the resources from the manifest file
+	CreateObjsFromYaml(testConfig, ReadYaml(filePath))
+}
+
+// ReadYaml is a helper function to read in K8S YAML files and split by the --- separator
+func ReadYaml(filePath string) []string {
+	ginkgo.By("Reading YAML file: " + filePath)
+	yamlBytes, err := os.ReadFile(filePath)
+	gomega.Expect(err).NotTo(gomega.HaveOccurred())
+
+	// Split multiple docs, if needed
+	return strings.Split(string(yamlBytes), "\n---")
+}
+
+func getClientObject(kind string) client.Object {
+	switch strings.ToLower(kind) {
+	case "clusterrole":
+		return &rbacv1.ClusterRole{}
+	case "clusterrolebinding":
+		return &rbacv1.ClusterRoleBinding{}
+	case "configmap":
+		return &corev1.ConfigMap{}
+	case "customresourcedefinition":
+		return &apiextv1.CustomResourceDefinition{}
+	case "deployment":
+		return &appsv1.Deployment{}
+	case "inferencepool":
+		return &v1.InferencePool{}
+	case "pod":
+		return &corev1.Pod{}
+	case "role":
+		return &rbacv1.Role{}
+	case "rolebinding":
+		return &rbacv1.RoleBinding{}
+	case "secret":
+		return &corev1.Secret{}
+	case "service":
+		return &corev1.Service{}
+	case "serviceaccount":
+		return &corev1.ServiceAccount{}
+	default:
+		ginkgo.Fail("unsupported K8S kind "+kind, 1)
+		return nil
+	}
 }