--- apiVersion: v1 items: - apiVersion: v1 data: cnibincopy.sh: |- #!/bin/bash set -e function log() { echo "$(date --iso-8601=seconds) [cnibincopy] ${1}" } DESTINATION_DIRECTORY=/host/opt/cni/bin/ # Perform validation of usage if [ -z "$RHEL8_SOURCE_DIRECTORY" ] || [ -z "$RHEL9_SOURCE_DIRECTORY" ] || [ -z "$DEFAULT_SOURCE_DIRECTORY" ]; then log "FATAL ERROR: You must set env variables: RHEL8_SOURCE_DIRECTORY, RHEL9_SOURCE_DIRECTORY, DEFAULT_SOURCE_DIRECTORY" exit 1 fi if [ ! -d "$DESTINATION_DIRECTORY" ]; then log "FATAL ERROR: Destination directory ($DESTINATION_DIRECTORY) does not exist" exit 1 fi # Collect host OS information . /host/etc/os-release rhelmajor= # detect which version we're using in order to copy the proper binaries case "${ID}" in rhcos|scos) RHEL_VERSION=$(echo "${CPE_NAME}" | cut -f 5 -d :) rhelmajor=$(echo $RHEL_VERSION | sed -E 's/([0-9]+)\.{1}[0-9]+(\.[0-9]+)?/\1/') ;; rhel|centos) rhelmajor=$(echo "${VERSION_ID}" | cut -f 1 -d .) ;; fedora) if [ "${VARIANT_ID}" == "coreos" ]; then rhelmajor=8 else log "FATAL ERROR: Unsupported Fedora variant=${VARIANT_ID}" exit 1 fi ;; *) log "FATAL ERROR: Unsupported OS ID=${ID}"; exit 1 ;; esac # Set which directory we'll copy from, detect if it exists sourcedir= founddir=false case "${rhelmajor}" in 8) if [ -d "${RHEL8_SOURCE_DIRECTORY}" ]; then sourcedir=${RHEL8_SOURCE_DIRECTORY} founddir=true fi ;; 9) if [ -d "${RHEL9_SOURCE_DIRECTORY}" ]; then sourcedir=${RHEL9_SOURCE_DIRECTORY} founddir=true fi ;; *) log "ERROR: RHEL Major Version Unsupported, rhelmajor=${rhelmajor}" ;; esac # When it doesn't exist, fall back to the original directory. if [ "$founddir" == false ]; then log "Source directory unavailable for OS version: ${rhelmajor}" sourcedir=$DEFAULT_SOURCE_DIRECTORY fi # Use a subdirectory called "upgrade" so we can atomically move fully copied files. # We now use --remove-destination after running into an issue with -f not working over symlinks UPGRADE_DIRECTORY=${DESTINATION_DIRECTORY}upgrade_$(uuidgen) rm -Rf $UPGRADE_DIRECTORY mkdir -p $UPGRADE_DIRECTORY cp -r --remove-destination ${sourcedir}* $UPGRADE_DIRECTORY if [ $? -eq 0 ]; then log "Successfully copied files in ${sourcedir} to $UPGRADE_DIRECTORY" else log "Failed to copy files in ${sourcedir} to $UPGRADE_DIRECTORY" rm -Rf $UPGRADE_DIRECTORY exit 1 fi mv -f $UPGRADE_DIRECTORY/* ${DESTINATION_DIRECTORY}/ if [ $? -eq 0 ]; then log "Successfully moved files in $UPGRADE_DIRECTORY to ${DESTINATION_DIRECTORY}" else log "Failed to move files in $UPGRADE_DIRECTORY to ${DESTINATION_DIRECTORY}" rm -Rf $UPGRADE_DIRECTORY exit 1 fi rm -Rf $UPGRADE_DIRECTORY kind: ConfigMap metadata: annotations: kubernetes.io/description: | This is a script used to copy CNI binaries based on host OS release.openshift.io/version: 4.20.19 creationTimestamp: "2026-04-22T19:19:42Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:cnibincopy.sh: {} f:metadata: f:annotations: f:kubernetes.io/description: {} f:release.openshift.io/version: {} f:ownerReferences: k:{"uid":"b82121e0-de43-4428-a8b2-093ee9bcf24c"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-04-22T19:19:42Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: b82121e0-de43-4428-a8b2-093ee9bcf24c resourceVersion: "3224" uid: 06c9794a-efe4-4e5b-abfc-be0197e2b27c - apiVersion: v1 data: allowlist.conf: |- ^net.ipv4.conf.IFNAME.accept_redirects$ ^net.ipv4.conf.IFNAME.accept_source_route$ ^net.ipv4.conf.IFNAME.arp_accept$ ^net.ipv4.conf.IFNAME.arp_notify$ ^net.ipv4.conf.IFNAME.disable_policy$ ^net.ipv4.conf.IFNAME.secure_redirects$ ^net.ipv4.conf.IFNAME.send_redirects$ ^net.ipv6.conf.IFNAME.accept_ra$ ^net.ipv6.conf.IFNAME.accept_redirects$ ^net.ipv6.conf.IFNAME.accept_source_route$ ^net.ipv6.conf.IFNAME.arp_accept$ ^net.ipv6.conf.IFNAME.arp_notify$ ^net.ipv6.neigh.IFNAME.base_reachable_time_ms$ ^net.ipv6.neigh.IFNAME.retrans_time_ms$ kind: ConfigMap metadata: annotations: kubernetes.io/description: | Sysctl allowlist for nodes. release.openshift.io/version: 4.20.19 creationTimestamp: "2026-04-22T19:19:41Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: .: {} f:allowlist.conf: {} f:metadata: f:annotations: .: {} f:kubernetes.io/description: {} f:release.openshift.io/version: {} manager: network-operator operation: Update time: "2026-04-22T19:19:41Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "3208" uid: 35015174-95d1-4225-98fc-9ff007cb4cb7 - apiVersion: v1 data: allowlist.conf: |- ^net.ipv4.conf.IFNAME.accept_redirects$ ^net.ipv4.conf.IFNAME.accept_source_route$ ^net.ipv4.conf.IFNAME.arp_accept$ ^net.ipv4.conf.IFNAME.arp_notify$ ^net.ipv4.conf.IFNAME.disable_policy$ ^net.ipv4.conf.IFNAME.secure_redirects$ ^net.ipv4.conf.IFNAME.send_redirects$ ^net.ipv6.conf.IFNAME.accept_ra$ ^net.ipv6.conf.IFNAME.accept_redirects$ ^net.ipv6.conf.IFNAME.accept_source_route$ ^net.ipv6.conf.IFNAME.arp_accept$ ^net.ipv6.conf.IFNAME.arp_notify$ ^net.ipv6.neigh.IFNAME.base_reachable_time_ms$ ^net.ipv6.neigh.IFNAME.retrans_time_ms$ kind: ConfigMap metadata: annotations: kubernetes.io/description: | Sysctl allowlist for nodes. release.openshift.io/version: 4.20.19 creationTimestamp: "2026-04-22T19:19:41Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:allowlist.conf: {} f:metadata: f:annotations: f:kubernetes.io/description: {} f:release.openshift.io/version: {} f:ownerReferences: k:{"uid":"b82121e0-de43-4428-a8b2-093ee9bcf24c"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-04-22T19:19:41Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: b82121e0-de43-4428-a8b2-093ee9bcf24c resourceVersion: "3202" uid: c7c6c4e4-ece3-488c-abbd-73570bb0b4be - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIFpSBXOpoWKkwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDQyMjE5MTcwN1oX DTM2MDQxOTE5MTcwN1owJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5RFjR2KmVna4 YUPo3UOsoZxEEa9tVvbiYVo8b+qg06XVQ3poRx0ikXJ2VGOickO6h9sYSXYdt1Qc WuKUd9+e2elmsUa/paTeZmxTqdlBeCJCLhfJFQM5y1hFXo2bqoxYSmyOasBB6PDy 2p44Yp7zLsQ2DBHpG65oDsty4KMYiTUzabJaFrhkhyDXlNhmY2Ox+6SzL2W3SgNF y4p1IpmqLwQIIGjNB2k/4TaVUhl/zVqg27GHYtzhA9/OzK00qw9Y6GQWBxR8Mpjb KcUpOqH2Oc6yKW23/VnDv75dvqdKTPP+4dQ7qWeN1fW7lA/PefxQXLDrB4jjGW9T XNxt2KX/1QIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRATzYmLOmTpppdl9/xPBhhvt5kWOTIMOMMcwuM3e9kq3VdekVL FX2inDW1g8khoSCUsspguFtnnkBtvIcgABHRjjANBgkqhkiG9w0BAQsFAAOCAQEA n+m7qPI8ojCFaZjPDpQSJPDbtt7zFRHKofOLh8VOGo0GDvIoV4cVT1NagbX3q8hk uufS86aFK1m+eCNiDogcPr4ZLN7DC88Xbpdgd3zW0buGZFnj98VuHscKfbvY5Kqe RBn/Kc65pecUGeii0wrbR+H3sDLX+5IahNr+9ViGb7cSkp3IWOE8x35T5fgoOnKZ RIdLJ8IVPd0j+25gFm7aBdoJkS4AcFc2nFDQvciffYdwLr/8usTPGa0GK5xuAXVw HbeTS5QEcgqTs146yak8HRr9oYVMfAMCgbIj2tCqWHj8YkLvPpsNUmW94MCFDGLC DntPMcg1DCqLLVEJkzldTg== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIcjg77Cswm+8wDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDQyMjE5MTc0MVoX DTI3MDQyMjE5MTc0MVowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALpwwhWTr+DxWKv3VOClQYuYiwe2r/WCxZA94N7bD+coX/aR6g6HwnxXyyLKYbDu ltmYy2vjhWP0voAUoSnRvQXMfkDnqnSsG7SOTTnLQmIAYGvzFxHSXjItF+Bgu/jV XPg2F6iq4eohdirXNwfhDR8FETYMXUi19JMvZxJE/4QM41x70ovrstTt2s4E4P76 t2AmUjc2U8QwRerI8sXs5TaLdzh1eqoZv66YMBybIw15Jz9oCa16rN1BPeDTVCS+ 1Cej8PDns/BJLZDAYQgAznTOadqV08YZUfEgToRak8OI2wTCe6S9HiqxzEh4QA4t Yh3b8npzf6CO+wdKUdAld88CAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAXahcvxMVH4SCfkrt/gg0KQa1le1yrk/sPfZZ5Ge8mTLdmlrAGqQHOfNP 6xNguo05+Gg6TlaKVj14vv6UPLUZbjBLBgNVHSMERDBCgEBPNiYs6ZOmml2X3/E8 GGG+3mRY5Mgw4wxzC4zd72SrdV16RUsVfaKcNbWDySGhIJSyymC4W2eeQG28hyAA EdGOMEsGA1UdEQREMEKCQCouYXBwcy4wNWMxMTJiZS0xOTc5LTQ4ZjAtYWY4NC04 YjE3NDJiNzE2YjQucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAJbYvGOz0id9xoi98AFyq1++peFMtrMkihNRS2rzikp+Zl1witvrUGx8ewnG HhuTZhUGC98Bdp13JhQkM3kKZSbdnx2tatWvBJ6GLRjg86bMbfui0ikzVmbWRoqf z8VFICgpTMBHV5Mvk3A012ZcWN+qHtbT1jucvwguroG2wONC+K3/oOHj5wphQ0Ur Lmqgbr4hfuZcdpGaLE+d2s7RnvSMgpSo1IH7siz05FcIrBjUSoJKejCgYLkTFjyO IHpgiBC+2rO21XTafEkz9yaFYOOWKPFgDloNtdk4NStCBJkBwDJoQCBYy6WLirzI og0KIuM+GkPCWXiIdYlqXM5LZYE= -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: kubernetes.io/description: Contains a CA bundle that can be used to verify the kube-apiserver when using internal endpoints such as the internal service IP or kubernetes.default.svc. No other usage is guaranteed across distributions of Kubernetes clusters. creationTimestamp: "2026-04-22T19:19:46Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: .: {} f:ca.crt: {} f:metadata: f:annotations: .: {} f:kubernetes.io/description: {} manager: kube-controller-manager operation: Update time: "2026-04-22T19:19:46Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "3676" uid: 55620d54-1b0f-4fac-bae3-3c180fdb574c - apiVersion: v1 data: daemon-config.json: | { "cniVersion": "0.3.1", "chrootDir": "/hostroot", "logToStderr": true, "logLevel": "verbose", "binDir": "/var/lib/cni/bin", "perNodeCertificate": { "enabled": true, "bootstrapKubeconfig": "/var/lib/kubelet/kubeconfig", "certDir": "/etc/cni/multus/certs", "certDuration": "24h" }, "cniConfigDir": "/host/etc/cni/net.d", "multusConfigFile": "auto", "multusAutoconfigDir": "/host/run/multus/cni/net.d", "namespaceIsolation": true, "globalNamespaces": "default,openshift-multus,openshift-sriov-network-operator,openshift-cnv", "readinessindicatorfile": "/host/run/multus/cni/net.d/10-ovn-kubernetes.conf", "daemonSocketDir": "/run/multus/socket", "socketDir": "/host/run/multus/socket", "auxiliaryCNIChainName": "vendor-cni-chain" } kind: ConfigMap metadata: creationTimestamp: "2026-04-22T19:19:42Z" labels: app: multus tier: node managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:daemon-config.json: {} f:metadata: f:labels: f:app: {} f:tier: {} f:ownerReferences: k:{"uid":"b82121e0-de43-4428-a8b2-093ee9bcf24c"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-04-22T19:19:42Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: b82121e0-de43-4428-a8b2-093ee9bcf24c resourceVersion: "3270" uid: 5ff6199f-a601-4c75-a2e6-7318e0fdc44b - apiVersion: v1 data: cabundle.crt: |- -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIRTe4QfWr90IwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc3Njg4NTkyODAe Fw0yNjA0MjIxOTI1MjhaFw0yODA2MjAxOTI1MjlaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3NzY4ODU5MjgwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuTPLllyu4HZfaK5M/e0GZaDcGxBj3BlhM q5ddxRcksjw5alt/VZZg++W+BexqguFop2rnTOIjbA2PFBCU28UX/VnPEBQZuM0G VcytJXw76pKhCcUBKNSV6/3sE1ClLQx89N0ZKBO90VDJK9QNr7CnnlOh/bHHM7aR 3alAzCXiE2GE14zhQhapL9gf2HlyxNq7oAK6VWW2e3hRE8vTVG9nsyH3RzYzZs8Q VZxdIIfjuBR+OAjzCW89l64MIjVuOMkPamoUXQFpR+v9+Bmx4KwmxYe45DzdfY49 FtnhbKOcIgj2kP3xswDKxHGkMI5xsYamuVq88KzsI4yalAmkArpVAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRe116t 2bhcWKKH9N37RSjOKpeP8jAfBgNVHSMEGDAWgBRe116t2bhcWKKH9N37RSjOKpeP 8jANBgkqhkiG9w0BAQsFAAOCAQEAXvIc6M/nyZ8+4TP9Io22cOkLY/Yj1RvXJd1y GlQygrlUxwoDLS/TbNSCwUg9JUUODh1IsNVjHu1ctuUcY0bkdCBpeZlm1q8wec1V 6sKeoO8c5DxTvmSb9G6m94uVts0XAVN4jXa9iQ3c8wPQIPwgB4ik5U5KLfOX3K98 3lyX6hCEXPaCT2CjbYp8HZENzNGCCYwTza8MdgEOszUFVyCMGI48L5tosOkcd97K MqmckTBjsHeWIld13Dp8Ae3LZPouOneBzUcXJ8dJroPnReO4U0hFGXs/AxLZVh3S 7Fv0nsbJ+ThqroTXjLID9n0dlaN0O3D3T7NiUzEmjhPfWqKT6Q== -----END CERTIFICATE----- kind: ConfigMap metadata: creationTimestamp: "2026-04-22T19:33:17Z" labels: opendatahub.io/managed: "true" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: .: {} f:cabundle.crt: {} f:metadata: f:labels: .: {} f:opendatahub.io/managed: {} manager: manager operation: Update time: "2026-04-22T19:33:17Z" name: odh-kserve-custom-ca-bundle namespace: openshift-multus resourceVersion: "13582" uid: 7bd5405f-7579-4cd5-a84c-77f9b992f62e - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIRTe4QfWr90IwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc3Njg4NTkyODAe Fw0yNjA0MjIxOTI1MjhaFw0yODA2MjAxOTI1MjlaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3NzY4ODU5MjgwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuTPLllyu4HZfaK5M/e0GZaDcGxBj3BlhM q5ddxRcksjw5alt/VZZg++W+BexqguFop2rnTOIjbA2PFBCU28UX/VnPEBQZuM0G VcytJXw76pKhCcUBKNSV6/3sE1ClLQx89N0ZKBO90VDJK9QNr7CnnlOh/bHHM7aR 3alAzCXiE2GE14zhQhapL9gf2HlyxNq7oAK6VWW2e3hRE8vTVG9nsyH3RzYzZs8Q VZxdIIfjuBR+OAjzCW89l64MIjVuOMkPamoUXQFpR+v9+Bmx4KwmxYe45DzdfY49 FtnhbKOcIgj2kP3xswDKxHGkMI5xsYamuVq88KzsI4yalAmkArpVAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRe116t 2bhcWKKH9N37RSjOKpeP8jAfBgNVHSMEGDAWgBRe116t2bhcWKKH9N37RSjOKpeP 8jANBgkqhkiG9w0BAQsFAAOCAQEAXvIc6M/nyZ8+4TP9Io22cOkLY/Yj1RvXJd1y GlQygrlUxwoDLS/TbNSCwUg9JUUODh1IsNVjHu1ctuUcY0bkdCBpeZlm1q8wec1V 6sKeoO8c5DxTvmSb9G6m94uVts0XAVN4jXa9iQ3c8wPQIPwgB4ik5U5KLfOX3K98 3lyX6hCEXPaCT2CjbYp8HZENzNGCCYwTza8MdgEOszUFVyCMGI48L5tosOkcd97K MqmckTBjsHeWIld13Dp8Ae3LZPouOneBzUcXJ8dJroPnReO4U0hFGXs/AxLZVh3S 7Fv0nsbJ+ThqroTXjLID9n0dlaN0O3D3T7NiUzEmjhPfWqKT6Q== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-04-22T19:19:45Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: {} f:metadata: f:annotations: .: {} f:service.beta.openshift.io/inject-cabundle: {} manager: kube-controller-manager operation: Update time: "2026-04-22T19:19:45Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-04-22T19:25:42Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8250" uid: ebc32827-3f57-4b8a-9bc4-1a46e1eb8b59 - apiVersion: v1 data: whereabouts.conf: | { "datastore": "kubernetes", "kubernetes": { "kubeconfig": "/etc/kubernetes/cni/net.d/whereabouts.d/whereabouts.kubeconfig" }, "reconciler_cron_expression": "30 4 * * *", "log_level": "verbose", "configuration_path": "/etc/kubernetes/cni/net.d/whereabouts.d" } kind: ConfigMap metadata: creationTimestamp: "2026-04-22T19:19:42Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"b82121e0-de43-4428-a8b2-093ee9bcf24c"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-04-22T19:19:42Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: b82121e0-de43-4428-a8b2-093ee9bcf24c resourceVersion: "3251" uid: 89107e0d-0aac-43d2-90ed-174bb28f1e9b kind: ConfigMapList metadata: resourceVersion: "21621"